TaskFlow é um sistema de gerenciamento de tarefas desenvolvido em Python que permite aos usuários criar, editar, acompanhar e concluir tarefas com prazos definidos. O sistema foi projetado com foco em segurança, boas práticas de programação e facilidade de uso, com interface de linha de comando (CLI) intuitiva.
- Cadastro de Novos Usuários: Criar contas com nome, e-mail, login e senha
- Autenticação Segura: Login com hash SHA256 para proteção de senha
- Controle de Sessão: Gerenciamento de usuário logado
- Logout: Encerramento seguro de sessão
- Criar Tarefas: Adicionar novas tarefas com título, descrição e prazo
- Listar Tarefas: Visualizar todas as tarefas pessoais com status automático
- Editar Tarefas: Modificar título, descrição ou prazo existentes
- Concluir Tarefas: Marcar tarefas como concluídas
- Excluir Tarefas: Remover tarefas permanentemente do sistema
- Detecção de Tarefas Atrasadas: Identificação automática de prazos vencidos
- Tarefas Concluídas: Histórico e estatísticas de produtividade
- Tarefas Pendentes: Lista de trabalho em andamento
- Tarefas Atrasadas: Alertas de urgência para prazos vencidos
- Exportação em TXT: Salvar relatórios em arquivo para posterior análise
Cada tarefa contém:
- id: Identificador único auto-incrementado
- título: Nome da tarefa
- descrição: Descrição detalhada
- responsável_id: ID do usuário responsável
- responsável_nome: Nome do responsável (referência facilitada)
- prazo: Data limite (formato DD/MM/AAAA)
- status: Estado (Pendente, Concluída, Atrasada)
- criação: Data e hora de criação (timestamp)
Task/
- main.py # Controlador principal, interface do usuário e loop de eventos
- usuarios.py # Módulo de autenticação e gerenciamento de usuários
- Tarefas.py # Módulo de gerenciamento de tarefas (CRUD completo)
- README.md # Este arquivo
- utils/
- arquivos.py # Funções de leitura/escrita persistente em JSON (quando implementado)
- Loop principal com gerenciamento de estado (logado/não logado)
- Sistema de relatórios com três categorias (Concluídas, Pendentes, Atrasadas)
- Detecção automática e dinâmica de tarefas com prazos vencidos
- Funções adicionais: tela_concluir_tarefa(), tela_excluir_tarefa(), tela_relatorios()
- Exportação de relatórios em arquivo TXT com timestamp
- Interface CLI completa com menus personalizados
- Docstrings detalhadas em todas as funções (padrão PEP 257)
- Constantes para status de tarefas (evita erros de digitação)
- Funções auxiliares centralizadas (_encontrar_tarefa, etc.)
- Tratamento robusto de exceções
- Separação clara de responsabilidades entre módulos
- MVC Simplificado: View (telas), Controller (menus e loop), Model (dados)
- Event Loop: Padrão reativo para fluxo de aplicação
- CRUD Completo: Create, Read, Update, Delete em tarefas
- Factory Pattern: Criação de IDs auto-incrementados
Responsável pela interface do usuário e orquestração do fluxo da aplicação.
Segue padrão MVC simplificado com separação clara de responsabilidades.
Funções de Menu:
- menu_principal() - Menu para usuários não autenticados (Login, Cadastro, Sair)
- menu_logado() - Menu personalizado para usuários autenticados
Funções de Interface (Telas):
- tela_cadastro() - Coleta dados para novo cadastro de usuário
- tela_login() - Interface de autenticação
- tela_criar_tarefa() - Formulário para criar nova tarefa
- tela_editar_tarefa() - Interface para editar tarefa existente
- tela_concluir_tarefa() - Interface para marcar tarefa como concluída
- tela_excluir_tarefa() - Interface para remover tarefa
- tela_relatorios() - Menu e interface de relatórios
Função de Controle:
- loop_principal() - O "coração" da aplicação, gerencia o fluxo de eventos e alterna entre estado logado e não logado
Entrada do Programa:
- main: Ponto de entrada que inicia o loop_principal()
Módulo de autenticação e gerenciamento de usuários com segurança de ponta.
Funções Principais:
- cadastrar_usuario(nome, email, login, senha) - Registra novo usuário com validação de login único
- autenticar_usuario(login, senha) - Realiza login com comparação de hash
- get_usuario_logado() - Retorna dados do usuário em sessão ativa
- logout() - Encerra a sessão do usuário atual
- get_usuario_por_id(user_id) - Busca usuário específico pelo ID
Funções Internas:
- _hash_senha(senha) - Gera hash SHA256 da senha
- _carregar_usuarios() - Carrega lista de usuários do arquivo JSON
- _salvar_usuarios(usuarios) - Persiste lista de usuários no JSON
Segurança Implementada:
- Senhas armazenadas com hash SHA256 (unidirecional)
- Senhas nunca aparecem em texto puro na sessão
- Validação de unicidade de login no cadastro
- Sessão segura sem dados sensíveis
- Mensagens de erro genéricas (não especificam se login ou senha estão errados)
Módulo que implementa todas as operações de Criação, Leitura, Atualização e Exclusão de tarefas.
Funções Principais:
- criar_tarefa(titulo, descricao, prazo_str) - Cria nova tarefa com validação de formato de data
- listar_tarefas(filtrar_por_responsavel=True) - Lista tarefas com filtro opcional
- Detecta automaticamente tarefas atrasadas comparando prazo com data atual
- Mostra status visual dinamicamente sem alterar o arquivo
- editar_tarefa(tarefa_id, novo_titulo, nova_descricao, novo_prazo) - Modifica tarefa existente com controle de acesso
- concluir_tarefa(tarefa_id) - Marca tarefa como concluída
- excluir_tarefa(tarefa_id) - Remove tarefa permanentemente
Funções Internas:
- _carregar_tarefas() - Carrega lista de tarefas do arquivo JSON
- _salvar_tarefas(tarefas) - Persiste lista de tarefas no JSON
- _encontrar_tarefa(tarefas, tarefa_id) - Busca auxiliar centralizada por ID
Constantes de Status:
- STATUS_PENDENTE = "Pendente" - Tarefa criada, aguardando conclusão
- STATUS_CONCLUIDA = "Concluída" - Tarefa finalizada pelo responsável
- STATUS_ATRASADA = "Atrasada" - Tarefa pendente com prazo vencido (detectado dinamicamente)
Regras de Negócio:
- Apenas usuário logado pode criar tarefas
- IDs são auto-incrementados e únicos
- Datas devem estar no formato DD/MM/AAAA
- Cada tarefa registra automaticamente a hora de criação
- Tarefas atrasadas são detectadas em tempo real (sem modificar o JSON)
Controle de Acesso e Segurança (Novo):
- Apenas o responsável pela tarefa pode editá-la, concluí-la ou excluí-la
- Validações de permissão impedem acesso não autorizado
- Campos opcionais em edição permitem modificações parciais
- Confirmação de sucesso com mensagens claras ao usuário
Módulo responsável pela coleta, formatação e exportação de relatórios de tarefas.
Funções Principais:
- tarefas_concluidas() - Retorna lista de tarefas com status "Concluída"
- tarefas_pendentes() - Retorna lista de tarefas com status "Pendente"
- tarefas_atrasadas() - Retorna lista de tarefas pendentes com prazo vencido
Funções Auxiliares:
- _filtrar_tarefas(status_desejado=None, verificar_atraso=False) - Filtragem centralizada de tarefas
Funcionalidades:
- Filtragem por status de tarefa (Concluídas, Pendentes, Atrasadas)
- Detecção automática de tarefas vencidas
- Comparação de prazos com data/hora atual
- Tratamento robusto de erros em datas inválidas
- Cada usuário vê apenas suas próprias tarefas nos relatórios
Importações:
- Utiliza constantes de status do módulo
tarefas.py(STATUS_CONCLUIDA, STATUS_PENDENTE, STATUS_ATRASADA) - Acessa função privada
_carregar_tarefas()do módulotarefas.py - Integra função
get_usuario_por_id()do módulousuarios.py
NOTA: O módulo relatorios.py está completo e totalmente integrado com o sistema. Implementa as três funções principais para geração de relatórios (tarefas concluídas, pendentes e atrasadas) com filtragem automática de dados.
python main.py
` --- TaskFlow - Gerenciador de Tarefas ---
- Login
- Cadastrar Novo Usuário
- Sair `
Escolha 1 para fazer login ou 2 para criar uma conta nova.
- Escolha opção 2 no menu principal
- Forneça: nome completo, e-mail, login único e senha
- O sistema validará a unicidade do login
- Após cadastro, você pode fazer login com suas credenciais
- Escolha opção 1 no menu principal
- Informe o login e senha cadastrados
- O sistema autenticará suas credenciais
- Após login bem-sucedido, você acessará o menu personalizado
` --- Menu de [Seu Nome] ---
- Minhas Tarefas
- Criar Nova Tarefa
- Editar Tarefa
- Concluir Tarefa
- Excluir Tarefa
- Relatórios
- Logout `
- Exibe todas as suas tarefas com formatação clara
- Mostra: ID, Título, Prazo, Status (com detecção automática de atrasadas)
- Status atrasado é calculado em tempo real
- Título: Resumo curto da tarefa
- Descrição: Detalhes sobre o que fazer
- Prazo: Data limite no formato DD/MM/AAAA
Dica: O sistema validará o formato da data automaticamente.
- Exibe lista de suas tarefas
- Informe o ID da tarefa a editar
- Deixe campos em branco para não alterar
- Preencha apenas os campos que deseja modificar
- Mudanças são salvas imediatamente
- Exibe lista de suas tarefas
- Informe o ID da tarefa a concluir
- Status muda para "Concluída" automaticamente
- Exibe lista de suas tarefas
- Informe o ID da tarefa a excluir
- Exclusão é permanente (sem confirmação adicional)
Submenu com opções de geração de relatórios:
- Tarefas Concluídas - Visualiza histórico de tarefas finalizadas
- Tarefas Pendentes - Lista de tarefas em andamento
- Tarefas Atrasadas - Alertas de prazos vencidos
- Voltar - Retorna ao menu anterior
Após gerar um relatório, você pode optar por exportar para arquivo TXT.
- Encerra sua sessão
- Retorna ao menu principal
O sistema utiliza um padrão de "event loop" (similar ao usado em frameworks web):
-
ESTADO NÃO LOGADO:
- Exibe menu_principal()
- Permite: Login, Cadastro ou Sair
-
ESTADO LOGADO:
- Exibe menu_logado() personalizado com nome do usuário
- Permite: Gerenciar tarefas, gerar relatórios
O loop continua até o usuário escolher "Sair". Qualquer erro no processamento é capturado e tratado sem encerrar o programa.
O sistema detecta automaticamente tarefas atrasadas:
- Ao listar tarefas, compara o prazo com a data atual
- Se a tarefa está em status "Pendente" e o prazo já passou, aparece como "Atrasada"
- A detecção é dinâmica (em tempo real) sem modificar os dados armazenados
- Tarefas concluídas nunca aparecem como atrasadas
- No relatório de atrasadas, mostra apenas pendentes com prazo vencido
- Hash de Senhas: Utiliza SHA256 para criptografia unidirecional
- Sessão Segura: Nunca armazena senhas em memória
- Validação de Entrada: Verifica unicidade de login e formato de data
- Mensagens Genéricas: "Login ou senha inválidos" (não especifica qual está errado)
- Isolamento de Dados: Usuários só veem suas próprias tarefas
- Proteção contra Acesso Direto: Funções internas (_nome) separadas das públicas
{ "id": 1, "nome": "Gabriela M Silva", "email": "gabriela.m.silva@ba.estudante.senai.br", "login": "gabriela_silva", "senha_hash": "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3" }
{ "id": 1, "titulo": "Exemplo de Tarefa", "descrição": "Descrição detalhada", "responsável_id": 1, "responsável_nome": "Gabriela M Silva", "prazo": "31/12/2025", "status": "Pendente", "criação": "2025-11-22 14:30:00" }
- Execute: python main.py
- Escolha: 2 - Cadastrar Novo Usuário
- Digite dados (nome, e-mail, login, senha)
- Retorne ao menu e escolha: 1 - Login
- Faça login com suas credenciais
- Escolha: 2 - Criar Nova Tarefa
- Preencha título, descrição e prazo
- Veja suas tarefas com: 1 - Minhas Tarefas
- Edite com: 3 - Editar Tarefa
- Marque como concluída com: 4 - Concluir Tarefa
- Gere relatório com: 6 - Relatórios
- Escolha 1 para Tarefas Concluídas
- Exporte para arquivo TXT se desejar
- Faça logout com: 7 - Logout
- Python 3.7 ou superior
- Sistema de arquivos disponível (para persistência em JSON)
- Nenhuma dependência externa necessária
- Persistência: Todos os dados são salvos em arquivos JSON
- Validação de Datas: Sempre use o formato DD/MM/AAAA
- Login Único: Cada login deve ser único no sistema
- Usuário Responsável: Tarefas são automaticamente atribuídas ao usuário logado
- Detecção Dinâmica: Tarefas atrasadas são calculadas em tempo real
- Segurança: Senhas são irreversivelmente criptografadas com SHA256
- MVC Simplificado: Separação entre Interface (main.py), Lógica (tarefas.py, usuarios.py) e Dados (utils/arquivos.py)
- Event Loop: Padrão usado em aplicações interativas para controlar fluxo de usuário
- Single Responsibility: Cada módulo tem uma responsabilidade clara
- Open/Closed: Fácil adicionar novos módulos sem modificar os existentes
- Dependency Inversion: Módulos dependem de interfaces abstratas (arquivos.py)
- Funções bem documentadas com docstrings detalhadas
- Constantes em MAIÚSCULAS para evitar erros
- Funções internas (prefixo _) separadas das públicas
- Tratamento de exceções em pontos críticos
- Mensagens de erro claras e úteis ao usuário
Desenvolvido como um projeto educacional para demonstrar boas práticas em Python, incluindo:
- Modularização e separação de responsabilidades
- Segurança em autenticação e criptografia
- Persistência de dados em JSON
- Interface interativa com usuário
- Padrões de design e arquitetura
Atualizado com novas funcionalidades:
- Sistema completo de relatórios
- Detecção automática de tarefas atrasadas
- Loop principal com gerenciamento de estado
- Exportação de relatórios em TXT
Este projeto é de código aberto e disponível para fins educacionais.
- Disciplina: Lógica de Programação
- Professor: Washington Luis Souza Anunciação
- Data de Início: 22 de novembro de 2025
| # | Nome Completo | |
|---|---|---|
| 1 | Gabriela M. N. Silva | gabriela.m.silva@ba.estudante.senai.br |
| 2 | Cristiano Silva Santos | Cristiano.s.santos@ba.estudante.senai.br |
| 3 | Joel Macena Costa | joel.c@ba.estudante.senai.br |
| 4 | Josilton José Almeida Santos | josilton.santos@aluno.senai.br |
- Gabriela M. N. Silva (gabriela.m.silva@ba.estudante.senai.br): Desenvolvedora principal, autora da conta GitHub, integração com repositório remoto
- Cristiano Silva Santos (Cristiano.s.santos@ba.estudante.senai.br): Desenvolvedor, contribuidor do projeto
- Joel Macena Costa (joel.c@ba.estudante.senai.br): Desenvolvedor, contribuidor do projeto
- Josilton José Almeida Santos (josilton.santos@aluno.senai.br): Desenvolvedor, contribuidor do projeto
Todos os integrantes contribuem para:
- Implementação de funcionalidades
- Testes e validação
- Documentação
- Revisão de código
- Estrutura inicial do projeto criada
- Módulos básicos implementados (usuarios.py, Tarefas.py, main.py)
- Sistema de autenticação com SHA256
- CRUD completo de tarefas
- Loop principal com gerenciamento de estado
- Sistema de relatórios (Concluídas, Pendentes, Atrasadas)
- Detecção automática de tarefas atrasadas
- Documentação completa do projeto
- Funções CRUD Expandidas: Implementação completa de
editar_tarefa(),concluir_tarefa()eexcluir_tarefa()emtarefas.py - Controle de Acesso: Validação de segurança assegurando que apenas o responsável pela tarefa pode editá-la, concluí-la ou excluí-la
- Arquivo de Relatórios: Módulo
relatorios.pycompleto com funções de geração de relatórios - Funções de Exportação: Adicionadas
exibir_relatorio()eexportar_relatorio()para visualização e exportação em TXT - Tabela de Integrantes Atualizada: Adição de coluna de email para melhor contato com todos os membros da equipe
- Documentação Aprimorada: Melhoria nas responsabilidades e informações de contato de cada membro do projeto
- Correções de Estrutura: Renomeação de arquivos para padrão lowercase (
Tarefas.py→tarefas.py,arquivo.py→arquivos.py) - Pacote Utils: Criação de
utils/__init__.pypara reconhecer a pasta como pacote Python - Linting Corrigido: Correção de linhas longas e espaçamento em
utils/arquivos.py
- ✓ Sistema de autenticação com criptografia SHA256
- ✓ CRUD completo de tarefas (Criar, Ler, Atualizar, Excluir)
- ✓ Controle de acesso por responsável
- ✓ Sistema de relatórios com 3 categorias
- ✓ Exportação de relatórios em arquivo TXT
- ✓ Detecção automática de tarefas atrasadas
- ✓ Interface CLI intuitiva
- ✓ Persistência de dados em JSON
- ✓ Todos os módulos Python compilando sem erros
- ✓ Imports funcionando corretamente
- Banco de dados SQL (SQLite, PostgreSQL)
- Sistema de tags para tarefas
- Filtros avançados
- Notificações por email
- Temas personalizáveis (claro/escuro)
- Compartilhamento de tarefas entre usuários
- PWA (Progressive Web App)
O TaskFlow agora está disponível online!
Acesse: https://projetowas.netlify.app
- ✨ Design moderno com gradiente roxo elegante
- 📱 100% responsivo (mobile, tablet, desktop)
- 🎨 Ícones Font Awesome profissionais
- ⚡ Animações suaves e transições elegantes
- 🔔 Notificações toast em tempo real
- 📊 Dashboard interativo com estatísticas
- 🔍 Filtros e busca por título/descrição
- 📈 Relatórios completos com exportação
- 💾 LocalStorage para persistência de dados
- 🎯 Ordenação flexível (data, prazo, título)
- 👤 Perfil do usuário com estatísticas
- Frontend: HTML5, CSS3, JavaScript ES6+
- Ícones: Font Awesome 6.4.0
- Persistência: LocalStorage (navegador)
- Deploy: Netlify
- Design: Mobile-first responsivo
- Acesse direto pelo navegador
- Sem instalação necessária
- Disponível 24/7 no Netlify
- Interface moderna e profissional
- Funciona em qualquer dispositivo
# Executar localmente
python main.py# Instalar dependências
pip install -r requirements.txt
# Iniciar servidor
python app.py
# Acessar: http://localhost:5000- Acesse: https://projetowas.netlify.app
- Cadastre-se: Crie sua conta gratuitamente
- Faça login: Entre com suas credenciais
- Crie tarefas: Adicione, edite e gerencie suas atividades
- Acompanhe: Veja estatísticas e relatórios em tempo real
Para fazer seu próprio deploy, consulte: DEPLOY_NETLIFY.md