Geek Social — Documentação
Módulos

Posts & Feed

Posts manuais + item_share automáticos, comentários, reações temáticas, feed cronológico.

Visão geral

Posts são unidades de feed do Geek Social. Há dois tipos:

  • manual — criado pelo usuário com texto + mídia opcional
  • item_share — criado automaticamente quando o user adiciona item numa coleção com auto_share_to_feed=true

O feed mostra posts dos amigos + próprios + públicos, respeitando posts.visibility e filtrando user_blocks em ambas as direções.

Posts têm comentários (planos, sem aninhamento), reactions temáticas (gamer-themed: ⚡epic, 💥critical, 💎loot, 🎯gg, ⚡power_up), e múltiplas mídias em galeria.

Entidades principais

TabelaPapel
postsContainer do post
post_mediaMídia anexada
post_commentsComentários
post_reactionsReações com tipos fixos

Endpoints

15 endpoints distribuídos em 4 sub-módulos:

Posts (em /posts): create, get, update, delete, add media, remove media (6).

Comments (em /posts/:postId): add, list, update, delete (4).

Reactions (em /posts/:postId): react, remove, list (3).

Feed (em /feed e /users/:userId/posts): get feed do user, posts no perfil de outro (2).

Fluxos

Criar post manual com mídia

Item_share automático

Feed com privacy + blocks

Reagir / trocar reação

Comentar (sem threads)

Eventos de socket

EventoQuando
notification:new (post_comment)Comentário novo no seu post
notification:new (post_reaction)Reação nova no seu post

Posts em si não geram eventos próprios — feed é poll-based via REST. Considerar futuramente: emit feed:new-post pra friends online.

Edge cases e regras especiais

  • Post sem content nem mídia — proibido pelo controller (mas content é opcional no schema)
  • Item_share preserva mesmo se item deletado — não. Cascade delete derruba (item_id é FK com cascade)
  • Editar post: apenas autor; updated_at é setado, UI mostra "editado"
  • Editar comentário: apenas autor edita; mas dono do post pode deletar (moderação leve)
  • Post private: só o autor vê. Strange use case mas suportado (talvez "rascunho público no futuro")
  • Reaction de tipo único por user/post — trocar tipo é UPDATE; remover é DELETE
  • Soft delete de post: não há. DELETE é hard, cascateia comments/reactions/media. Arquivos S3 ficam órfãos (pendência geral)
  • Feed performance: índice posts_visibility_created_at_idx favorece queries de feed; mas feed cresce — paginação é mandatória
  • visibility=friends_only vs users.privacy=friends_only — granulares e independentes; user pode ter perfil público e post friends_only

Dependências entre módulos

  • Friends — visibility gating
  • Items / Collections — origem dos item_share posts
  • Notifications — post_comment, post_reaction
  • Storage — uploads de mídia
  • Reports — posts e comments podem ser denunciados (target_type=post|comment)

On this page