Geek Social — Documentação
Banco de dados

ER Diagram

Visão geral completa do schema do banco — 28 tabelas e seus relacionamentos.

O schema completo é gerado automaticamente a partir do src/shared/infra/database/schema.ts usando drizzle-dbml-generator. O DBML completo está em /schema.dbml — cole no dbdiagram.io pra um diagrama interativo navegável.

ER completo (Mermaid)

Diagrama por domínio

Auth & sessão

Conteúdo (coleções e itens)

Vitrine (listings + offers + ratings)

Social (amizade + bloqueio)

Posts e feed

Chat

Notificações + presence + push

Steam imports + reports

Como o ER é regenerado

# No backend:
cd geek-social-api
npm run export:dbml        # gera dist/schema.dbml + dist/schema.json

# No docs:
cd geek-social-docs
npm run sync               # copia pra public/
npm run gen                # regenera tabelas auto-geradas

O DBML completo serve dois propósitos:

  • ER diagrams pro humano (este portal, dbdiagram.io, dbdocs.io)
  • Source of truth pra validação cruzada de schema vs migrations

Notas sobre relacionamentos

  • Self-reference em messagesmessages.reply_to_id aponta pra messages.id (sem cascade — preserva reply mesmo se a msg referenciada for deletada; UI mostra "mensagem deletada")
  • Polimorfismo em notifications.entity_id — não é FK; aponta pra UUID de tabelas variadas dependendo do type (ver tipos de notificação)
  • Polimorfismo em reports.target_id — idem, aponta pra users/messages/posts/collections/conversations dependendo de target_type
  • Sem FK em listing_ratings.rater_id/ratee_id — usa references() mas sem onDelete — preserva ratings se user deleta conta (precisa de tratamento especial no fluxo de delete)

On this page