API RESTful para criar, listar, atualizar e excluir metas de investimento, construída com Fastify + TypeScript e PostgreSQL, organizada em uma estrutura MVC simples.
- Node.js 20, Fastify 5, Zod, PostgreSQL 16
- Swagger UI em
/docs - TypeScript + tsx para desenvolvimento
- Copie o env:
cp .env.example .enve ajusteDATABASE_URL,HOST,PORT. - Instale deps:
npm ci. - Prepare o banco:
psql "$env:DATABASE_URL" -f db/init.sql(no Windows PowerShell) ou equivalente no seu shell. - Desenvolvimento:
npm run dev. - Produção:
npm run build && npm start.
- Subir tudo:
docker-compose up --build. - Servicos: API em
http://localhost:3000, Postgres emlocalhost:5432(user: postgres / senha: postgres / db: yooper). O scriptdb/init.sqle executado automaticamente.
GET /- health check.GET /docs- Swagger UI.POST /investment-goals- cria meta.- Body exemplo:
{ "name": "Reserva viagem", "months": ["JAN", "FEV", "MAR"], "value": 1500 }
- Body exemplo:
GET /investment-goals- lista metas (filtrosname,month).GET /investment-goals/:id- busca por id.PUT /investment-goals/:id- atualiza tudo (recalculamonthlyValue).PATCH /investment-goals/:id- atualiza parcial (recalcula se necessario).DELETE /investment-goals/:id- remove meta.
src/server.ts: boot do Fastify, CORS, Swagger, health check.src/routes/investmentGoals.routes.ts: definição das rotas e ligação com controllers.src/controllers/investmentGoalsController.ts: regras de cada endpoint.src/models/investmentGoalModel.ts: acesso ao Postgres e mapeamento das metas.src/schemas/investmentGoalSchemas.ts: schemas Zod para validações e respostas.src/db.ts: conexão com Postgres viaDATABASE_URL.db/init.sql: DDL e triggers deinvestment_goals.
npm run dev: desenvolvimento com recarga (tsx).npm run build: compilação TypeScript.npm start: executa build compilado.
ISC