Skip to content

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ExpensAI - Gerenciador Financeiro Pessoal

Projeto desenvolvido para estudo e composição de portfólio em desenvolvimento de software backend e mobile. O objetivo do ExpensAI é auxiliar no controle financeiro pessoal através do upload e leitura de extratos bancários (formatos CSV, PDF e OFX), realizando a categorização das despesas por meio de um microserviço em Python.

A aplicação conecta um backend em .NET 8 (C#), um serviço de processamento em Python (FastAPI) com Pandas, e um aplicativo mobile em Flutter.


Tecnologias Utilizadas

Backend (.NET 8)

  • C# com ASP.NET Core Minimal APIs e Controllers
  • Entity Framework Core com driver PostgreSQL (Npgsql)
  • Autenticação via JWT com suporte a cookies HttpOnly e Secure
  • Middlewares customizados para injeção de cabeçalhos de segurança (CSP, CORS, HSTS)

Serviço de Processamento (Python)

  • FastAPI para recepção e validação dos arquivos
  • Pandas para parse e categorização dos dados das transações
  • Tratamento de exceções e registro de logs isolados sem exposição de dados sensíveis

Mobile (Flutter)

  • Flutter (Dart) com gerenciamento de estado via BLoC
  • Cliente HTTP Dio configurado com CookieManager para trafegar a sessão de forma segura

Infraestrutura

  • Docker e Docker Compose para orquestração local dos serviços e do banco PostgreSQL

Como Executar o Projeto

Pré-requisitos

  • Docker e Docker Compose instalados na máquina
  • (Opcional) .NET 8 SDK, Python 3.11 e Flutter SDK para execução local sem containers

Passo a Passo

  1. Clone o repositório:

    git clone https://github.com/MatheusLeo26/smartflow-finance.git
    cd smartflow-finance
  2. Inicie os containers com o Docker Compose:

    docker compose up -d
  3. Os serviços estarão disponíveis em:

    • Backend .NET: http://localhost:5000 (Swagger acessível em desenvolvimento em http://localhost:5000/swagger)
    • Serviço Python: http://localhost:8000 (Documentação em http://localhost:8000/docs)
    • Banco PostgreSQL: localhost:5432

Arquitetura do Sistema

[ Aplicativo Mobile (Flutter) ]
              |
              v (HTTP / REST)
[ Backend Principal (.NET 8) ] ---> [ Banco PostgreSQL ]
              |
              v (POST /process)
[ Serviço de Análise (Python FastAPI) ]
  1. O aplicativo faz a requisição autenticada de upload de extrato para o backend .NET.
  2. O .NET valida o arquivo (formato, extensão e MimeType) e o encaminha para o serviço em Python.
  3. O serviço Python faz a leitura dos dados, aplica o mapeamento de categorias e retorna as transações estruturadas.
  4. O backend .NET registra as informações no PostgreSQL e devolve o resultado formatado para o aplicativo.

Práticas de Segurança Aplicadas

Durante o desenvolvimento do projeto, busquei seguir recomendações essenciais de segurança de software:

  • Validação de Entrada: O upload de arquivos aceita apenas extensões especificadas (.csv, .pdf, .ofx) com verificação de MimeType e limite de tamanho de 10 MB para evitar vulnerabilidades de Path Traversal ou sobrecarga do servidor.
  • Gerenciamento de Autenticação: Autenticação via JWT com envio através de cookies HttpOnly, Secure e SameSite=Strict. No aplicativo Flutter, o gerenciamento de rede retém os cookies sem expor credenciais ao armazenamento local simples do aparelho.
  • Tratamento de Exceções: Middlewares globais de erro no C# e no Python garantem que apenas mensagens genéricas sejam exibidas aos clientes em produção, evitando vazamento de stack traces e detalhes da infraestrutura.
  • Cabeçalhos HTTP: Configuração de cabeçalhos de segurança essenciais como Content-Security-Policy, X-Content-Type-Options: nosniff, X-Frame-Options: DENY e Strict-Transport-Security.

Aprendizados e Próximos Passos

Este projeto permitiu colocar em prática conceitos de arquitetura distribuída, integração entre diferentes linguagens (C# e Python) e boas práticas de desenvolvimento mobile com Flutter.

Próximas melhorias no radar:

  • Evoluir o serviço em Python para aplicar modelos de aprendizado de máquina (Scikit-Learn) na classificação preditiva.
  • Expandir a cobertura de testes unitários e de integração no backend.
  • Construir visualizações gráficas de gastos na interface do Flutter.

About

ExpensAI: Gerenciador Inteligente de Despesas Pessoais. Hub financeiro construído com .NET (C#), Python (IA/Pandas) e app mobile em Flutter.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages