Type-Safe DynamoDB
Full TypeScript support with inferred types from your schema. Catch errors at compile time, not runtime. Every query, mutation, and scan is fully typed.
Single Table Design
Built for DynamoDB best practices. Define multiple entities in one table with type-safe access patterns. Support for GSIs, composite keys, and complex relationships.
Fluent Query Builder
Intuitive, chainable API for queries and scans. Filter, project, paginate, and more with full type inference. No more raw DynamoDB expressions.
Schema Migrations
Evolve your data safely with versioned migrations. Up/down support, dry-run mode, distributed locking, and full CLI tooling included.
Minimal Boilerplate
Define your schema once, get typed CRUD operations automatically. No decorators, no classes, just plain TypeScript objects.
Production Ready
Built on top of AWS SDK v3. Supports transactions, batch operations, conditional writes, and all DynamoDB features you need.
Simple, Intuitive API
import { Table } from '@ftschopp/dynatable-core';
const table = new Table({
name: 'MyApp',
client: dynamoDBClient,
schema: {
models: {
User: {
primaryKey: { PK: 'USER#${username}', SK: 'PROFILE' },
attributes: { username: 'string', email: 'string', age: 'number' },
},
},
},
});
// Fully typed operations
const user = await table.entities.User.get({ username: 'alice' }).execute();
const users = await table.entities.User.scan()
.filter((a, op) => op.gt(a.age, 18))
.execute();
Packages
@ftschopp/dynatable-core
Type-safe DynamoDB client with fluent query builder. Define your schema, get fully typed CRUD operations.
@ftschopp/dynatable-migrations
Schema migrations for DynamoDB. Version your data changes with up/down migrations, CLI tooling, and dry-run mode.