Partilhar: WhatsApp
aulify · Mini-Projecto
UC UC04372 · T. Produção de Conteúdos I
Versão · Aluno

Mini-Projecto · Gerador de componentes interativos

Um CLI de scaffolding que gera componentes reutilizáveis a partir de um template, com testes e validação de segurança
⏱ Duração estimada: 25 horas (≈ 12 aulas) ↗ Referencial SNQ
Índice

Contexto

A "Interativa Lab", uma pequena produtora de conteúdos digitais para escolas, cria dezenas de componentes parecidos todos os meses: quizzes, galerias, vídeos comentados, enquetes. Cada novo componente demora horas a montar à mão, e os técnicos já copiaram e colaram a estrutura tantas vezes que aparecem pequenas diferenças entre ficheiros que deviam ser iguais.

Foste contratado/a para construir uma ferramenta de código generativo: um pequeno CLI que, a partir de um template e de um tipo de componente, gera automaticamente os ficheiros base (componente, teste e estilos), sempre consistentes, sempre com a mesma estrutura. Trabalhas individualmente ou a pares, entregando a ferramenta a funcionar mais um dossiê técnico (arquitetura, patterns usados, resultados dos testes).

Requisitos

Funcionais

Não-funcionais

Fases

Fase 1 · Desenho (3h) Escolher a linguagem (recomendado TypeScript ou JavaScript), desenhar a classe base ComponenteInterativo, escolher o design pattern e esboçar a estrutura de pastas do gerador.

Fase 2 · Classe base e componentes concretos (4h) Implementar ComponenteInterativo e pelo menos dois componentes concretos (Quiz, Galeria) que a estendem, demonstrando herança e polimorfismo através de um método comum (render()).

Fase 3 · Templates e gerador (6h) Criar os templates (ficheiro de componente, de teste e de estilos) e o script gerador que os preenche a partir do tipo e do nome recebidos. Implementar o design pattern escolhido para decidir que componente criar.

Fase 4 · Validação e segurança (4h) Implementar a função de validação de entradas: recusar nomes vazios, inválidos ou com conteúdo potencialmente perigoso (ex.: <script>). Garantir que qualquer dado inserido nos templates é escapado.

Fase 5 · Testes (4h) Escrever pelo menos três testes automáticos ao gerador: um caso normal, um caso de validação a falhar de propósito, e um caso de escaping de dados perigosos. Correr os testes e documentar os resultados.

Fase 6 · Dossiê e apresentação (4h) Escrever o dossiê técnico (arquitetura, pattern escolhido e porquê, resultados dos testes, limitações conhecidas) e apresentar o gerador em funcionamento à turma, gerando um componente ao vivo.

Critérios de avaliação

Critério Peso
Classe base, herança e polimorfismo corretos 20%
Design pattern implementado e bem justificado 15%
Gerador funcional (templates + scaffolding) 20%
Validação de entradas e segurança 20%
Testes automáticos ao gerador 15%
Dossiê e apresentação 10%

Erros comuns

Bónus (opcional)

Reflexão

No dossiê final, responde: que parte do teu gerador seria mais difícil de manter se não tivesses usado um design pattern? E: se um teste automático não existisse, que tipo de erro no gerador só se descobriria depois de já ter gerado dezenas de componentes errados?