My App
Architecture

Modèle de données

Les tables métier de Vantablvck, leurs relations et leurs index clés.

Les tables métier utilisent des identifiants ULID, triables dans le temps et adaptés à la pagination par curseur. Les tables de Better Auth conservent leurs propres identifiants.

Diagramme

Les modules du schéma

Le schéma est découpé par domaine dans packages/db/src/schema.

ModuleTables
identityprofile
contentpost, media
socialfollow, block, mute, reaction
safetyreport, moderation_action, protection_event, audit_log
notificationsnotification

Notes de conception

  • profile étend la table user de Better Auth avec une relation un pour un, et porte les champs de modération : niveau de confiance, rôle, statut.
  • media.status passe par pending, puis ready ou blocked. Rien n'est diffusé avant la fin du scan.
  • report.cluster_id regroupe les signalements d'un même acharnement coordonné, ce qui permet de les traiter ensemble.
  • L'index de la file de modération porte sur le triplet statut, priorité, ancienneté, car la file se lit comme une queue.
  • post porte deux références vers elle-même, reply_to_id et quote_of_id, pour les réponses et les citations.
  • audit_log est en append-only : toute action sensible y est écrite, jamais modifiée ni effacée.

Les identifiants ULID valent aussi comme curseur de pagination. Le fil d'actualité se pagine par curseur ULID, jamais avec OFFSET, qui s'effondre en quelques semaines d'usage.

On this page