Gerenciador de Tarefas via Linha de Comando
Organize suas tarefas com simplicidade — construído com Java e Maven.
Sem instalação complexa. Clone e rode:
# 1. Clone o repositório
git clone https://github.com/SEU-USUARIO/taskmanager-cli.git
# 2. Entre no diretório
cd taskmanager-cli
# 3. Compile com Maven
mvn clean compile
# 4. Execute a aplicação
mvn exec:java -Dexec.mainClass="com.taskmanager.App"- Interface interativa com menu principal e navegação simples
- Cria tarefas com título, descrição e prazo através de fluxo guiado
- Lista todas as tarefas ordenadas por urgência
- Busca tarefas por ID com exibição detalhada
- Atualiza tarefas existentes com validação de dados
- Atualiza status de tarefas individualmente (To Do, In Progress, Done, Cancelled)
- Deleta tarefas por ID
- Gerencia status completo (To Do, Work In Progress, Done, Cancelled)
- Detecta atrasos automaticamente
- Exibe alertas para tarefas vencidas ou do dia
$ mvn exec:java -Dexec.mainClass="com.taskmanager.App"
Welcome to the Task Manager!
--- Task Manager Menu ---
1. Create Task
2. List All Tasks
3. Find Task by Id
4. Update Task
5. Update Task Status
6. Delete Task
0. Exit
Select an option: 1
--- New Task ---
Title: Estudar Java
Description: Revisar conceitos de POO
Due Date (YYYY-MM-DD): 2026-01-15
Task created successfully!
Select an option: 2
========== LISTA DE TAREFAS ==========
ID: 1
Titulo: Estudar Java
Descricao: Revisar conceitos de POO
Data Final: 2026-01-15
Status: TO_DO
Select an option: 5
Task Id to update status: 1
--- Update Task Status ---
Current Status: TO_DO
New Status (DONE, IN_PROGRESS, TO DO, CANCELLED): IN_PROGRESS
Task with Id 1 marked as in progress.
Select an option: 3
Task Id to find a task: 1
---> Task found <---
ID: 1
Titulo: Estudar Java
Descricao: Revisar conceitos de POO
Data Final: 2026-01-15
Status: IN_PROGRESS
Select an option: 4
Task Id to update: 1
--- Update Task ---
--- Updating Task 1 ---
Current Data: Estudar Java
Revisar conceitos de POO
2026-01-15
New Title: Estudar Java Avançado
New Descriptin: Revisar POO e Collections
New Due Date (YYYY-MM-DD): 2026-01-20
Task with Id 1 was updated.
Select an option: 0
Exiting Task Manager. Goodbye!| Feature | Descrição |
|---|---|
| ☕ Pure Java | Construído com Java 17+ e bibliotecas nativas |
| 🟢 Interface Completa | Menu interativo via Scanner com 7 opções (criar, listar, buscar, atualizar, atualizar status, deletar, sair) |
| 🔍 Detecção Automática | Identifica tarefas atrasadas e do dia |
| 🏗️ Arquitetura Modular | Separação clara entre Model, Service e UI |
| 📅 LocalDate API | Manipulação moderna de datas com java.time |
| 🎯 Lombok | Código limpo com anotações @Getter, @Setter |
| 📊 Ordenação Inteligente | Tarefas ordenadas por data de vencimento (mais urgentes primeiro) |
| ✅ Validações | Impede criação de tarefas inválidas (título vazio, data passada) |
| 🔄 Gestão de Status | 4 métodos dedicados para mudar status (Done, WIP, ToDo, Cancelled) |
| 🖥️ Fluxos Guiados | Interface interativa com validação de entrada e feedback claro |
| � Persistência SQLite | Banco de dados local SQLite para armazenar tarefas permanentemente |
| �🔒 Offline | 100% local — nenhum dado sai da sua máquina |
| Recurso | Status | Descrição |
|---|---|---|
| Model Task | ✅ Completo | Entidade com título, descrição, data e status |
| Status Enum | ✅ Completo | TO_DO, WIP, DONE, CANCELLED |
| TaskService Interface | ✅ Completo | Contrato de serviços para gerenciamento de tarefas |
| TaskServiceImpl | ✅ Completo | Implementação dos serviços com lógica de negócio |
| createTask() | ✅ Completo | Cria tarefas com validações (título obrigatório, data válida) |
| getAllTasks() | ✅ Completo | Lista tarefas ordenadas por data de vencimento |
| findById() | ✅ Completo | Buscar tarefa específica por ID (int ou Long) |
| updateTask() | ✅ Completo | Atualizar dados de uma tarefa existente |
| deleteTask() | ✅ Completo | Remover tarefa da lista por ID |
| markAsDone() | ✅ Completo | Marca tarefa como DONE (concluída) por ID |
| markAsWIP() | ✅ Completo | Marca tarefa como WIP (em progresso) por ID |
| markAsToDo() | ✅ Completo | Marca tarefa como TO_DO (a fazer) por ID |
| markAsCancelled() | ✅ Completo | Marca tarefa como CANCELLED (cancelada) por ID |
| showStatus() | ✅ Completo | Exibe dados formatados com alertas automáticos |
| isOverdue() | ✅ Completo | Detecta tarefas atrasadas (exceto concluídas) |
| isDueDate() | ✅ Completo | Detecta tarefas para hoje |
| Testes Unitários | ✅ Completo | 18 testes cobrindo toda lógica da classe Task |
| ID Automático | ✅ Completo | Geração automática de IDs sequenciais |
| Ordenação | ✅ Completo | Tarefas mais urgentes aparecem primeiro |
| DatabaseConfig | ✅ Completo | Configuração de conexão com SQLite e inicialização automática de schema |
| TaskRepository | ✅ Completo | Camada de persistência com operações CRUD no banco de dados |
| Persistência SQLite | ✅ Completo | Integração completa com banco de dados SQLite local |
| Recurso | Status | Descrição |
|---|
| Filtros | 🚧 Planejado | Listar por status, data, prioridade | | Prioridade | 🚧 Planejado | Sistema de alta/média/baixa prioridade |
| Recurso | Status | Descrição |
|---|---|---|
| Tags/Categorias | 💡 Ideia | Organizar tarefas por projetos |
| Notificações | 💡 Ideia | Alertas no sistema operacional |
| Exportação | 💡 Ideia | Exportar tarefas para JSON/CSV |
O projeto segue uma estrutura modular limpa, separando responsabilidades:
taskmanager-cli/
├── data/
│ └── taskmanager.db # Banco de dados SQLite
├── src/
│ ├── main/
│ │ └── java/
│ │ └── com/taskmanager/
│ │ ├── App.java # Ponto de entrada
│ │ ├── config/
│ │ │ └── DatabaseConfig.java # Configuração e inicialização do SQLite
│ │ ├── model/
│ │ │ ├── Task.java # Entidade principal
│ │ │ └── enums/
│ │ │ └── StatusEnum.java # Enum de status
│ │ ├── repository/
│ │ │ └── TaskRepository.java # Camada de persistência com SQLite
│ │ ├── services/
│ │ │ ├── TaskService.java # Interface de serviços
│ │ │ └── impl/
│ │ │ └── TaskServiceImpl.java # Implementação (CRUD)
│ │ └── ui/
│ │ └── UserInterface.java # Interação com usuário
│ └── test/
│ └── java/
│ └── com/taskmanager/
│ ├── AppTest.java # Testes básicos
│ └── model/
│ └── TaskTest.java # 18 testes da Task
└── pom.xml # Dependências Maven
Separação de Responsabilidades:
- Model: Representa os dados (Task, StatusEnum)
- Services: Interface (contrato) e implementação com lógica de negócio (CRUD completo)
- UI: Interação com o usuário via CLI (Scanner, menus, fluxos guiados) - implementado
- Config: Configuração de infraestrutura (DatabaseConfig) com inicialização automática do schema
- Repository: Camada de acesso a dados (TaskRepository) com operações CRUD no SQLite
- App: Orquestrador principal e ponto de entrada
- Test: Testes unitários com JUnit 5
git clone https://github.com/SEU-USUARIO/taskmanager-cli.git
cd taskmanager-cli
# Compilar
mvn clean compile
# Executar
mvn exec:java -Dexec.mainClass="com.taskmanager.App"
# Rodar testes
mvn test
# Gerar JAR
mvn packageDependências:
- Java 17+
- Maven 3.6+
- Lombok 1.18.32
- SQLite JDBC 3.45.1.0
- JUnit Jupiter 5.10.1 (testes)
Contribuições são bem-vindas! Sinta-se à vontade para abrir Pull Requests.
- Fork o repositório
- Crie sua branch de feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Este projeto está sob a licença GLPv3 — veja o arquivo LICENSE para detalhes.
Este é um projeto educacional em desenvolvimento. Funcionalidades estão sendo adicionadas incrementalmente.
🎯 Status Atual: Sistema CRUD 100% funcional com persistência em banco de dados SQLite e interface de usuário completa. Usuários podem criar, listar, buscar, atualizar dados, atualizar status e deletar tarefas através de um menu intuitivo com 7 opções. Todas as operações são persistidas automaticamente no banco de dados local. Sistema robusto com validações, ordenação automática por data de vencimento, detecção de atrasos e alertas. Próximos passos: implementar filtros avançados por status, data e prioridade.