Projeto Final — Organizador de Estudos no Terminal

Projeto integrador completo: organizador de estudos com funções, coleções, JSON, exceções, módulos e testes.

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.py e interface/persistência em app.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

  1. Leia o README antes de executar.
  2. Execute os testes existentes.
  3. Rode a aplicação e cadastre dados fictícios.
  4. Feche e reabra para confirmar persistência.
  5. Leia core.py e explique o contrato de cada função.
  6. Leia app.py e identifique interface, persistência e coordenação.
  7. Adicione uma tarefa, conclua e remova outra, verificando estatísticas depois de cada etapa.
  8. Faça backup de tarefas.json, corrompa uma cópia propositalmente e observe a proteção contra perda silenciosa.
  9. 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 opcional

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

Arquivos para praticar