Skip to content

AndreSMarques/Personal-Expenses-API

Repository files navigation

Personal Expenses API

API RESTful para gerenciar despesas pessoais de forma simples e segura, utilizando NestJS, Prisma, JWT para autenticação e Swagger para documentação.


Funcionalidades

  • 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

Tecnologias utilizadas


Instalação

  1. Clone este repositório:
git clone https://github.com/AndreSMarques/Personal-Expenses-API
cd Persinal-Expenses-API
  1. Instale as dependências:
npm install
  1. Configure as variáveis de ambiente no arquivo .env:
PORT=3000
DATABASE_URL=postgresql://user:password@localhost:5432/expensesdb
JWT_SECRET=sua_chave_secreta
  1. Rode as migrations do Prisma para criar o schema no banco:
npx prisma migrate dev
  1. Inicie a aplicação:
npm run start

Endpoints principais

  • 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).


Autenticação

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/expenses

Documentação Swagger

A 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ção

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors