Projeto Final — Organizador de Estudos no Terminal
Agora você vai juntar os fundamentos do FT-002 em um programa pequeno, mas completo. O projeto não usa framework nem banco de dados: a intenção é provar que você consegue combinar valores, decisões, laços, funções, listas, dicionários, exceções, arquivos, JSON e módulos sem esconder a lógica atrás de ferramentas maiores.
O problema
Você precisa de um organizador capaz de manter tarefas de estudo. Cada tarefa possui identificador, título, duração planejada e estado de conclusão. O programa deve continuar lembrando das tarefas quando for fechado e aberto novamente.
Funcionalidades obrigatórias
- listar tarefas;
- adicionar tarefa com título e duração válida;
- marcar uma tarefa como concluída;
- remover tarefa por ID;
- calcular quantidade total, concluídas, pendentes, percentual e minutos planejados/concluídos;
- salvar e carregar dados JSON em UTF-8;
- tratar entrada numérica inválida sem encerrar abruptamente;
- não sobrescrever silenciosamente um JSON corrompido;
- separar regras em
core.pye interface/persistência emapp.py; - executar testes automatizados do núcleo.
Arquitetura esperada
ft002-projeto-final/
├── README.md
├── src/
│ ├── app.py
│ └── core.py
├── data/
│ └── tarefas.json
├── docs/
│ └── arquitetura.md
└── tests/
└── test_core.py
Faça em etapas
- Leia o README antes de executar.
- Execute os testes existentes.
- Rode a aplicação e cadastre dados fictícios.
- Feche e reabra para confirmar persistência.
- Leia
core.pye explique o contrato de cada função. - Leia
app.pye identifique interface, persistência e coordenação. - Adicione uma tarefa, conclua e remova outra, verificando estatísticas depois de cada etapa.
- Faça backup de
tarefas.json, corrompa uma cópia propositalmente e observe a proteção contra perda silenciosa. - Implemente pelo menos uma melhoria própria pequena e adicione um teste quando a melhoria pertencer ao núcleo.
Como executar
python src/app.py
No Windows, se python não apontar para Python 3, use o comando configurado no seu ambiente, como py -3 src/app.py.
Como executar os testes
python -m unittest discover -s tests -v
Critérios de qualidade
- Você consegue explicar cada função sem ler a implementação palavra por palavra.
- As funções de regra não dependem de
input(). - Entradas inválidas geram mensagens compreensíveis.
- O programa não divide por zero nem assume listas não vazias sem regra.
- Dados existentes não são descartados silenciosamente quando o JSON está inválido.
- Os testes passam.
- O código usa nomes claros e não depende de globais mutáveis para regras.
Entrega
Use o ZIP de projeto incluído no pacote como ponto de partida e referência. Para consolidar o aprendizado, modifique-o e mantenha um pequeno registro do que você mudou, por que mudou e como testou.
Avaliação com validação humana
Receba nota e feedback individual sobre esta atividade. Este serviço é opcional e não é necessário para concluir o curso ou receber o certificado gratuito.
Entrar para solicitar