Este é um sistema desktop de gerenciamento de tarefas desenvolvido como projeto acadêmico para o IFPB. O aplicativo permite criar, visualizar, editar e excluir tarefas de forma simples e intuitiva, com duas formas de visualização: lista tradicional e cronograma organizativo.
- Sistema de Login: Autenticação simples (usuário: Gabriel, senha: 123456)
- Gerenciamento de Tarefas: Criar, editar, excluir e marcar como concluída
- Duas Visualizações:
- Lista: Visualização tradicional com detalhes expandidos
- Cronograma: Organização por datas de vencimento
- Persistência de Dados: Armazenamento em arquivo CSV
- Interface Responsiva: Adaptável a diferentes tamanhos de tela
- Indicadores Visuais: Status colorido para tarefas (pendente, atrasada, concluída)
-
Tela de Login
- Validação de credenciais
- Mensagens de feedback
- Botão de ajuda com informações
-
Tela Principal (Lista)
- Lista interativa de tarefas
- Formulário para adicionar novas tarefas
- Painel de detalhes para tarefa selecionada
- Ações: adicionar, remover, alterar status
-
Tela de Cronograma
- Organização por data de vencimento
- Destaque para tarefas de hoje e atrasadas
- Interação direta para marcar como concluída
- Legenda visual completa
- Java 17: Linguagem principal
- JavaFX 17: Interface gráfica
- Maven: Gerenciamento de dependências
- FXML: Definição de interfaces
- CSS: Estilização personalizada
src/main/java/com/ifpb/todolist/
├── Main.java # Classe principal da aplicação
├── controller/ # Controladores das telas
│ ├── TelaLoginController.java
│ ├── TelaPrincipalController.java
│ └── TelaCronogramaController.java
├── model/ # Modelos de dados
│ ├── Tarefa.java # Classe principal de tarefa
│ ├── Usuario.java # Modelo de usuário
│ └── CSVUtils.java # Utilitários para CSV
└── service/ # Serviços de negócio
└── ServicoAutenticacao.java # Lógica de autenticação
src/main/resources/view/ # Interfaces FXML
├── TelaLogin.fxml
├── TelaPrincipal.fxml
└── TelaCronograma.fxml
- Atributos privados com getters/setters
- Controle de acesso aos dados das classes
- Métodos que escondem complexidade interna
- Interfaces claras entre componentes
- Cada classe tem uma responsabilidade específica
- Separação clara entre modelo, visualização e controle
- Classes trabalham juntas através de composição
- CSVUtils usado pelos controladores para persistência
- Java JDK 17 ou superior
- Maven 3.6 ou superior
-
Clone ou baixe o projeto
git clone https://github.com/GhostPython297/todolist cd todolist -
Compile o projeto (usando Maven)
mvn clean compile
-
Execute a aplicação (com JavaFX)
mvn javafx:run
Ou usando os scripts wrapper:
# Linux/Mac ./mvnw javafx:run # Windows mvnw.cmd javafx:run
- Usuário: Gabriel
- Senha: 123456
O aplicativo utiliza um arquivo CSV (tarefas.csv) para armazenar as tarefas:
- Localização: Diretório raiz do projeto
- Formato: Separado por ponto e vírgula (;)
- Campos: titulo;descrição;concluída;dataVencimento;dataCriacao
- Criação Automática: O arquivo é criado automaticamente na primeira execução
- Responsividade: Adapta-se a diferentes tamanhos de tela
- Usabilidade: Interface intuitiva com ícones descritivos
- Feedback Visual: Cores e ícones indicam status das tarefas
- Consistência: Padrão visual mantido em todas as telas
- Azul (#2196F3): Elementos principais e navegação
- Verde (#4caf50): Tarefas concluídas e ações de sucesso
- Vermelho (#f44336): Tarefas atrasadas e alertas
- Laranja (#ff9800): Tarefas pendentes
- Cinza: Elementos secundários e bordas
- Na tela principal, clique em "➕ Nova Tarefa"
- Preencha o título (obrigatório)
- Adicione descrição (opcional)
- Selecione data de vencimento (obrigatória)
- Marque como concluída se necessário
- Clique em "💾 Salvar"
- Clique em "📅 Cronograma" no menu lateral
- Veja tarefas organizadas por data
- Identifique visualmente:
- 📅 (HOJE): Tarefas que vencem hoje
⚠️ (ATRASADA): Tarefas em atraso- ✅: Tarefas concluídas
- ⏳: Tarefas pendentes
- Novos Campos: Edite a classe
Tarefa.javae atualize CSV - Nova Tela: Crie controlador, FXML e adicione navegação
- Novos Validadores: Adicione no service apropriado
- Substitua
CSVUtilspor implementação de banco de dados - Mantenha interface compatível para não quebrar controladores
Este projeto demonstra:
- Arquitetura MVC: Model-View-Controller com JavaFX
- Manipulação de Arquivos: Leitura e escrita de CSV
- Interface Gráfica: Componentes JavaFX e FXML
- Validação de Dados: Tratamento de entrada do usuário
- Tratamento de Exceções: Gestão de erros
- Design Patterns: Factory Method, Observer Pattern
Este é um projeto acadêmico, mas sugestões são bem-vindas:
- Fork o projeto
- Crie uma feature branch
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
Este projeto foi desenvolvido para fins educacionais no IFPB.
Desenvolvido como projeto acadêmico para demonstrar conceitos de:
- Programação Orientada a Objetos
- Desenvolvimento de Interfaces Gráficas
- Persistência de Dados
- Arquitetura de Software
- IDE Recomendada: IntelliJ IDEA ou Eclipse com plugin JavaFX
- Debugging: Use breakpoints nos controladores para entender o fluxo
- Personalização: Modifique os arquivos FXML para alterar a interface
- Testes: Adicione classes de teste para validar funcionalidades








