Painel de controle financeiro pessoal em Next.js 16, conectado a uma API REST NestJS.
- Node.js 20+
- API Nest rodando em
http://localhost:3000
cd front-financas
cp .env.example .env.local
npm installVariáveis disponíveis (ver .env.example):
| Variável | Descrição |
|---|---|
NEXT_PUBLIC_API_URL |
URL da API no SSR (padrão: http://localhost:3000) |
API_PROXY_URL |
Destino do rewrite /api/* no dev (padrão: http://127.0.0.1:3000) |
AUTH_COOKIE_NAME |
Cookie de sessão customizado (opcional) |
npm run devAbra http://localhost:3002. O front usa a porta 3002; a API deve estar na 3000.
| Script | Descrição |
|---|---|
npm run dev |
Servidor de desenvolvimento (porta 3002) |
npm run build |
Build de produção |
npm run start |
Servidor de produção (porta 3002) |
npm run lint |
Biome check |
npm run format |
Biome format |
npm run test |
Vitest |
O projeto segue arquitetura orientada a domínio em src/features.
Cada domínio possui:
components/— UI do domíniohooks/— estado e composição no clienteservices/— chamadas HTTP viaapi-clienttypes.ts— contratos TypeScriptindex.ts— barrel exports
Domínios:
home— landing públicaauth— login, registro e sessãodashboard— resumo e gráficostransactions— CRUD de receitas/despesascategories— categorias de transaçãogoals— metas financeiras (API/budgets)export— exportação CSV/PDFbackup— snapshot e restoreuser— perfil do usuário
Rotas autenticadas compartilham o layout AppShell via route group (app).
O plano de evolução está em ROADMAP.md.
Auth:
POST /auth/loginPOST /auth/refreshPOST /auth/logout
Usuários:
POST /usersGET /usersGET /users/meGET /users/:idPATCH /users/:idDELETE /users/:id
Transações (protegidos):
GET /transactions?page=&limit=POST /transactionsGET /transactions/:idPUT /transactions/:idDELETE /transactions/:id
Categorias:
POST /categoriesGET /categoriesGET /categories/:idPATCH /categories/:idDELETE /categories/:id
Orçamentos / metas (protegidos):
POST /budgetsGET /budgetsGET /budgets/status?month=&year=GET /budgets/:idPATCH /budgets/:idDELETE /budgets/:id
Relatórios (protegidos):
GET /reports/summaryGET /reports/by-categoryGET /reports/monthly
Exportação (protegidos):
GET /export/csvGET /export/pdf
Backup (protegidos):
GET /backupPOST /backup/restore