Este template fornece uma base sólida para projetos TypeScript que utilizam PostgreSQL com Knex, e geram tipagens automáticas com Zod a partir do schema do banco de dados. Ideal para projetos que exigem consistência entre banco de dados e validação de dados em tempo de execução.
Interface de linha de comando do Knex, adaptada para TypeScript com o loader tsm
.
"knex": "node --no-warnings -r ts-node/register --loader tsm node_modules/.bin/knex --knexfile ./src/db/knexfile.ts"
Usos comuns:
bun run knex migrate:make create_users
bun run knex migrate:latest
Este comando usa:
ts-node/register
→ Suporte a TypeScript.--loader tsm
→ Suporte a ESModules em.ts
.knexfile.ts
→ Arquivo de configuração localizado em./src/db/knexfile.ts
.
Gera automaticamente schemas Zod e tipagens TypeScript com base na estrutura real das tabelas do banco de dados.
"generate:schema": "bun ./scripts/generate-schema-types.ts && biome format ./src/db/schemas --write && biome format ./src/@types --write"
Este comando faz:
-
Executa
scripts/generate-schema-types.ts
com Bun:- Lê as tabelas do banco via introspecção.
- Gera arquivos
Zod
com tipagem forte (TUser
,TUserInsert
,TUserUpdate
, etc). - Cria enum
TableName
e types de extensão paraknex.d.ts
.
-
Roda o Biome para formatar os arquivos gerados:
src/db/schemas
src/@types
satox/
├── scripts/
│ └── generate-schema-types.ts # Script principal de geração
├── src/
│ ├── db/
│ │ ├── knexfile.ts
│ │ ├── schemas/ # Schemas e tipos gerados automaticamente
│ └── @types/
│ └── knex.d.ts # Tipagem Knex integrada
├── package.json
├── tsconfig.json
└── .env # Contém DB_CONNECTION_URI
- 🔁 Sincronização automática entre DB e tipos
- ✅ Validação com Zod diretamente nos dados
- 🧠 Autocomplete completo com tipagem do Knex
- 🧼 Código sempre formatado com Biome
- Banco de dados PostgreSQL
DB_CONNECTION_URI
no.env
- Dependências instaladas com
bun install
- Crie uma nova migration com
bun run knex migrate:make
- Rode a migration com
bun run knex migrate:latest
- Gere os tipos com
bun run generate:schema
- Use os tipos e schemas diretamente no seu app
Este template é ideal para aplicações escaláveis que exigem:
- Consistência entre DB e aplicação
- Validação runtime e estática
- Tipagem automática sem esforço manual