Sistema completo para controle de gastos residenciais, desenvolvido com .NET no backend e React + TypeScript no frontend.
- ✅ Criação, edição, deleção e listagem de pessoas
- ✅ Ao deletar uma pessoa, todas as suas transações são automaticamente removidas
- ✅ Campos: ID (auto-gerado), Nome (máx 200 caracteres), Idade (inteiro ≥ 0)
- ✅ Criação e listagem de categorias
- ✅ Campos: ID (auto-gerado), Descrição (máx 400 caracteres), Finalidade (Despesa/Receita/Ambas)
- ✅ Criação e listagem de transações
- ✅ Validação: Menores de 18 anos só podem ter despesas
- ✅ Validação: Categoria deve ser compatível com o tipo de transação
- ✅ Campos: ID (auto-gerado), Descrição (máx 400 caracteres), Valor (positivo), Tipo (Despesa/Receita), Categoria, Pessoa
- ✅ Lista todas as pessoas com totais de receitas, despesas e saldo
- ✅ Exibe totais gerais no final
- ✅ Lista todas as categorias com totais de receitas, despesas e saldo
- ✅ Exibe totais gerais no final
- .NET 10.0 - Framework principal
- ASP.NET Core Web API - API REST
- Entity Framework Core - ORM
- SQLite - Banco de dados (persistência local)
- React 18 - Biblioteca UI
- TypeScript - Tipagem estática
- React Router - Roteamento
- .NET SDK 10.0 ou superior
- Visual Studio 2022 ou superior (recomendado)
Método 1: Abrir a Solução
- Abra o Visual Studio 2022
- Selecione File > Open > Project/Solution
- Navegue até a pasta raiz do projeto (
C:\Projetos) e abra o arquivoExpenseControl.slnxouExpenseControl.sln - Aguarde o Visual Studio restaurar os pacotes NuGet (isso acontece automaticamente)
Executando a Aplicação: 5. No Visual Studio, você verá dois perfis de execução no dropdown:
- http: Executa apenas em HTTP na porta 5247
- https: Executa em HTTPS (porta 7169) e HTTP (porta 5247) - Recomendado
- Selecione o perfil desejado (geralmente "https")
- Pressione F5 ou clique em Run (
▶️ ) para iniciar a aplicação - O navegador abrirá automaticamente com o Swagger (documentação da API)
A API estará disponível em:
- HTTP:
http://localhost:5247 - HTTPS:
https://localhost:7169
Nota: Se você usar HTTPS, pode ser necessário aceitar o certificado SSL auto-assinado no navegador.
- Navegue até a pasta do backend:
cd backend- Restaure as dependências (já deve estar feito):
dotnet restore- Execute a aplicação:
dotnet runO banco de dados SQLite será criado automaticamente no arquivo expensecontrol.db na pasta do backend na primeira execução.
- Navegue até a pasta do frontend:
cd frontend- Instale as dependências (já deve estar feito):
npm install- Execute a aplicação:
npm run devO frontend estará disponível em http://localhost:5173 (ou outra porta indicada no terminal).
Importante: Certifique-se de que o backend está rodando antes de usar o frontend.
Quando o backend estiver rodando, você pode acessar a documentação Swagger em:
- HTTP:
http://localhost:5247/swagger - HTTPS:
https://localhost:7169/swagger
O Swagger permite testar todos os endpoints da API diretamente pelo navegador.
.
├── backend/ # API .NET
│ ├── Controllers/ # Controllers da API
│ ├── Data/ # DbContext e configuração do banco
│ ├── DTOs/ # Data Transfer Objects
│ ├── Models/ # Entidades do domínio
│ ├── Services/ # Lógica de negócio
│ └── Program.cs # Configuração da aplicação
│
├── frontend/ # Aplicação React
│ ├── src/
│ │ ├── components/ # Componentes React
│ │ ├── pages/ # Páginas da aplicação
│ │ ├── services/ # Serviços de API
│ │ └── types/ # Tipos TypeScript
│ └── package.json
│
└── README.md
- O banco de dados SQLite é criado automaticamente na primeira execução
- A conexão está configurada em
Program.cs - CORS está habilitado para permitir requisições do frontend
- A URL da API está configurada em
src/services/api.ts - Por padrão, aponta para
http://localhost:5247/api - Ajuste conforme necessário
O código está amplamente documentado com comentários explicativos em:
- Backend: Comentários XML e comentários inline explicando a lógica de negócio
- Frontend: Comentários JSDoc e comentários inline explicando a funcionalidade dos componentes
- Deleção em Cascata: Ao deletar uma pessoa, todas as suas transações são removidas automaticamente
- Validação de Idade: Menores de 18 anos só podem ter transações do tipo despesa
- Validação de Categoria: Categorias devem ser compatíveis com o tipo de transação:
- Despesa: só pode usar categorias com finalidade "Despesa" ou "Ambas"
- Receita: só pode usar categorias com finalidade "Receita" ou "Ambas"
- Validação de Valor: Valores devem ser positivos
- Validação de Campos: Todos os campos obrigatórios são validados
Para testar o sistema:
- Inicie o backend
- Inicie o frontend
- Acesse
http://localhost:5173 - Crie algumas pessoas, categorias e transações
- Verifique os totais por pessoa e por categoria