Exemplo do mesmo CRUD implementado em Node.js com Fastify, TypeScript, Swagger, persistencia em memoria, testes automatizados e arquitetura Ports and Adapters.
- Node.js 24
- TypeScript 5
- Fastify 5
- Zod 4
- Swagger UI
- Vitest 4
- Windows com PowerShell
- Node.js 24+
- npm 11+
Para validar a instalacao:
node --version
npm --versionEstrutura do projeto:
src/
|-- adapters
| |-- inbound/http
| `-- outbound/repositories
|-- application
| `-- services
|-- domain
| `-- ports
`-- main.ts
tests/
|-- integration/http
`-- unit/application
Responsabilidades:
domain: entidade, erros e contrato do repositorioapplication: comando de entrada e servico de negocioadapters/outbound: persistencia em memoriaadapters/inbound/http: schemas Zod e rotas HTTPmain.ts: bootstrap do servidor
id: intnome: stringdtNascimento: datestatus: booltelefones: string[]
Na pasta node:
npm installnpm run dev- API:
http://127.0.0.1:8000 - Swagger UI:
http://127.0.0.1:8000/docs
npm run build
npm startnpm testResultado esperado no estado atual do projeto:
- testes unitarios do servico
- testes de integracao HTTP
- 9 testes passando
npm run check-typesGET /health/liveGET /health/readyPOST /usuariosGET /usuariosGET /usuarios/{usuarioId}PUT /usuarios/{usuarioId}DELETE /usuarios/{usuarioId}
{
"id": 1,
"nome": "Carlos",
"dtNascimento": "1992-03-14",
"status": true,
"telefones": [
"11911112222",
"1122223333"
]
}O workflow fica em .github/workflows/ci.yml e executa:
- instalacao com
npm ci - checagem de tipos
- build
- testes
- A persistencia e totalmente em memoria.
- Ao reiniciar a aplicacao, os dados sao perdidos.
- A API usa validacao via Zod e gera Swagger a partir dos schemas.
npm install
npm run dev
npm run check-types
npm run build
npm test