Entrar como:FuncionalidadesDoc
Pular para o conteúdo
← Voltar para a visão geral
✅ ConcluídoCard #7g · M1.5

Portfólio Público + Evolução (Aula 1 vs 10)

Marco M1.5: Galeria Criativa & Portfólio (EAD Artes)

📅03 de agosto de 2026
👤Wellington Santiago (via ZCode)
🔧Commits: 7c2b1956549daa384a3592898957

📄 Documento de Execução — Card 7g: [M1.5] Portfólio Público + Evolução

Campo Valor
Card Trello [7g] [M1.5] Portfólio Público + Evolução
URL Trello https://trello.com/c/BKws9ABf
Marco M1.5 (Galeria Criativa & Portfólio)
Data execução 04/08/2026
Commits 7c2b195, 6549daa, 384a359, 2898957
Deploy DEV https://sistemaescolar.wellka.com.br

🎯 1. O que foi implementado

Página pública /portfolio/[slug] (sem login)

  • Qualquer pessoa acessa via URL (ex: /portfolio/joao-silva)
  • Mostra avatar, nome, curso, unidade, bio e grid de trabalhos aprovados
  • Cada trabalho: imagem + título + disciplina + data + curtidas + selos (Corrigido/Museu)
  • Estados: "não encontrado", "bloqueado (LGPD)", "sem trabalhos"
  • Footer com link GENIOON

Bloqueio LGPD (menores de 13 anos)

  • Se idade < 13 E sem consentPublicPortfolio dos pais → portfólio bloqueado
  • Apenas usuários logados da mesma filial podem ver
  • Retorna { blocked: true, reason: 'UNDERAGE_NO_CONSENT' }

Página /aluno/galeria/evolucao (logado)

  • Comparador lado a lado: 2 dropdowns para escolher trabalhos (início vs atual)
  • Linha do tempo: scroll horizontal de miniaturas cronológicas
  • Mostra progresso do aluno ao longo do curso

Botão "Minha Evolução" na galeria

  • Link para /aluno/galeria/evolucao no header do Mural da Turma

Procedures criadas

  • public.portfolio({slug}) — busca portfólio por slug (router público novo)
  • student.gallery.evolution({courseId?}) — timeline + agrupamento por disciplina
  • student.gallery.updatePortfolioBio({bio}) — atualiza bio + gera slug automático

Schema alterado

  • User.portfolioSlug String? @unique — slug da URL pública
  • User.portfolioBio String? — bio editável pelo aluno
  • Slug gerado do nome (remove acentos, coloca hifens, sufixo se colidir)

Fixes técnicos

  • middleware.ts: adicionado /portfolio às PUBLIC_PATHS
  • trpc/provider.tsx: httpBatchLink usa URL absoluta no SSR (fix erro 500)

✅ Critérios de aceite

# Critério Status
1 Página pública /portfolio/[slug]
2 Grid de trabalhos aprovados
3 Bio editável (procedure updatePortfolioBio)
4 Comparador de evolução (Aula X vs Y)
5 Linha do tempo de trabalhos
6 Bloqueio LGPD menores sem consentimento
7 Build + deploy DEV funcional

📁 2. Arquivos criados/modificados

Criados

Arquivo Função
src/server/trpc/routers/public.ts Router público (public.portfolio)
src/app/portfolio/[slug]/page.tsx Página pública do portfólio
src/app/(dashboard)/aluno/galeria/evolucao/page.tsx Comparador + timeline
src/styles/portfolio.module.css Estilos do portfólio

Modificados

Arquivo Mudança
prisma/schema.prisma User +portfolioSlug +portfolioBio
src/server/trpc/router.ts +publicRouter
src/server/trpc/routers/student.ts gallery +evolution +updatePortfolioBio
src/middleware.ts +/portfolio em PUBLIC_PATHS
src/lib/trpc/provider.tsx httpBatchLink URL absoluta SSR
src/app/(dashboard)/aluno/galeria/page.tsx +botão Minha Evolução

🚀 3. Deploy DEV

Health 200, Portfolio 200, Galeria 307 (auth). Build OK.

🎯 4. Próximo card

Card 7h — Ranking Top 3 Artistas do Mês — pódio visual + job diário.

← Voltar para a visão geral