Projeto desenvolvido como atividade prática da Capacitação Java iREDE
O FinTrack é um sistema de controle de finanças pessoais em Java, com versão console e interface gráfica JavaFX. Permite cadastrar receitas e despesas, visualizar o extrato completo, acompanhar o saldo e remover transações. Os dados são persistidos em um banco SQLite via JDBC, aplicando o padrão DAO.
O projeto foi organizado em camadas e usa conceitos de Orientação a Objetos, exceções customizadas para regras de negócio e testes unitários.
- 📥 Cadastrar receitas (entradas)
- 📤 Cadastrar despesas (saídas)
- 📄 Listar todas as transações
- 💵 Exibir saldo atual (receitas − despesas)
- 🗑️ Remover uma transação pelo ID
- 💾 Persistência dos dados em SQLite (arquivo fintrack.db)
- 🖥️ Duas interfaces: JavaFX e console
FinTrack/
├── pom.xml
└── src/
└── fintrack/
├── model/
│ ├── Transacao.java # Entidade principal
│ └── TipoTransacao.java # Enum: RECEITA | DESPESA
├── controller/
│ └── FinanceiroController.java # Regras de negócio
├── exception/
│ ├── ValorInvalidoException.java
│ ├── DescricaoInvalidaException.java
│ └── TransacaoNaoEncontradaException.java
├── view/
│ └── ConsoleView.java # Interface via console
├── RepositorioGenerico.java # Operações reutilizáveis de persistência
├── Conexao.java # Conexão SQLite e criação da tabela
├── TransacaoDAO.java # CRUD com JDBC
├── FinApp.java # Aplicação JavaFX
├── main.fxml # Layout da interface JavaFX
├── style.css # Estilos da interface JavaFX
└── Main.java # Ponto de entrada (console)
| Camada | Responsabilidade |
|---|---|
| Model | Entidade Transacao e enum TipoTransacao |
| Controller | Regras de negócio e validações (FinanceiroController) |
| DAO / Repositório | Acesso a dados com RepositorioGenerico<T, ID> e TransacaoDAO |
| View | ConsoleView (console) e FinApp + main.fxml (JavaFX) |
| Exception | Exceções customizadas para erros de negócio |
| Conceito | Aplicação |
|---|---|
| Encapsulamento | Atributos private com getters e setters em Transacao |
| Enum | TipoTransacao tipando as categorias de transação |
| Imutabilidade | Campos id e tipo declarados como final |
| Exceptions customizadas | 3 classes que estendem Exception para erros de negócio |
| Separação de responsabilidades | Camadas Model / Controller / View / DAO |
| Collections | List<Transacao> com acesso protegido via unmodifiableList |
| Generics | RepositorioGenerico<T, ID> define operações reutilizáveis |
| Padrão DAO | TransacaoDAO isola o acesso ao banco de dados |
| JDBC | PreparedStatement e ResultSet para o CRUD em SQLite |
- Java 25 (LTS)
- JavaFX 25 — interface gráfica
- SQLite com JDBC — persistência
- Maven — build e gerenciamento de dependências
- Testes unitários, incluindo o DAO com SQLite em memória
- IntelliJ IDEA — IDE
- Git / GitHub — versionamento
- JDK 25
- Maven
# Clonar o repositório
git clone https://github.com/arianegomesc/FinTrack.git
cd FinTrack
# Interface JavaFX (o banco SQLite é criado automaticamente em fintrack.db)
mvn javafx:run
# Versão console
mvn package
java -cp target/classes fintrack.Main
# Testes unitários (incluindo o DAO em SQLite em memória)
mvn test- Categorias de transação (alimentação, transporte, lazer etc.)
- Filtro de transações por período
- Relatórios mensais
- Exportação do extrato para CSV