License Java Version Maven Platform Status
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 package
Dependê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.