API Reference: Feed

O Feed e o canal oficial do nucleo — nao e uma rede social. Ele agrega automaticamente conteudos relevantes de diversos modulos do sistema em uma timeline unificada.

Conceito

O feed nao permite postagens livres dos membros. Os itens sao criados automaticamente por outros modulos quando acoes relevantes acontecem. Isso garante que o feed seja um canal curado e oficial de comunicacao do nucleo.

Tipos de Conteudo

TipoOrigemDescricao
comunicadoComunicadosQuando um comunicado e publicado (status PUBLICADO)
enquete_criadaEnquetesQuando uma nova enquete e criada
porta_voz_postPorta-VozesQuando uma postagem e sincronizada (RSS) ou adicionada manualmente
tarefa_aprovadaProjetos/TarefasQuando uma tarefa e aprovada pelo coordenador
conquistaConquistasQuando um membro desbloqueia uma conquista
evento_criadoEventosQuando um novo evento e criado
membro_aprovadoMembrosQuando um novo membro e aprovado no nucleo

Endpoints

Base URL: /api/feed

MetodoEndpointPermissaoDescricao
GET/api/feedAutenticadoTimeline paginada (scroll infinito)
POST/api/feed/:id/likeAutenticadoCurtir item do feed
POST/api/feed/:id/unlikeAutenticadoDescurtir item do feed
DELETE/api/feed/:idAdminRemover item do feed

Criacao Automatica de Itens

Os itens do feed sao criados automaticamente pelos modulos correspondentes. Nao existe endpoint para criar itens diretamente no feed.

  • Comunicados: Ao publicar (status muda para PUBLICADO), um item e inserido no feed
  • Enquetes: Ao criar uma enquete, um item e inserido no feed
  • Porta-Vozes: Ao sincronizar (RSS automatico ou manual) ou ao admin adicionar postagem manualmente
  • Tarefas: Ao aprovar uma tarefa submetida por um membro
  • Conquistas: Ao desbloquear uma badge
  • Eventos: Ao criar um novo evento
  • Membros: Ao aprovar cadastro de novo membro

Embeds de Porta-Vozes

Itens do tipo porta_voz_post sao renderizados no feed como iframe nativo da plataforma de origem (Instagram, YouTube, Twitter/X). O frontend utiliza a URL de embed armazenada na postagem para renderizar o iframe diretamente no card do feed.


Foto e Video em Itens do Feed

Itens do feed podem incluir midia no campo JSONB conteudo:

Tipo do ItemMidia Suportada
comunicadofotoUrl (imagem) + videoUrl (YouTube embed)
enquete_criadafotoUrl (imagem)
evento_criadofotoUrl (imagem do evento, se houver)
porta_voz_postEmbed nativo da plataforma (iframe)
tarefa_aprovadaSem midia (apenas texto)
conquistaIcone da conquista
membro_aprovadoFoto do membro (se disponivel)

Renderizacao no Frontend

  • Imagem (fotoUrl): renderizada com max-h-64 (256px de altura maxima), object-cover, com bordas arredondadas.
  • Video (videoUrl — YouTube): renderizado como iframe embed com aspect-ratio: 16/9, largura 100%.
  • Embed de porta-voz: iframe nativo da plataforma (Instagram, YouTube, Twitter/X) com altura adaptavel.

Privacidade

Valores de Capixacoins NAO aparecem no feed. Feed items sao filtrados por nucleo_id(multi-tenant).