# Local-First & Web of Trust
**Bausteine für eine modulare App-Architektur**
---
## Inhalt
1. [Local First](#Local-First)
2. [Web of Trust](#Web-of-Trust)
3. [Modulare App Architektur](#Modulare-App-Architektur)
4. [Prototype](#Prototype)
---
## Local First
---
### Motivation
* Blackout / Cyberwar / Extreme Krisen
* Zentralisierung von Macht als Zentrales Problem unserer Zeit
* Zensur / Überwachung / Chatkontrolle
* Freie Software für frei Menschen
* Individuelle und Kollektive Selbstermächtigung / Eigenverantwortung
* Veränderung Bottom - Up / Grasroots stärken
* organisches Dezentrales Wachstum
* dApps --> Selbstläufer
---
### Cloud Apps
✅ einfache Zusammenarbeit
✅ Zugriff von mehreren Geräten
❌ Entziehen dem Nutzer Kontrolle und Eigentum
❌ Abhängigkeit Daten liegen auf fremden Servern
---
### Klassische Software
✅ Kontrolle und Besitz über deine Daten
❌ Kollaboration schwierig
❌ Geräteübergreifendes Arbeite schwierig
---
### Ziele
✅ Offline- und lokal arbeitende Software
✅ Synchronisation über Geräte
✅ Kollaboration
✅ Sicherheit
✅ Kontrolle über die eigenen Daten
---
### Implementierung
---
#### Data Local Store
* IndexDB
* SQLite
* OPFS
---
#### Sync between different Devices
* WSS (WebSocket Secure)
* WebRTC (Web Real-Time Communication)
##### Gemeinsamkeiten
* Zweck Echtzeit-Datenübertragung zwischen Peers
* Bidirektional Beide ermöglichen Senden und Empfangen
* Browser-Support Beide in modernen Browsern verfügbar
* Verschlüsselung Beide verschlüsselt (TLS bzw. DTLS)
---
#### Konfliktauflösung
CRDTs try to merge data in the least surprising way possible.
* Version Control
* Event-Sourcing
---
### Vorteile der Local-First Architektur
#### Für Benutzer
* Reaktive Schnelle anwendungen
* Operationen werden in Millisekunden abgeschlossen, nicht in Hunderten von Millisekunden
* Keine Ladebalken für grundlegende Operationen.
* Offline-Fähigkeit
* Volle Funktionalität ohne Internetzugang
* Änderungen synchronisieren automatisch bei Wiederverbindung.
* Datenbesitz
* Benutzer kontrollieren ihre Daten
* Sie befinden sich auf ihren Geräten und reduzieren die Abhängigkeit von Cloud-Anbietern.
* Privacy by Design
* Sensible Daten können auf dem Gerät bleiben oder vor der Synchronisation verschlüsselt werden
---
#### Für Entwickler
* Vereinfachtes State Management
* Die lokale Datenbank wird zu Ihrer einzigen Quelle der Wahrheit
* State-Management-Bibliotheken werden in vielen Fällen nicht benötigt
* Reduzierte Backend-Komplexität
* Statt vieler API-Endpunkten benötigen Sie oft nur einen Sync-Endpunkt
* Der Server konzentriert sich auf Konfliktauflösung und Datenspeicherung anstatt auf Geschäftslogik.
* Bessere Skalierbarkeit
* Server handhaben periodische Sync-Operationen anstatt konstanter Anfragen
* Dieser “skaliert mit Daten, nicht mit Last”-Ansatz kann Infrastrukturkosten reduzieren.
* Echtzeit standardmäßig
* Observable Queries und reaktive Patterns machen Echtzeit-Updates natürlich, nicht nachträglich.
---
### Herausforderungen
---
#### Komplexität der Datensynchronisation
* Wenn Geräte offline arbeiten, divergieren Daten unweigerlich
* Gebündelte Lösungen: Tools wie Firebase bieten schlüsselfertige Synchronisation, binden Sie aber an ihr Ökosystem.
* Benutzerdefinierte Synchronisation: Bibliotheken wie RxDB lassen Sie Synchronisation auf Ihrer bestehenden Infrastruktur implementieren, erfordern aber mehr Entwicklungsaufwand.
---
#### Konfliktauflösung
Konflikte müssen gelöst werden!
* Last-write-wins (einfach, aber kann Daten verlieren)
* Benutzerdefinierte Merge-Funktionen (flexibel, aber komplex)
* CRDTs wie Automerge oder Yjs (mathematisch fundiert, aber mit Kompromissen)
---
#### Schema-Migrationen
* Client-Datenbanken auf Tausenden von Geräten
* Migrationen müssen mehrere Schema-Versionen elegant handhaben, da Benutzer zu unterschiedlichen Zeiten aktualisieren.
---
#### Speicherbegrenzungen
* Obwohl sich Browser-Speicher erweitert hat, ist er nicht unbegrenzt
* Local-First funktioniert am besten für benutzerbezogene Daten
---
#### Sicherheit & Access Control
* Verschlüsselung und Access Control müssen dezentral und unabhänig von Server entworfen und implementiert werden
---
### Libraries & Frameworks
https://yjs.dev
https://loro.dev/
https://automerge.org/
https://jazz.tools/
https://www.evolu.dev/
https://zero.rocicorp.dev/
https://rxdb.info/
https://p2panda.org/
https://willowprotocol.org/
https://nostr.com/
es gibt noch viele mehr
---
### Ausblick & Handlungsempfehlung
- Local-First ist keine fertige Technik – es braucht weitere Forschung & Experimentieren
- Entwickler und Anbieter sollten mit lokalen Kopien + Sync-Mechanismen experimentieren
- Nutzer sollten Bewusstsein für Daten-Eigentum und Kontrolle entwickeln.
---
## Web of Trust
* Real-Life verifizierte Kontakte
* Daten gezielt mit Freunden und Gruppen teilen
* Schutz vor Spam / Trollen / Zensur / Überwachung
* Verschlüsselung
---
### E2EE

---
### Dezentrale Auth
**Simple**
Event-Sourcing
Alle Aktionen signiert
UI zeigt nur gültig signierte Daten
**Vollständig**
[UCAN](https://ucan.xyz/specification/)
---
## Modulare App Architektur
---
### Ziele
* Gemeinsamer Kern & Architektur für Utopia, Ocelot, DANK und vieles mehr
* Möglichkeit schaffen mit unterschiedlichen Datenbank und Identitätslösungen zu experimentieren
---
### Frontend-Kit
* AppShell + Module
* Plugin Architektur
* Generische Items
* Gemeinsame Daten- und Identitätsschnittstelle im Frontend
* Backend-Anbindungen sind austauschbare Connectoren
* Gruppen / Kontext / Instanz / Space (Whitelabel)
---
### Services (serverbasiert)
E-Mail / Notifications
Interoperabilität / Sync
CalDav
Clustering
Map Tiles
Geo Coder
ID-Backup / Reset
---
## Prototype
---
https://web-of-trust.de/?doc=automerge%3A3MqohNa5eq1ZZBsogMDXc6VMLimU
---
* Automerge
* Automatische Keypair Generation (IndexedDB, File-Backup)
* Signierte Aktionen
* Workspace Docs
* User Docs