e.V.
Services · Echtzeit · Live
P

mana-presence

Live-State + SSE-Fanout — was läuft gerade auf welchem Gerät, bidirektional zwischen Phone und Web.

Ersetzt
Pusher, Ably, eigene WebSocket-Server pro App
Was er tut

mana-presence beantwortet eine Live-Frage: „Welche App läuft gerade auf welchem Gerät dieser Person?”. Moodlit nutzt das, um die Stimmung zwischen Phone und Web bidirektional zu spiegeln; Mukke, um „welcher Song läuft jetzt” auf allen Geräten zu zeigen; Memoro, um zu signalisieren „eine Aufnahme läuft gerade auf dem iPhone”.

Was gespeichert wird: (user_id, app_id) → payload als opake JSON- Struktur, max 16 KB. Server-Sent-Events liefern Updates in Echtzeit an alle anderen Geräte. Letzter Writer gewinnt — monoton steigende Revision verhindert Race-Conditions.

Conflict-Resolution ist atomar in Postgres (INSERT ... ON CONFLICT DO UPDATE SET revision = revision + 1). Kein Redis nötig im Skeleton-Modus, keine externe Pub/Sub-Infrastruktur. Wenn der Verein wächst und mehrere Service-Replikas nötig werden, ist Redis-Streams als Backend vorbereitet.

Technik

Stack & Infrastruktur

Sprache
TypeScript
Stack
TypeScript · Hono · Bun · Postgres · Server-Sent-Events
Port
3079
Hosting
Eigenbetrieb auf Vereins-Infrastruktur. Keine Drittpartei, kein Cloud-Anbieter, kein Managed-Service.
Konsumenten

Wer ihn benutzt

Grundsätze

Was er für den Verein verkörpert

  • Eigenbetrieb
    Eigene Infrastruktur, quelloffener Stack.
  • Achtsamkeit
    Keine Engagement-Tricks.
  • Datensouveränität
    Verwahrer statt Eigentümer.
Stand

Was läuft, was nicht

Phase: Live.

Offene Punkte
  • Multi-Replica braucht Redis-Streams als Fanout-Backend — Interface ist drauf vorbereitet.
  • Mehr Konsumenten freischalten, Manaclick und Viadocu sind Kandidaten.

mana-presence ist einer von vielen Plattform-Services, die unter den Apps des Vereins laufen. Eigenbetrieb statt SaaS, dokumentiert statt undurchsichtig.