Modularer Baukasten für lokale Vernetzung und dezentrale Zusammenarbeit
Lokale Gemeinschaften brauchen digitale Werkzeuge, die echte Begegnungen fördern statt ersetzen. Real Life Stack ist ein modularer Baukasten, mit dem Communities eigene Apps für lokale Vernetzung bereitstellen und an ihre Bedürfnisse anpassen können.
Selbstorganisation leicht gemacht – Werkzeuge für echte Zusammenarbeit, die Gruppen dabei helfen, gemeinsam vor Ort etwas zu bewegen.
Lokale Initiativen werden zu zentralen Akteuren bei der Bewältigung sozialer und ökologischer Herausforderungen. Doch:
- Etablierte Plattformen sind auf Aufmerksamkeit und Reichweite optimiert, nicht auf lokale Zusammenarbeit
- Kleine Initiativen besitzen nicht die Ressourcen, eigene Systeme zu bauen
- Fehlende Infrastruktur zwingt Communities auf Plattformen, die ihre Daten kontrollieren
Real Life Stack bietet eine gemeinsame technische Grundlage:
- Modularer UI-Baukasten – Karte, Kalender, Gruppen, Profile, Feed als wiederverwendbare Komponenten
- White-Label-App – Sofort einsetzbar, ohne Programmierkenntnisse anpassbar
- Backend-agnostisch – Connector-Architektur für REST, Local-first, P2P oder E2EE
- Vertrauensbasierte Identität – Web of Trust durch reale Begegnungen
Vorschlagen → Planen → Umsetzen → Vertrauen aufbauen → Erfolge teilen → ↩
Real Life Stack unterstützt den gesamten Kreislauf: von der Idee über die Verabredung bis zur gemeinsamen Umsetzung vor Ort. Durch echte Zusammenarbeit entsteht ein Vertrauensnetzwerk (Web of Trust), das die Gemeinschaft nachhaltig stärkt.
┌──────────────────────────────────────────────────────────┐
│ UI │
│ ┌──────────────────────────────────────────────────┐ │
│ │ App-Shell │ │
│ └──────────────────────────────────────────────────┘ │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────┐ │
│ │ Kanban │ │Kalender│ │ Karte │ │ Feed │ │ ... │ │
│ └────────┘ └────────┘ └────────┘ └────────┘ └──────┘ │
├──────────────────────────────────────────────────────────┤
│ Hooks (dünn) │
├──────────────────────────────────────────────────────────┤
│ DataInterface │
├──────────────────────────────────────────────────────────┤
│ Connectoren │
│ ┌────────┐ ┌───────────┐ ┌────────────────────────┐ │
│ │ Mock │ │ GraphQL │ │ WoT (CRDT+E2EE) │ │
│ └────────┘ └───────────┘ └────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
Die App Shell ist der globale Rahmen. Space Modules (Kanban, Kalender, Karte, Feed, ...) sind pro Space aktivierbare Oberflächen. Jede Gruppe wählt, welche Space Modules sie nutzt. Space Modules prüfen nicht nur den Item-Typ, sondern auch welche Daten-Felder vorhanden sind (status → Kanban, start/end → Kalender, location → Karte).
Die Hooks sind eine dünne Schicht zwischen UI und Connector — sie übersetzen Observables in React State und Mutations in Promises. Das DataInterface definiert den read-only Kernvertrag: Items lesen und reaktiv beobachten. Zusätzliche Fähigkeiten wie Schreiben, Gruppen, Identität oder Relations werden über Capability-Interfaces (ItemWriter, GroupManager, Authenticatable, ...) erkannt. UI-Flächen kennen nur diese Interfaces, nicht das Backend.
Jeder Connector implementiert das DataInterface und nur die Capabilities, die seine Datenquelle unterstützt. Der MockConnector (in-memory) dient zur Entwicklung, der LocalConnector für lokale IndexedDB-Persistenz, ein GraphQL-Connector für klassische Server, der WoT-Connector (Yjs/CRDT + E2EE) für dezentrale, verschlüsselte Zusammenarbeit.
Real Life Stack besitzt nicht die soziale oder spielerische Semantik. Er macht sie als backend-agnostische UI- und Connector-Schicht darstellbar und bedienbar. Die soziale Bedeutung kommt aus dem Real Life Network Protocol, die optionale Spielsemantik aus dem Real Life Game. Details: docs/concepts/rlnp-game-integration.md.
RLS-Space-Modules werden künftig frisch und spec-driven definiert. Der bestehende Ordner docs/modules/ enthält frühes Brainstorming aus der Zeit vor der heutigen RLS/RLNP/Game-Abgrenzung und gilt vorerst nur als Inspirationsmaterial.
Neue verbindliche Space-Module-Specs entstehen unter docs/spec/modules/. Erste ausgearbeitete Entwürfe sind Feed und Kanban / Tasks.
| Space Module | Beschreibung |
|---|---|
| Map | Lokale Orte, Ressourcen und Aktivitäten auf einer Karte visualisieren |
| Calendar | Events planen, Termine koordinieren, Einladungen verwalten |
| Feed | Aktivitäten-Stream aus allen Space Modules: Was passiert in der Community? |
| Kanban / Tasks | Aufgaben und Workflows innerhalb eines Space organisieren |
| Marketplace | Angebote, Bedürfnisse, Ressourcen und mögliche Matches sichtbar machen |
| Quests | Quest-Übersicht, Questlog, QuestRuns, Evidence und Completion-Status anzeigen |
| Campaign View | Adventures, Campaigns und World State als Spielansicht darstellen |
- Nachbarschaftsnetzwerke und Urban-Gardening-Gruppen
- Repair-Cafés, Foodsharing-Initiativen, Solawis
- Jugendgruppen und freie Lernorte
- Sharing- und Tausch-Communities
- Organisationen, die lokale Gruppen stärken
| Demo | Beschreibung |
|---|---|
| Landing Page | Projektübersicht und Einstieg |
| Reference App | Implementierung mit allen Modulen |
| UI-Prototyp | Experimentelle UI-Konzepte und Komponenten |
| Storybook | Komponenten-Dokumentation |
| Web-of-Trust | Demo für dezentrale Identität, Verifikation, Attestations und Sync |
Web-of-Trust ist die Protokoll- und Referenzschicht für dezentrale Identität, Kontakte, Verifikationen, Attestations und verschlüsselten Sync. Real Life Stack kann diese Fähigkeiten über den WoT-Connector nutzen, bleibt aber backend-agnostisch.
- Dezentrale Identitäten – Experimente mit did:key und Ed25519
- Web of Trust – QR-Code-basierte Verifizierung, JWS-Signaturen
- Local-first – Yjs als Standard-CRDT, Automerge als alternative CRDT-Option
- Modulare Architektur – AppShell-Pattern für verschiedene Apps
Zur Landing Page → | Zur Demo → | GitHub →
Das Projekt wird von einem Team mit langjähriger Erfahrung in Open-Source-Community-Tools entwickelt:
- Anton Tranelis – Projektkoordination, System-Architektur, Full Stack
- Ulf Gebhardt – Full Stack, DevOps, Infrastruktur
- Sebastian Stein – Frontend-Entwicklung, UX/UI
- Mathias Lenz – Qualitätssicherung, Testing, Dokumentation
- Utopia Map – Kartenplattform für lokale Vernetzung
- ocelot.social – Soziales Netzwerk für Communities
real-life-stack/
├── packages/
│ ├── data-interface/ # @real-life-stack/data-interface - TypeScript-Typen + Capabilities
│ ├── mock-connector/ # @real-life-stack/mock-connector - In-Memory-Implementierung
│ ├── local-connector/ # @real-life-stack/local-connector - IndexedDB + Cross-Tab-Sync
│ ├── graphql-connector/ # @real-life-stack/graphql-connector - GraphQL-Client
│ ├── graphql-server/ # @real-life-stack/graphql-server - Fastify/Mercurius Server
│ ├── wot-connector/ # @real-life-stack/wot-connector - WoT/Yjs/E2EE
│ └── toolkit/ # @real-life-stack/toolkit - UI-Komponenten + Hooks
├── apps/
│ ├── landing/ # Landing Page
│ ├── reference/ # Reference App (React 19)
│ └── prototype/ # UI-Prototyp (experimentell)
└── docs/ # Dokumentation
├── spec/ # Architektur-Spezifikation
├── modules/ # Frühes Modul-Brainstorming, Inspirationsmaterial
├── concepts/ # Konzept-Dokumente
├── archive/ # Historische, nicht mehr normative Dokumente
└── funding/ # Förderantrag
# Dependencies installieren
pnpm install
# Reference App starten
pnpm dev:reference
# Landing Page starten
pnpm dev:landing
# Toolkit bauen
pnpm build:toolkitUI-Flächen arbeiten gegen das DataInterface und optionale Capability-Interfaces — TypeScript-Verträge, die Daten, Reaktivität, Schreibzugriff, Gruppen und Identität abstrahieren. Connectoren implementieren diese Interfaces für verschiedene Backends.
Reine TypeScript-Typen und Shared Helper (keine externen Runtime-Abhängigkeiten):
import type { DataInterface, Item, Group, User, Observable } from "@real-life-stack/data-interface"In-Memory-Implementierung mit Demo-Daten für Entwicklung ohne Backend:
import { MockConnector } from "@real-life-stack/mock-connector"
const connector = new MockConnector()
await connector.init()
const tasks = await connector.getItems({ type: "task" }) // 5 Demo-Tasks
const groups = await connector.getGroups() // 3 Demo-Gruppen
// Reaktiv beobachten
const obs = connector.observe({ type: "task" })
obs.subscribe((tasks) => { /* Live-Updates */ })Spec-Einstieg: docs/spec/README.md. Architektur-Details: docs/spec/00-architecture.md
Das Toolkit-Package exportiert wiederverwendbare UI-Komponenten:
import { Button, Card, Avatar, Tabs } from '@real-life-stack/toolkit'# Storybook lokal starten
pnpm storybook
# Storybook bauen
pnpm build:storybook- TypeScript + React 19
- Tailwind CSS v4
- Radix UI Primitives
- CVA (class-variance-authority)
- Vite
Gemeinsam gestalten wir die Zukunft – lokal vernetzt, global gedacht.