Postgres
Eine Postgres-Datenbank pro Service — schema-isoliert, mit Drizzle-Migrationen, keine geteilten Tabellen.
Jeder Service besitzt seine eigene Datenbank. Nicht ein gemeinsames
Schema mit Foreign-Keys über Service-Grenzen, sondern wirklich
17 unabhängige Postgres-Instanzen — oder genauer: 17 Datenbanken, die
sich einen Postgres-Cluster teilen, aber per pgSchema voneinander
isoliert sind und über ihre eigene Credential-Wand sprechen.
Warum nicht eine große Datenbank? Weil ein Service-Refactor dann nicht „eine Spalte hinzufügen” wäre, sondern „die ganze Welt updaten”. Weil ein Service-Ausfall dann alle anderen mitreißen würde. Weil ein Backup-Restore dann eine politische Frage wäre.
Wer einen Service löscht, löscht eine ganze DB. Das ist die direkte Konsequenz aus dem Service-Per-Repo-Pattern. Die DSGVO-Auskunft pro Mitglied läuft über mana-admin und stellt eine Anfrage an jede relevante Service-DB einzeln.
Migrations: Drizzle-Migrationen, pro Service versioniert, beim
Container-Start automatisch angewendet (Pattern aus
MIGRATIONS_BOOTSTRAP.md). Wer den Container neu deployed, hat nach
30 Sekunden die neuen Spalten.
PostGIS: Die Plant-Datenbank von Herbatrium und der Geo-Service nutzen die PostGIS-Erweiterung — eigene Container, eigene Volumes.
Konsumenten
Plattform-Services, die hier aufsitzen
Diese Services nennen Postgres in ihrem Infrastruktur-Frontmatter — sie sind direkt von diesem Baustein abhängig.
- mana-authIdentität, Sessions und JWKS für alle Vereins-Apps — eine Anmeldung, lokale Token-Verifikation, kein Cloud-Auth-Anbieter.
- mana-meUser-globale Profil-Referenzen — welches Foto ist gerade dein Gesicht, welches dein Körper, über alle Apps hinweg.
- mana-creditsDie Geldbörse der Plattform — Mana-Guthaben, Stripe-Brücke, Buchhaltung, 2-Phase-Debit über alle Apps.
- auraPrivater Anerkennungs-Ledger für Beiträge zum Ökosystem — sechs Botanik-Ränge, kleine reale Geschenke, kein Leaderboard.
- xpGeplantes Lern- und Kompetenz-Backbone der Plattform — Skill-XP pro App, neun Intelligenz-Domains, globaler Level, opt-in-Portfolio.
- mana-shareFöderations-Drehscheibe für Cross-App-Datentransfers — App-Manifeste, Routing, Retry-Queue, Audit-Log.
- mana-linksDeep-Link-Resolver — Apps registrieren ihre URI-Schemata, andere verlinken stabil quer durch das Ökosystem.
- mana-eventsPlattform-Pub/Sub — Topic-basiertes Event-Bus mit At-least-once-Delivery, DLQ und Wildcard-Subscriptions.
- mana-mediaObjekt-Speicher für alle Vereins-Uploads — S3-kompatibles MinIO im Eigenbetrieb, Buckets pro App.
- mana-syncEvent-Store-Server für die Event-Sourced-Plattform — Append-only Event-Log pro User pro App, JWT-Auth via mana-auth.
- mana-presenceLive-State + SSE-Fanout — was läuft gerade auf welchem Gerät, bidirektional zwischen Phone und Web.
- mana-mailTransaktionale Email für die ganze Plattform — Welcome, Passwort-Reset, Spendenbescheinigung, alles über Vereins-Stalwart.
- mana-news-poolGeteilter RSS/JSON-Feed-Pool — kuratierte Quellen, die alle Apps gemeinsam lesen können.
- mana-adminVereins-Backoffice — Mitglieder, Spenden, DSGVO-Fan-out, Einladungen, Aura-Ledger und Gift-Versand in einem Werkzeug.
Was Postgres für den Verein verkörpert
- DatensouveränitätVerwahrer statt Eigentümer.
- LanglebigkeitBewährte Stacks, gute Doku.
- EigenbetriebEigene Infrastruktur, quelloffener Stack.
- OffenheitCode und Mittelverwendung öffentlich.
Weitere Infrastruktur dieser Art
Selbst betriebener Dienst — Container auf Vereins-Hardware, statt SaaS-Vertrag.
- ForgejoEigenes Git-Hosting für alle Vereins-Repos — Quellcode, Issues, Pull-Requests.
- VerdaccioEigene npm-Registry für die @mana/*-Pakete der Plattform.
- StalwartEigener Mail-Server für transaktionale Emails und Vereins-Korrespondenz — SMTP, IMAP, JMAP.
- MinIOS3-kompatibler Object-Storage für alle Vereins-Dateien — Buckets pro App, Signed URLs mit Ablauf.
- RedisCache, Session-Store und BullMQ-Worker-Queues — klein, schnell, dort wo Postgres zu schwerfällig wäre.
- CloudflaredDer einzige Außen-Tunnel — auf dem Mac Mini stehen null Ports offen, alle Anfragen kommen verschlüsselt durch den Tunnel rein.
Postgres ist ein Baustein der Vereins-Infrastruktur — eine von drei Schichten unter den Plattform-Services und Apps.