API para gerenciar receitas e despesas pessoais. É possível categorizar transações, marcar despesas como essenciais ou não essenciais e visualizar resumos financeiros.
src/
├── domain/ # Entidades e regras de negócio
│ ├── entities/ # Entidades de domínio (Transaction)
│ └── repositories/ # Interfaces de repositórios
├── application/ # Casos de uso e lógica de negócio
│ └── use_cases/ # Serviços da aplicação
├── infra/ # Camada de infraestrutura
│ ├── models.py # Modelos SQLAlchemy
│ ├── db.py # Configuração do banco de dados
│ └── repositories/ # Implementações de repositórios
├── api/ # Camada de API
│ ├── controllers/ # Controladores e validação
│ ├── routes/ # Rotas HTTP
│ └── docs/ # Documentação Swagger/OpenAPI
└── app.py # Configuração e inicialização da aplicação
- Python 3.12+
- uv package manager
-
Clonar o repositório
git clone git@github.com:pedmrs/budget-tracker-api.git cd budget-tracker-api -
Instalar dependências
uv sync
-
Rodar a aplicação
uv run python src/app.py
-
Acessar a API
- API disponível em:
http://localhost:5000
- API disponível em:
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Informações da API e endpoints disponíveis |
GET |
/transactions/ |
Listar todas as transações (com paginação) |
POST |
/transactions/ |
Criar uma nova transação |
GET |
/transactions/{id} |
Buscar uma transação específica |
PUT |
/transactions/{id} |
Atualizar uma transação |
DELETE |
/transactions/{id} |
Excluir uma transação |
GET |
/transactions/summary |
Obter resumo financeiro |
A API conta com um Swagger UI para documentação e teste de endpoints. Acesse http://localhost:5000/apidocs para visualizar.
A Transaction é a única entidade da API. Ela representa uma transação financeira, que pode ser uma receita ou uma despesa. O tipo de transação é determinado pelo campo transaction_type, que pode ser income (receita) ou expense (despesa). O campo essential_expense indica se a transação é essencial, ou seja, se é uma despesa que não pode ser omitida. O campo date é a data da transação, em Unix timestamp. Os campos created_at e updated_at são timestamps de criação e atualização do registro, respectivamente.
| Field | Type | Required | Description |
|---|---|---|---|
id |
Integer | Auto | ID único |
description |
String | Sim | Descrição da transação |
amount |
Decimal | Sim | Valor da transação |
category |
String | Sim | Categoria da transação |
transaction_type |
Enum | Sim | income ou expense |
essential_expense |
Boolean | Sim | Indica se é uma despesa essencial |
date |
Integer | Sim | Data da transação (Unix timestamp) |
created_at |
Integer | Auto | Timestamp de criação do registro |
updated_at |
Integer | Auto | Timestamp da última atualização |
O projeto utiliza um banco de dados SQLite, que é armazenado no arquivo budget_tracker.db. Para resetar o banco de dados, basta deletar o arquivo budget_tracker.db.
rm instance/budget_tracker.db