Uma lista solta não mostra urgência, carga da semana ou progresso. Também perde o vínculo entre tarefa, matéria, arquivo e prazo.
01 Case técnico público
Organização acadêmica · 2026
A rotina escolar em uma visão que mostra o que exige atenção.
ClassFlow é uma aplicação web que reúne matérias, tarefas, trabalhos, provas, prazos e imagens. O projeto transforma itens dispersos em uma rotina organizada por prioridade, status e data de entrega.
- Python
- Flask
- PostgreSQL
- Supabase
- Jinja
- JavaScript
- ReportLab
As imagens deste case registram a versão analisada. A demonstração usa somente dados fictícios e não acessa o banco de produção.
02 O projeto
Menos dispersão.
Mais contexto para decidir.
Prazos escolares costumam ficar divididos entre cadernos, mensagens e ferramentas sem uma visão comum. O ClassFlow nasceu para responder a uma pergunta simples: o que preciso fazer agora, e o que vem depois?
Uma aplicação renderizada no servidor que centraliza os registros e oferece recortes para hoje, próximos sete dias, calendário e estatísticas.
Autenticação, CRUD completo, filtros, regras de prazo, armazenamento de imagens, visualizações de dados e geração de relatório PDF.
03 Funcionalidades
Da captura ao acompanhamento.
As funções foram organizadas por objetivo para mostrar o fluxo do produto, não apenas uma lista de telas.
Registrar e estruturar
Matérias e tarefas com título, descrição, data, prioridade, status, matéria relacionada e imagem opcional.
- CRUD de matérias
- CRUD de tarefas
- Upload de imagem
Encontrar o próximo foco
Dashboard, visão Hoje, próximos sete dias e calendário mensal destacam atrasos, entregas próximas e progresso.
- Alertas de prazo
- Prioridades e status
- Visão semanal
Filtrar e compreender
Busca textual, filtros por matéria, prioridade e status, ordenação e estatísticas transformam o conjunto em recortes úteis.
- Busca e filtros
- Ordenação
- Estatísticas
Levar o resumo para fora
O ReportLab gera um PDF com indicadores e uma tabela de tarefas, matérias, prazos, prioridades e status.
- Resumo de progresso
- Tabela de tarefas
- Download em PDF
04 Arquitetura e decisões
Uma aplicação Flask
com responsabilidades claras.
Renderização no servidor
Flask e Jinja mantêm as telas próximas das regras de negócio. JavaScript complementa filtros e feedbacks sem transformar a aplicação em uma SPA.
Dados relacionais
PostgreSQL representa usuários, matérias e tarefas. Chaves estrangeiras mantêm o vínculo entre matéria e tarefa, e os estados são limitados por constraints.
Demo sem dependências externas
A rota demonstrativa usa um helper Python com dados fictícios. Ela não exige login, não consulta Supabase e não oferece ações de escrita.
Relatório gerado no backend
O PDF é montado em memória com ReportLab e devolvido como download, sem precisar armazenar documentos temporários.
05 Segurança e dados
Isolamento em duas camadas.
O código filtra as operações pelo usuário autenticado e o banco repete essa regra com Row Level Security.
Rotas protegidas e consultas com escopo
As áreas privadas exigem sessão autenticada. Leituras,
alterações e exclusões incluem o user_id atual nos
filtros.
RLS baseada em auth.uid()
Políticas de select, insert, update e delete restringem perfis, matérias e tarefas ao dono do registro.
Matéria validada para o mesmo usuário
Ao inserir ou atualizar uma tarefa, a política também verifica se a matéria relacionada pertence ao usuário autenticado.
06 Evidência visual
A versão real, sem mockup inventado.
Capturas da aplicação executada localmente. A segunda imagem usa exclusivamente o conjunto demonstrativo incluído no projeto.
A entrada apresenta o propósito do produto, os caminhos de autenticação e o acesso à demonstração.
Dados fictícios mostram métricas, alertas e a tarefa recomendada sem usar conta, banco ou arquivos reais.
07 Resultado
Um projeto de estudo que conecta produto, backend e dados.
O ClassFlow demonstra uma aplicação web completa em uma escala coerente com minha formação: autenticação, persistência, autorização, regras de negócio, experiência responsiva e saída em PDF aplicadas a um problema cotidiano.