API RESTful para gerenciar despesas pessoais de forma simples e segura, utilizando NestJS, Prisma, JWT para autenticação e Swagger para documentação.
- Autenticação via JWT (JSON Web Token)
- Gerenciamento de despesas (criar, listar, buscar por ID, atualizar, excluir)
- Filtros para listar despesas por mês, ano e categoria
- Documentação interativa com Swagger
- Proteção das rotas com guardas JWT
- Configuração de variáveis sensíveis via
.env
- Clone este repositório:
git clone https://github.com/AndreSMarques/Personal-Expenses-API
cd Persinal-Expenses-API- Instale as dependências:
npm install- Configure as variáveis de ambiente no arquivo
.env:
PORT=3000
DATABASE_URL=postgresql://user:password@localhost:5432/expensesdb
JWT_SECRET=sua_chave_secreta- Rode as migrations do Prisma para criar o schema no banco:
npx prisma migrate dev- Inicie a aplicação:
npm run start-
POST /auth/token
Gera um token JWT válido (fake-user-id para testes). -
GET /expenses
Lista todas as despesas (rota protegida por JWT).Suporta filtros opcionais via query parameters:
month(números)year(exemplo: 2025)category(exemplo: alimentação)
Exemplo:
GET /expenses?month=5&year=2025&category=alimentação -
GET /expenses/:id
Busca despesa por ID (rota protegida). -
POST /expenses
Cria nova despesa (rota protegida). -
PUT /expenses/:id
Atualiza despesa (rota protegida). -
DELETE /expenses/:id
Remove despesa (rota protegida).
Para acessar rotas protegidas, envie o token JWT no header Authorization no formato:
Authorization: Bearer <seu_token_jwt>
Exemplo com curl:
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5..." http://localhost:3000/expensesA documentação interativa está disponível em:
http://localhost:3000/api
Lá você pode testar os endpoints, aplicar filtros e fazer a autenticação via interface gráfica.
Contribuições são bem-vindas! Para contribuir, faça um fork do projeto, crie uma branch com sua feature e envie um pull request.