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
| Tipo | Origem | Descricao |
|---|---|---|
comunicado | Comunicados | Quando um comunicado e publicado (status PUBLICADO) |
enquete_criada | Enquetes | Quando uma nova enquete e criada |
porta_voz_post | Porta-Vozes | Quando uma postagem e sincronizada (RSS) ou adicionada manualmente |
tarefa_aprovada | Projetos/Tarefas | Quando uma tarefa e aprovada pelo coordenador |
conquista | Conquistas | Quando um membro desbloqueia uma conquista |
evento_criado | Eventos | Quando um novo evento e criado |
membro_aprovado | Membros | Quando um novo membro e aprovado no nucleo |
Endpoints
Base URL: /api/feed
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| GET | /api/feed | Autenticado | Timeline paginada (scroll infinito) |
| POST | /api/feed/:id/like | Autenticado | Curtir item do feed |
| POST | /api/feed/:id/unlike | Autenticado | Descurtir item do feed |
| DELETE | /api/feed/:id | Admin | Remover 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 Item | Midia Suportada |
|---|---|
comunicado | fotoUrl (imagem) + videoUrl (YouTube embed) |
enquete_criada | fotoUrl (imagem) |
evento_criado | fotoUrl (imagem do evento, se houver) |
porta_voz_post | Embed nativo da plataforma (iframe) |
tarefa_aprovada | Sem midia (apenas texto) |
conquista | Icone da conquista |
membro_aprovado | Foto do membro (se disponivel) |
Renderizacao no Frontend
- Imagem (
fotoUrl): renderizada commax-h-64(256px de altura maxima),object-cover, com bordas arredondadas. - Video (
videoUrl— YouTube): renderizado como iframe embed comaspect-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).