Skip to content

☑️ Task Manager CLI: a solução modular e persistente para gestão de produtividade no terminal. Desenvolvido em Java 17, otimiza seu fluxo de trabalho através do gerenciamento inteligente de tarefas com banco de dados SQLite local, garantindo agilidade e integridade dos dados por meio de uma arquitetura robusta e operações offline.

License

Notifications You must be signed in to change notification settings

ailsonguedes/taskmanager-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

☑️ Task Manager CLI

License Java Version Maven Platform Status

Gerenciador de Tarefas via Linha de Comando
Organize suas tarefas com simplicidade — construído com Java e Maven.


🚀 Quick Start

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"

📋 O Que a CLI Faz

  1. Interface interativa com menu principal e navegação simples
  2. Cria tarefas com título, descrição e prazo através de fluxo guiado
  3. Lista todas as tarefas ordenadas por urgência
  4. Busca tarefas por ID com exibição detalhada
  5. Atualiza tarefas existentes com validação de dados
  6. Atualiza status de tarefas individualmente (To Do, In Progress, Done, Cancelled)
  7. Deleta tarefas por ID
  8. Gerencia status completo (To Do, Work In Progress, Done, Cancelled)
  9. Detecta atrasos automaticamente
  10. Exibe alertas para tarefas vencidas ou do dia

💻 Veja em Ação

$ 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!

✨ Features

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

🛠️ Funcionalidades

🟢 Implementadas

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

🟡 Em Desenvolvimento

Recurso Status Descrição

| Filtros | 🚧 Planejado | Listar por status, data, prioridade | | Prioridade | 🚧 Planejado | Sistema de alta/média/baixa prioridade |

🔴 Futuras

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

🏗️ Arquitetura

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

🔧 Desenvolvimento

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)

🤝 Contributing

Contribuições são bem-vindas! Sinta-se à vontade para abrir Pull Requests.

  1. Fork o repositório
  2. Crie sua branch de feature (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -m 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença GLPv3 — veja o arquivo LICENSE para detalhes.


⚠️ Disclaimer

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.

About

☑️ Task Manager CLI: a solução modular e persistente para gestão de produtividade no terminal. Desenvolvido em Java 17, otimiza seu fluxo de trabalho através do gerenciamento inteligente de tarefas com banco de dados SQLite local, garantindo agilidade e integridade dos dados por meio de uma arquitetura robusta e operações offline.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages