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.
| Module | Tables |
|---|---|
| identity | profile |
| content | post, media |
| social | follow, block, mute, reaction |
| safety | report, moderation_action, protection_event, audit_log |
| notifications | notification |
Notes de conception
profileétend la tableuserde Better Auth avec une relation un pour un, et porte les champs de modération : niveau de confiance, rôle, statut.media.statuspasse parpending, puisreadyoublocked. Rien n'est diffusé avant la fin du scan.report.cluster_idregroupe 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.
postporte deux références vers elle-même,reply_to_idetquote_of_id, pour les réponses et les citations.audit_logest 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.