API REST para gerenciamento de finanças pessoais, construída com C# / .NET 8 e Minimal APIs.
| Camada | Tecnologias |
|---|---|
| API | ASP.NET Core 8 · Minimal APIs · JWT |
| Banco de Dados | SQLite · Entity Framework Core 8 |
| Segurança | BCrypt · JWT Bearer |
| Documentação | Swagger / OpenAPI |
src/
├── ControleFinanceiro.Domain/ # Entidades, enums, interfaces de repositório
├── ControleFinanceiro.Application/ # DTOs, interfaces de serviço, lógica de negócio
├── ControleFinanceiro.Infrastructure/ # EF Core, repositórios, JWT service
└── ControleFinanceiro.API/ # Minimal API endpoints, Program.cs
# Clonar / acessar o projeto
cd src/ControleFinanceiro.API
# Restaurar dependências e executar
dotnet runA API estará disponível em http://localhost:5000 e o Swagger em http://localhost:5000 (página inicial).
| Método | Rota | Descrição |
|---|---|---|
| POST | /api/auth/register |
Cadastrar novo usuário |
| POST | /api/auth/login |
Login e obtenção do token JWT |
| Método | Rota | Descrição |
|---|---|---|
| GET | /api/categories |
Listar todas as categorias |
| GET | /api/categories/{id} |
Buscar categoria por ID |
| POST | /api/categories |
Criar categoria personalizada |
| PUT | /api/categories/{id} |
Atualizar categoria |
| DELETE | /api/categories/{id} |
Excluir categoria |
| Método | Rota | Descrição |
|---|---|---|
| GET | /api/transactions |
Listar transações (com filtros e paginação) |
| GET | /api/transactions/{id} |
Buscar transação por ID |
| POST | /api/transactions |
Criar transação |
| PUT | /api/transactions/{id} |
Atualizar transação |
| DELETE | /api/transactions/{id} |
Excluir transação |
Query params para GET /api/transactions:
categoryId— filtrar por categoriatype—IncomeouExpensestartDate/endDate— período (formato ISO 8601)search— busca em descrição/notaspage/pageSize— paginação
| Método | Rota | Descrição |
|---|---|---|
| GET | /api/dashboard |
Resumo financeiro + transações recentes |
| GET | /api/dashboard/reports/monthly/{year}/{month} |
Relatório mensal detalhado |
Edite src/ControleFinanceiro.API/appsettings.json:
{
"Jwt": {
"Key": "sua-chave-secreta-com-pelo-menos-32-caracteres!",
"Issuer": "ControleFinanceiroAPI",
"Audience": "ControleFinanceiroClients",
"ExpirationDays": "7"
}
}Importante: em produção, use variáveis de ambiente ou User Secrets para a
Jwt:Key.
O banco é populado automaticamente com 12 categorias padrão (4 de receita + 8 de despesa):
Receita: Salário · Freelance · Investimentos · Outros
Despesa: Alimentação · Transporte · Moradia · Saúde · Educação · Lazer · Vestuário · Outros
# 1. Registrar usuário
curl -X POST http://localhost:5000/api/auth/register \
-H "Content-Type: application/json" \
-d '{"name":"João","email":"joao@email.com","password":"senha123"}'
# 2. Criar transação (usar token retornado acima)
curl -X POST http://localhost:5000/api/transactions \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "Salário de Janeiro",
"amount": 5000.00,
"date": "2026-01-05T00:00:00Z",
"type": "Income",
"categoryId": "10000000-0000-0000-0000-000000000001",
"isRecurring": true
}'
# 3. Ver dashboard
curl http://localhost:5000/api/dashboard \
-H "Authorization: Bearer SEU_TOKEN"