Um gerenciador de tarefas robusto, limpo e eficiente rodando diretamente no console.
Este projeto é um sistema de gerenciamento de tarefas (CRUD) desenvolvido em Java Puro.
Ele nasceu de uma iniciativa pessoal para consolidar e expandir os conhecimentos adquiridos durante o curso de Java do professor Nélio Alves. Enquanto o curso forneceu a base teórica, este projeto serviu como meu laboratório prático para aplicar conceitos de Arquitetura de Software, Clean Code e recursos modernos do Java (como Stream API e Lambdas) em um cenário real.
O objetivo não foi apenas "fazer funcionar", mas fazer o código ser legível, escalável e profissional.
O sistema permite ao usuário gerenciar sua rotina através de um menu interativo no terminal:
- ✅ Adicionar Tarefa: Criação de tarefas com título, descrição e data de vencimento.
- 📋 Listar Todas: Visualização completa da lista de tarefas.
- 🔍 Filtragem Inteligente: Listar apenas tarefas Pendentes ou Concluídas.
- 🔄 Atualizar Status: Marcar tarefas como concluídas através do ID.
- 🗑️ Exclusão: Remover tarefas da lista de forma segura.
- 🛡️ Validações: Tratamento de erros para datas inválidas e IDs inexistentes.
Este projeto vai além do básico. Aqui estão as tecnologias e padrões que utilizei:
- Linguagem: Java 17+
- Padrão de Arquitetura: Separação em Camadas (Model, Service, App/View).
- Java Streams API: Para filtragem e busca eficiente de dados (
filter,findFirst,collect). - Lambdas & Method References: Para um código mais conciso e moderno.
- POO Sólida: Encapsulamento, Enums e Responsabilidade Única (SRP).
- Tratamento de Exceções: Uso de
try-catchpara garantir que o programa não pare inesperadamente.
A organização foi pensada para facilitar a manutenção e a leitura do código:
src/
└── taskmanager/
├── app/ # Interface com o Usuário (Main, Menu, Inputs)
│ └── Main.java
├── model/ # Representação dos Dados (Entidades)
│ ├── Task.java
│ └── TaskStatus.java
└── service/ # Regra de Negócio (Lógica, CRUD, Streams)
└── TaskService.java
Como o sistema interage com o usuário no console:
=== GERENCIADOR DE TAREFAS ===
1 - Adicionar Nova Tarefa
2 - Listar Tarefas Pendentes
3 - Listar Tarefas Concluídas
...
Escolha uma opção: 1
--- Nova Tarefa ---
Título: Estudar Spring Boot
Descrição: Focar em injeção de dependência
Data de Vencimento (aaaa-mm-dd): 2025-12-20
>> Tarefa adicionada com sucesso!
Pré-requisitos: Java JDK 17 ou superior instalado.
- Clone o repositório:
git clone [https://github.com/raian-leite/console-task-manager.git](https://github.com/raian-leite/console-task-manager.git)
-
Abra na sua IDE favorita (Eclipse, IntelliJ, VS Code).
-
Localize o arquivo principal:
src/taskmanager/app/Main.java. -
Execute a aplicação (Run as Java Application).
Este projeto foi um divisor de águas nos meus estudos. As principais lições foram:
-
O Poder da Organização: Entendi na prática por que não devemos colocar toda a lógica na classe
Main. Separar a regra de negócio (TaskService) da interface (Main) tornou o código muito mais limpo. -
Domínio de Collections: Aprofundei o uso de
List,ArrayListe como manipulá-las. -
Java Moderno: Saí do loop
fortradicional e aprendi a usarStreamseremoveIfpara escrever códigos mais elegantes e performáticos. -
Resolução de Problemas: Enfrentei desafios reais (como limpar o buffer do Scanner e tratar datas) e busquei as melhores soluções.
Estou constantemente evoluindo este projeto. As futuras melhorias incluem:
[ ] Persistência de Dados: Salvar as tarefas em arquivo .txt ou .json para não perder dados ao fechar.
[ ] Integração com Banco de Dados: Conectar com MySQL/PostgreSQL.
[ ] Interface Gráfica: Migrar para uma API REST com Spring Boot.
[ ] Testes Unitários: Implementar JUnit para testar o TaskService.
Gostou do projeto? Estou aberto a feedbacks e oportunidades na área de desenvolvimento Back-end/Java!
Desenvolvido com dedicação por Raian Dal Piero Leite.