Skip to content

LucasAlexandree/ExpenseControl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema de Controle de Gastos Residenciais

Sistema completo para controle de gastos residenciais, desenvolvido com .NET no backend e React + TypeScript no frontend.

📋 Funcionalidades

Cadastro de Pessoas

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

Cadastro de Categorias

  • ✅ Criação e listagem de categorias
  • ✅ Campos: ID (auto-gerado), Descrição (máx 400 caracteres), Finalidade (Despesa/Receita/Ambas)

Cadastro de Transações

  • ✅ 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

Consulta de Totais por Pessoa

  • ✅ Lista todas as pessoas com totais de receitas, despesas e saldo
  • ✅ Exibe totais gerais no final

Consulta de Totais por Categoria (Opcional)

  • ✅ Lista todas as categorias com totais de receitas, despesas e saldo
  • ✅ Exibe totais gerais no final

🛠️ Tecnologias

Backend

  • .NET 10.0 - Framework principal
  • ASP.NET Core Web API - API REST
  • Entity Framework Core - ORM
  • SQLite - Banco de dados (persistência local)

Frontend

  • React 18 - Biblioteca UI
  • TypeScript - Tipagem estática
  • React Router - Roteamento

🚀 Como Executar

Pré-requisitos

  • .NET SDK 10.0 ou superior
  • Visual Studio 2022 ou superior (recomendado)

Backend

Opção 1: Visual Studio (Recomendado)

Método 1: Abrir a Solução

  1. Abra o Visual Studio 2022
  2. Selecione File > Open > Project/Solution
  3. Navegue até a pasta raiz do projeto (C:\Projetos) e abra o arquivo ExpenseControl.slnx ou ExpenseControl.sln
  4. 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
  1. Selecione o perfil desejado (geralmente "https")
  2. Pressione F5 ou clique em Run (▶️) para iniciar a aplicação
  3. 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.

Opção 2: Terminal/Command Line

  1. Navegue até a pasta do backend:
cd backend
  1. Restaure as dependências (já deve estar feito):
dotnet restore
  1. Execute a aplicação:
dotnet run

O banco de dados SQLite será criado automaticamente no arquivo expensecontrol.db na pasta do backend na primeira execução.

Frontend

  1. Navegue até a pasta do frontend:
cd frontend
  1. Instale as dependências (já deve estar feito):
npm install
  1. Execute a aplicação:
npm run dev

O 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.

Acessando o Swagger (Documentação da API)

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.

📁 Estrutura do Projeto

.
├── 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

🔧 Configuração

Backend

  • 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

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

📝 Documentação do Código

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

✅ Regras de Negócio Implementadas

  1. Deleção em Cascata: Ao deletar uma pessoa, todas as suas transações são removidas automaticamente
  2. Validação de Idade: Menores de 18 anos só podem ter transações do tipo despesa
  3. 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"
  4. Validação de Valor: Valores devem ser positivos
  5. Validação de Campos: Todos os campos obrigatórios são validados

🧪 Testes

Para testar o sistema:

  1. Inicie o backend
  2. Inicie o frontend
  3. Acesse http://localhost:5173
  4. Crie algumas pessoas, categorias e transações
  5. Verifique os totais por pessoa e por categoria

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors