aulify · Mini-Projecto
UC UC02834 · T. Desenv. Software
Versão · Aluno
Mini-Projecto · Aplicação web full-stack
Site completo com BD, autenticação e API
Contexto
Cada par/trio constrói uma aplicação web completa em Flask: frontend (templates), backend (rotas), BD (SQLAlchemy), autenticação e uma API REST. Domínio à escolha: gestor de tarefas, blog, mini-loja, agenda de eventos, biblioteca.
Requisitos
Funcionais
- Autenticação — registo, login, logout (senhas com hash).
- CRUD completo de pelo menos 1 recurso principal (criar/listar/editar/apagar).
- Templates com herança (base + páginas).
- API REST — pelo menos GET e POST em JSON.
- Autorização — utilizador só vê/edita os seus dados.
- Validação no servidor.
Não-funcionais
- Estrutura organizada (blueprints ou módulos).
- BD SQLite (PostgreSQL = bónus).
- CSRF protegido, secrets em
.env. - 10+ testes (pytest).
- Deploy público + README + Git.
Fases
Fase 1 · 1.5h
Planeamento
- Escolher domínio.
- Modelo de dados (entidades + relações).
- Lista de rotas e mockup das páginas.
Diagrama ER + mapa de rotas.
Fase 2 · 2h
Setup + BD
- Projecto Flask + SQLAlchemy.
- Modelos + migração inicial.
- Seed de dados de teste.
BD funcional + modelos.
Fase 3 · 2.5h
Autenticação
- Registo + login + logout.
- Hash de senhas, sessões.
- Rotas protegidas.
Auth funcional + 3 testes.
Fase 4 · 3h
CRUD + templates
- CRUD completo do recurso principal.
- Templates com herança.
- Autorização (cada user só os seus dados).
CRUD funcional com UI.
Fase 5 · 2h
API REST
- Endpoints JSON (GET, POST mínimo).
- Códigos de estado correctos.
- Documentar endpoints no README.
API testável com curl/Postman.
Fase 6 · 2h
Testes
- pytest: auth, CRUD, API, autorização.
- 10+ testes.
Suite de testes a passar.
Fase 7 · 1h
Deploy + apresentação
- Deploy (Render/Railway/Fly).
- README + demo 5 min.
URL público + repositório.
Critérios de avaliação
| Item | Peso |
|---|---|
| Autenticação segura | 15% |
| CRUD completo | 20% |
| Templates + herança | 10% |
| API REST | 15% |
| Autorização | 10% |
| Validação + segurança | 10% |
| Testes | 10% |
| Deploy | 5% |
| Git + README | 5% |
Reflexão
Em meia página: que camada foi mais difícil (auth, BD, API, frontend)? O que farias diferente na arquitectura? Como escalarias esta app para 10 000 utilizadores?