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

Mural da Turma (Feed + Curtidas + Comentários + Museu + Desafios)

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

📅03 de agosto de 2026
👤Wellington Santiago (via ZCode)
🔧Commits: 3b47cfef6f5d58

📄 Documento de Execução — Card 7f: [M1.5] Mural da Turma

Campo Valor
Card Trello [7f] [M1.5] Mural da Turma
URL Trello https://trello.com/c/5nBzky7y
Marco M1.5 (Galeria Criativa & Portfólio — EAD Artes)
Data execução 04/08/2026
Responsável Wellington Santiago (via ZCode)
Doc anterior Card 7e — Upload de Trabalho + Refazer
Próximo card Card 7g — Portfólio Público + Evolução
Commits 3b47cfe, 169fea3, 01adb27, 48116d9, f6f5d58
Deploy DEV https://sistemaescolar.wellka.com.br/aluno/galeria

🎯 1. O que foi implementado

O Mural da Turma — feed estilo Instagram onde os alunos veem trabalhos dos colegas da mesma unidade, curtem, comentam e salvam como inspiração. Esta é a tela principal da Galeria Criativa, o "coração" do M1.5.

Página /aluno/galeria com 5 abas

  • Feed: posts PUBLISHED da própria unidade (apenas moderados pelo professor)
  • Meus Trabalhos: posts do próprio aluno com status (PENDING/PUBLISHED/REJECTED)
  • Desafios: lista de Challenge ativos da unidade
  • Ranking: placeholder (será implementado no Card 7h)
  • Museu: vitrine dos trabalhos destacados pela direção (isFeatured=true)

Componente PostCard (estilo Instagram)

  • Avatar (iniciais do nome) + nome do autor + meta (disciplina/challenge/data)
  • Imagem grande do trabalho
  • Selo "Correção do Prof" dourado quando hasTeacherCorrection=true
  • Badge "Museu" quando isFeatured=true
  • Ações: Curtir (Heart, optimistic UI), Comentar (toggle thread), Salvar Referência (Bookmark)
  • Comentários inline com input para comentar

Filtros do Feed

  • Todas as Aulas — todos os posts da unidade
  • Aula X (dropdown dinâmico das disciplinas do aluno) — filtrar por subjectId
  • Melhores da Semana — ordenado por likeCount DESC + publishedAt nos últimos 7 dias

Procedures tRPC criadas (student.gallery)

  • feed({filter, subjectId?, cursor, limit}) — feed paginado com relações (student, subject, challenge, likes, savedBy)
  • detail({postId}) — post com comentários
  • toggleLike({postId}) — curtir/descurtir (incrementa/decrementa likeCount)
  • comment({postId, content, parentId?}) — comentar/responder (incrementa commentCount)
  • toggleSave({postId, note?}) — salvar/remover referência (incrementa/decrementa saveCount)
  • museum({cursor, limit}) — posts isFeatured=true da unidade
  • challenges({courseId?}) — desafios ativos da unidade
  • mySubjects() — disciplinas do aluno (para filtro)

Navegação

  • Item "Galeria" adicionado ao top-nav do StudentShell (desktop) → /aluno/galeria
  • i18n: student.nav.gallery adicionado nos 3 idiomas

Moderação (decisão #17)

  • Feed SÓ mostra posts status=PUBLISHED (professor aprovou)
  • Posts PENDING só aparecem na aba "Meus Trabalhos" do próprio autor
  • Posts REJECTED mostram o motivo para o autor

✅ Critérios de aceite validados

# Critério Status
1 Feed principal estilo Instagram (posts da unidade)
2 Abas (Feed/Meus Trabalhos/Desafios/Ranking/Museu)
3 Curtir/descurtir trabalhos (optimistic UI)
4 Comentar e responder comentários
5 Salvar como referência (bookmark)
6 Selo 'Correção do Prof' destacado
7 Filtros (Todas/Aula X/Melhores da Semana)
8 Museu da unidade (destaques da direção)
9 Galeria no menu do StudentShell
10 Build passa + deploy DEV funcional

📁 2. Arquivos criados/modificados

Criados

Arquivo Função
src/app/(dashboard)/aluno/galeria/page.tsx Página principal com 5 abas
src/components/gallery/PostCard.tsx Card estilo Instagram (avatar, imagem, ações)
src/styles/gallery.module.css Estilos completos (tabs, filtros, postCard, museu, desafios)

Modificados

Arquivo Mudança
src/server/trpc/routers/student.ts +8 procedures gallery (feed, detail, toggleLike, comment, toggleSave, museum, challenges, mySubjects) + import Prisma namespace + Prisma.GalleryPostWhereInput
src/components/layout/StudentShell.tsx +item "Galeria" no top-nav
messages/{pt-BR,en-US,es-ES}.json +student.nav.gallery

🔌 3. Handoff para o próximo card (7g)

Procedures disponíveis

  • student.gallery.feed — pronto (com paginação cursor)
  • student.gallery.myPosts — pronto (aba Meus Trabalhos)
  • student.gallery.detail — pronto (comentários + correção)
  • student.gallery.museum — pronto (Museu)
  • student.gallery.challenges — pronto (Desafios)

O que o próximo card (7g) precisa fazer

  • Página pública /portfolio/[slug] (sem auth)
  • Comparador de evolução (Aula 1 vs Aula 10)
  • Bloqueio LGPD (<13 sem consentimento)
  • Procedure public.portfolio({slug})

📋 4. Deploy DEV

  • Build: ✓ Compiled successfully (local + VPS)
  • pm2 restart: online
  • Smoke test: Health 200, Galeria 307 (redirect auth), Doc 200

🎯 5. Próximo card

Card 7g — Portfólio Público + Evolução (Aula 1 vs 10) — a página pública /portfolio/[slug] + comparador de evolução + bloqueio LGPD.

← Voltar para a visão geral