Roadmap
O que já está pronto e o que vem pela frente — features, moderação, arquitetura.
Status atual do projeto + features e melhorias planejadas. Atualizado conforme entregamos coisa nova.
Sumário
- Estado atual — tudo que já está implementado
- Próximas features — o que vem por aí no produto
- Plataforma de admin — moderação, painéis, auditoria
- Conformidade e segurança — LGPD, idade mínima, AI moderation
- Ajustes de arquitetura — reorganização técnica
- Cronograma sugerido
Estado atual
Tudo que está rodando hoje (referências cruzadas com a documentação técnica):
✅ Autenticação e identidade
- Email/senha com bcrypt (cost 12) + refresh token rotation
- Google OAuth via OpenID Connect (vincular/desvincular)
- Recuperação de senha por e-mail (token single-use, TTL 1h)
- Troca de senha autenticada + definição inicial de senha (após OAuth)
- Cookies HttpOnly + Secure + SameSite
- Exclusão de conta com cascade total (irreversível)
- 📖 Módulo Auth · Conceito
✅ Perfil e privacidade
- Perfil rico: bio (10k chars), birthday, interests, pronouns, location, website
- Avatar + capa + fundo de perfil (imagem OU cor sólida)
- Privacy granular: perfil (
public/friends_only/private),show_presence,show_read_receipts - Search de usuários por nome/e-mail
- 📖 Módulo Users
✅ Social
- Sistema de amizades simétrico com fluxo de pedido/aceite (auto-aceite em interesse mútuo)
- Bloqueio direcional com cascade (desfaz amizade, desconecta chat, esconde conteúdo)
- 📖 Módulo Friends
✅ Coleções e items
- Coleções tipadas (
games,books,cardgames,boardgames,custom) - Schema dinâmico por coleção (campos custom configuráveis)
- 50+ field definitions de sistema seedadas (Plataforma, Gênero, Status, etc.)
- Items com fields JSONB + rating + comment + cover
- Filtros dinâmicos na listagem (por field, range, sort customizável)
- Cursor pagination
- Lista global de itens cross-coleção com filtro por coleção, busca e ordenação
- Dashboard de coleções — gráficos de itens por tipo, breakdown de campos, classificações por estrelas, jogos zerados por ano (Chart.js, tabs por tipo)
- Integração IGDB — busca de jogos com preenchimento automático de nome, capa, gênero, plataforma e desenvolvedor (token caching, mapeamento EN→PT)
- 📖 Módulo Collections+Items
✅ Feed e posts
- Posts manuais com texto + mídia (galeria)
- Posts
item_shareautomáticos quando coleção temauto_share_to_feed - Reactions temáticas (power_up, epic, critical, loot, gg)
- Comentários planos (sem aninhamento)
- Visibility por post (
public/friends_only/private) - Feed cronológico filtrado por amizade + blocks
- 📖 Módulo Posts/Feed
✅ Chat
- Conversas DM 1-1 + grupos (com roles owner/admin/member + permissions)
- DM Requests entre não-amigos (caixa "Solicitações")
- Mensagens texto, áudio (com waveform), vídeo, imagem, arquivo
- Reactions livres com emoji, replies, forward (até 20 destinos)
- Calls 1-1 (vídeo/áudio) via WebRTC com sinalização Socket.IO
- Modo Snapchat per-user (mensagens efêmeras com cleanup cron)
- Read receipts respeitando
show_read_receipts - Mute, archive, hide per-conversation
- 📖 Módulo Chat
✅ Criptografia E2E (DMs)
- Signal Protocol completo — X3DH (handshake assíncrono) + Double Ratchet (chave por mensagem)
- PreKeys publicadas no servidor (até 100 one-time prekeys por usuário)
- Forward secrecy + post-compromise security garantidos pelo Double Ratchet
- Backup cifrado de chaves com versionamento (counters SPK/Kyber)
- Auto-retry com repair throttle + botão "Tentar novamente" no bubble de erro
- Cache de plaintext para mensagens próprias (evita re-decrypt no reload)
- Escopo: DMs 1-1; grupos continuam em texto plano (MLS fora do escopo atual)
✅ Vitrine (marketplace)
- Listings com status (
active/paused/closed) + auto-rejeição de offers em close - Offers tipo
buy(dinheiro) outrade(item por item) - Counter-propostas via
offer_proposals(apenas 1 pending por offer) - Dual confirmation antes de transferir + auto-criação de coleção destino
- Auto-expiração 7 dias após accepted sem confirms
- Avaliações imutáveis pós-transação com threshold de visibilidade (
MIN_RATINGS=3) - 📖 Listings · Offers · Ratings
✅ Steam Integration
- Vínculo via OpenID 2.0
- API key per-user pra chamadas autorizadas
- Importação de games em batch via pg-boss (workers
import-game+enrich-game) - Throttle de
appdetailspra respeitar rate limit Steam - Finalização atômica (race-free) via
import_batch_finalized - 📖 Módulo Steam
✅ Notificações
- Persistência + entrega real-time via Socket.IO
- Web Push (VAPID) pra notificação fora do app
- 23 tipos de notificação (sociais, vitrine, propostas, ratings, Steam, eventos)
- 📖 Módulo Notifications
✅ Rolê (Eventos)
- Encontros entre usuários — presencial (com endereço) ou online (com link de reunião)
- Visibilidade híbrida (
public/friends/invite) com tabela de convites materializada - Inscrição com lista de espera + auto-promoção quando alguém sai
- Detecção de conflito de horário via
tstzrange(sobreposição de intervalos) - Lembretes automáticos T-48h (com ação
Confirmar/Sair) e T-2h (ping) via pg-boss - Edição de campos sensíveis dispara notificação pros inscritos; conflitos pós-edição alertados
- Cron horário finaliza eventos passados (
status=ended) - 📖 Módulo Events
✅ Comunidades (estilo Orkut)
Espaços temáticos que reúnem pessoas em torno de um interesse (gênero, jogo específico, hobby de colecionador).
- Criar comunidade com nome, slug, descrição, capa, ícone, categoria (15 categorias) e visibilidade
- Visibilidade: pública (entrar direto) ou restrita (requer aprovação)
- Roles de membro: owner, moderador, member
- Status de membro: active, pending, banned
- Pedidos de entrada: aprovar / rejeitar (owner ou moderador)
- Gestão de membros: promover/rebaixar moderador, banir/desbanir, kick
- Tópicos — posts dentro da comunidade com reactions + comentários, pinned/locked (infra pronta no schema)
- Slug auto-suffix atômico em colisão (transação)
- Audit log de todas as ações de moderação (
community_audit_log) - Soft delete de comunidade (somente owner)
- Tópicos de comunidade não aparecem no feed global
- 📖 Módulo Communities
✅ Reports e moderação admin
- Denúncias em 5 superfícies (user, message, post, collection, conversation)
- 5 razões (spam, harassment, nsfw, hate, other)
- Painel admin live em
geeksocialadmin.homelab-cloud.com(restrito por CIDR) - Dashboard com KPIs: usuários, reports pendentes, conteúdo sinalizado
- Moderação de usuários: banimento, suspensão, força logout, reset de senha
- Feature flags — tabela
feature_flags, toggle em runtime via painel, rollout percentual - Audit log de ações de moderação (
admin_audit_log) com actor + alvo + metadata JSONB - Painel de reports com ações por tipo de alvo e gráfico de severidade
- 📖 Módulo Reports
✅ Realtime + infra
- Socket.IO no mesmo HTTP server do Fastify
- 20+ eventos socket (notifications, chat, presence, calls, imports)
- pg-boss queue persistida no PG pra jobs assíncronos
- 📖 Conceito Realtime · Eventos socket
✅ Deploy em produção
- Stack Docker Compose completa em VPS dedicada
- nginx-proxy com SSL automático Let's Encrypt (certbot) para todos os subdomínios
- Subdomínios: app · api · admin · docs · minio · keycloak
- Pipeline de sync
geek-sync(GitHub → SSH sem token exposto) - Usuário admin criado + Feature Flags seedadas na inicialização
✅ Documentação
- Portal Fumadocs self-hosted em
geeksocial.doc.rafaelmarquesdev.com(domínio público, sem VPN) - API Reference auto-gerada de Zod schemas (143+ endpoints)
- Sandbox interativo Scalar embedado em cada endpoint
- Dicionário de banco com 28 tabelas + ER diagrams Mermaid
- Filosofia, conceitos, tutoriais, frontend, operations
- Módulos completos: Events (11 endpoints), Communities (18 endpoints), Integrations (IGDB)
- 📖 Você está nele
Próximas features
Em ordem aproximada de prioridade.
🚧 Recomendações no feed (algoritmo de ranking)
Hoje o feed é cronológico simples. Migrar pra ranking inteligente que mistura recência + afinidade + engajamento.
Abordagens possíveis (a pesquisar e decidir):
- Collaborative filtering — "users que curtiram o que você curtiu também curtiram X"
- Matrix factorization (SVD, ALS)
- Item-based similarity
- Cold start: novos users sem histórico → fallback cronológico
- Content-based — usa embeddings dos itens/posts pra rankear por similaridade ao histórico
- Tags, categorias, conteúdo de bio
- Vector store (pgvector já no Postgres)
- Hybrid — combina os dois pesos
- Engagement-based (mais simples) — pondera por:
- Recência (decay temporal)
- Reações/comments (mais engajamento → maior score)
- Afinidade com autor (interagiu antes? amigo? mesma comunidade?)
- Diversidade (não saturar com 1 só pessoa)
Provável caminho inicial: heurística simples (engagement + decay + afinidade) → coletar métricas → eventualmente migrar pra ML formal.
Considerações:
- Calcular ranking sob demanda (custo por request) ou pré-computar (job recorrente)?
- pgvector pra embeddings semânticos vale a pena? (depende do volume)
- A/B testing infra (a planejar — usa feature flags do roadmap abaixo)
📋 Pesquisa antes: revisão de papers + benchmark de complexidade vs ganho.
🚧 Melhorar lista de amigos
Hoje a lista é simples (nome + avatar). Melhorias planejadas:
- Status online (já temos
presence, falta integrar visualmente) - Last interaction — última conversa/comment/reaction
- Filtros — online agora, amigos novos (últimos 30 dias), favoritos
- Pin/favoritar amigos pra topo da lista
- Categorias — "Família", "Trabalho", "Gaming" (tags por usuário, não compartilhadas)
- Atividades recentes — preview de últimos posts/coleções relevantes do amigo
- Aniversários — destaque pros que fazem aniversário hoje/semana
- Sugestões — "amigos de amigos" (pode usar mesmo algoritmo do feed recomendação)
Decisões pendentes:
- Categorias/tags são per-user (privadas) ou colaborativas?
- Notificação de aniversário automática (já no roadmap em Tutorial: tipo de notificação)?
Plataforma de admin
O painel administrativo está live em produção em geeksocialadmin.homelab-cloud.com (restrito por CIDR). Segue o que está implementado e o que ainda está no backlog.
✅ Painel administrador (implementado)
Acesso restrito por role (users.role = 'admin'):
Dashboard principal
- Total de usuários cadastrados
- Reports pendentes por severidade (gráfico)
- KPIs de saúde da plataforma
Moderação de usuários
- Buscar user por email/displayName/ID
- Banir — flag
users.banned_at+ motivo + auto-logout (revogar refresh tokens) - Suspender —
users.suspended_until(data) — login bloqueado temporariamente - Reativar — limpar flags de ban/suspensão
- Forçar logout — revogar todos refresh_tokens
- Forçar reset de senha — invalidar password_hash, mandar e-mail de reset
Gerenciar reports
- Lista de reports pendentes com filtro por tipo de alvo
- Ações por targetType (user, post, message, collection, conversation)
- Gráfico de severidade com dados reais
- Histórico de denúncias por target/reporter
Itens ainda no backlog (incompletos):
- Busca avançada de conteúdo (posts/coleções/mensagens denunciadas)
removed_by_adminsoft delete com motivo + restauração- Erros recentes (5xx, exceções) no dashboard
✅ Sistema de audit log (admin actions)
Tabela admin_audit_log — registra todas as ações administrativas:
admin_audit_log
├── id, admin_id, action, target_type, target_id
├── metadata JSONB
└── created_atEventos logados: ban, unban, suspend, unsuspend, force-logout, force-reset-password, report-dismiss, report-resolve
Pendente: audit log de ações do usuário comum (user_activity_log — login, mudança de senha, etc.)
🚧 Conformidade LGPD
- Direito ao esquecimento: já implementado via
DELETE /users/me - Portabilidade: endpoint pra exportar dados pessoais (
GET /users/me/export)- JSON com perfil, coleções, items, posts, comentários, mensagens, offers
- Bundle ZIP com mídia incluída?
- Consentimento: termos no signup (UI implementada; texto pendente revisão jurídica)
- Direito de acesso: log de quem acessou meus dados (admin queries no audit_log)
- Correção: já coberto pelos endpoints de update
- Notificação de breach: protocolo definido (ainda não há infra)
- DPO: identificar responsável + canal de contato
🚧 Moderação de imagem e vídeo (anti-CSAM, conteúdo proibido)
Crítico pra evitar uso da plataforma pra crimes. Opções:
- Hash matching com bases públicas
- PhotoDNA (Microsoft, gratuito pra non-profits)
- NCMEC hash list (CSAM identification)
- Funciona com mídia já catalogada por autoridades
- AI vision — modelos que detectam conteúdo NSFW/violento
- AWS Rekognition (pago, mas barato por imagem)
- Google Vision SafeSearch (pago)
- Open source: NSFW Detection (CLIP-based, self-host)
- Manual review queue — toda mídia uploadada passa por aprovação humana antes de ficar pública
Recomendação inicial: combinação 1 + 2.
- Hash matching automático no upload (bloqueia + reporta NCMEC se match positivo)
- AI vision pra flag de NSFW (não bloqueia, mas marca pra review do admin + esconde de minors)
- Manual review apenas pra reports
✅ Feature flags (implementado)
Habilitar/desabilitar recursos sem deploy:
- Tabela
feature_flags(key, enabled, rollout_percentage, target_user_ids) - Service
FeatureFlagsService.isEnabled(flag, userId)no backend - Toggle em runtime via painel admin (sem deploy)
- Flags seedadas na inicialização da plataforma
- Middleware frontend esconde UI de features desabilitadas
🚧 Verificação de idade (16+)
Plataforma exclusiva pra maiores de 16 anos. Como verificar de forma barata e razoável (sem rodar serviços caros tipo Veriff)?
Opções por custo crescente:
- Self-declaration + birthday no signup
- Usuário declara idade; legal disclaimer ("falsa declaração responsabiliza o usuário")
- Já parcialmente implementado (
users.birthdayexiste; falta gate no signup) - Custo: 0
- Confiabilidade: baixa (qualquer um mente)
- Verificação por documento apenas em flags (perfil reportado)
- User suspeito é forçado a enviar foto de documento + selfie
- Admin valida manualmente
- Custo: tempo do admin
- Provas de idade via cartão de crédito (verificação emissor)
- Razoável em adultos; minors raramente têm
- Cartão precisa coincidir com nome do user
- Custo: gateway de pagamento (Stripe/Pagar.me — taxa por verificação)
- Identidade digital governamental (Gov.br no Brasil)
- Confiável, "barato"
- User precisa ter conta gov.br
- Custo: integração técnica + UX cara
- Provedores de verificação especializados (Veriff, Onfido, Stripe Identity)
- Caro
- Best UX
Recomendação: começar com (1) self-declaration + disclaimer + check de birthday + (2) escalada manual em reports quando houver suspeita. Caro/complexo só se tiver problema concreto.
🚧 Moderação via AI
Augment a moderação humana com modelos pre-treinados:
Texto:
- Detecção de toxicidade (Perspective API ou models open-source tipo Detoxify)
- Detecção de hate speech / insulto
- Detecção de threats / harassment
- Auto-flag mensagens/comentários acima de threshold pra review
Imagem:
- NSFW detection (já mencionado acima)
- Violência / armas
- Texto em imagem (OCR + análise — anti-spam)
Combina com flags humanas:
- AI flag → fila de review do admin
- Admin valida ou rejeita o flag
- Modelo aprende com decisões humanas (active learning)
Fica pra fase tardia — quando tivermos volume que justifique.
Conformidade e segurança
Itens cross-cutting já mencionados acima, agrupados:
- ✅ Erros tipados (já implementado)
- ✅ Cookies HttpOnly/Secure (já)
- ✅ bcrypt + sha256 (já)
- ✅ Rate limiting backend (
@fastify/rate-limit+ Redis — auditoria OWASP round 1) - ✅ Helmet headers (CSP, HSTS, X-Frame-Options, Referrer-Policy — auditoria OWASP round 1)
- ✅ Audit log de ações admin (descrito acima)
- ✅ Criptografia E2E para DMs (Signal Protocol — descrito em Estado atual)
- 🚧 Audit log de ações do usuário comum (login, senha, privacy)
- 🚧 Signed URLs S3 pra mídia private
- 🚧 Criptografia at-rest pra
steam_api_keyem DB - 🚧
npm auditem CI + Dependabot - 🚧 Pen testing (terceirizar quando chegar a fase comercial)
- 🚧 LGPD compliance check (descrito acima)
Ajustes de arquitetura
🚧 Reorganização de módulos do backend
Hoje a estrutura é razoável mas tem inconsistências históricas. Reorganizar pra:
- Tudo de um domínio em um único módulo — facilita encontrar
- Cada módulo auto-contido com routes + controller + service + repo + schema + types
- Sub-módulos quando faz sentido (ex:
posts/comments,posts/reactions,posts/feedpoderiam ser explícitos)
Inconsistências atuais:
posts/tem comments, reactions, feed misturados (poderia serposts/posts.*,posts/comments.*,posts/reactions.*,posts/feed.*— JÁ ESTÁ ASSIM, mas a relação não está documentada bem)chat/tem conversations, messages, dm-requests, push, presence — todos juntos. Considerar splitar emchat/conversations,chat/messages, etc.?integrations/steam/é o único integration; quando vier mais (Discord? Twitch?) precisa de pastaintegrations/<provider>/consistente- Tabelas no
schema.tsúnico de 400+ linhas — considerar splitar por domínio (schema/auth.ts,schema/chat.ts, etc.) e re-exportar
Plano de refator:
- Catalogar a estrutura atual — diagrama de quem importa de quem
- Identificar acoplamentos cross-module ruins (imports diretos entre módulos)
- Mover gradualmente — 1 módulo por PR, com testes passando
- Atualizar docs — caminhos em tutoriais e módulos
Risco: refator grande sem ganho funcional. Fazer em momento de baixo throughput de features novas.
📋 Sub-projeto dedicado — não fazer parcial.
Outras melhorias técnicas no backlog
Observability + Monitoring
- Prometheus + Grafana + Loki + Jaeger (descrito em Observability)
- GlitchTip pra exception tracking
- Dashboards de KPIs de produto (não só de infra)
Performance
- Particionamento de
messagespor mês (quando volume crescer) - Materialized views pra reputação (cache de
count + avgemlisting_ratings) - Read replica de Postgres pra queries pesadas
- CDN na frente do MinIO (Cloudflare)
- Service worker do frontend com cache mais agressivo de imagens
Testes
- Cobertura threshold no CI
- Playwright pra E2E do frontend
- Performance tests com k6
- Mutation testing (Stryker)
DX (developer experience)
- Faker.js factories pra fixtures de dev (não seeds checked-in)
- Hot reload mais rápido (já bom com
tsx watch, mas pode melhorar) - Storybook ou Histoire pro frontend? (talvez não precisar)
Mobile
- App nativo (React Native ou Tauri?) — out of scope no curto prazo
- PWA já cobre o caso "instalar como app"
Outros recursos de produto
- Seguir alguém sem ser amigo (similar ao Twitter follow)
- Stories (24h) — tipo Instagram
- Eventos / Calendário compartilhado entre amigos
- Wishlist pública (já tem rascunho mencionado em tutorial)
- Importação de outras plataformas (Goodreads pra livros, BoardGameGeek pra board games, RetroAchievements)
Cronograma sugerido
Ordem de execução proposta (cada bloco = sub-projeto com spec própria + plano + execução):
Próximas 1-2 sessões (curto prazo)
- Lista de amigos melhorada — UX win rápido (status online, filtros, favoritos)
- Comunidades: notificações + cross-post — completar loop social das comunidades
- LGPD: portabilidade (export) — endpoint
GET /users/me/exportcom bundle ZIP
Médio prazo
- Comunidades: chat próprio + eventos da comunidade
- Audit log self-service do usuário (
GET /users/me/activity-log) - Verificação de idade (self-declaration + gate no signup)
- Moderação AI básica (texto via Perspective API ou Detoxify)
Longo prazo (requer pesquisa/spec extensa)
- Feed com recomendações — após coletar dados de engajamento
- E2E em grupos — MLS (RFC 9420), muito mais complexo que DMs
- Moderação de mídia (NCMEC + AI vision)
- Refator de arquitetura backend — quando o volume de features novas baixar
Paralelo, qualquer momento
- Observability stack completa (Loki + Prometheus + Jaeger + GlitchTip)
npm auditem CI + Dependabot automático
Como contribuir com este roadmap
- Brainstorm — usar a skill
brainstormingantes de codar qualquer item ⚠️ - Spec — escrever em
docs/superpowers/specs/YYYY-MM-DD-<feature>-design.md - Plano —
docs/superpowers/plans/ - Execute — sessão dedicada com TDD onde aplicável
- Documente — adicione/atualize páginas em
geek-social-docs - Atualize este roadmap — move o ✅ pra "Estado atual" + remove de "Próximas"
A documentação é parte do produto — mudanças de feature só consideram-se prontas quando os docs refletem.
Histórico de releases
Tracking aproximado de quando cada bloco entrou:
| Período | Marcos |
|---|---|
| Sessão 2026-04-23 | Amigos + privacidade · Chat tempo real · Coleções+Items · Feed+interações · Frontend |
| Sessão 2026-04-24 | E2E tests |
| Sessão 2026-04-26 | Chat áudio · Chat privacidade · Steam integration · Vídeo call 1-1 |
| Sessão 2026-04-27 | Chat temporário · Forward/share/download · Google OAuth · Coleção cross-user · Perfil expandido |
| Sessão 2026-04-28 | Vitrine completa (listings + offer_proposals + ratings) · Keycloak removido · Cor sólida capa/fundo · Excluir conta |
| Sessão 2026-04-29 | Portal de documentação completo (681 páginas) |
| Sessão 2026-05-01 | Comunidades — CRUD, membros, moderação, tópicos, join-requests, audit log |
| Sessão 2026-05-03 | Painel admin + Feature Flags + Audit log · Criptografia E2E (Signal Protocol) · Auditoria OWASP (rate limiting + Helmet) · Rolê (Eventos) · Deploy em produção com SSL |
| Sessão 2026-05-04 | Integração IGDB · Dashboard de coleções (Chart.js) · Lista global de itens com filtros · Docs em domínio público · Mermaid v11 fix em 8 módulos · Módulos Events + Communities na doc |