
Schnack — Privater Messenger
Ein kompletter Messenger-Stack aus einer Hand — native Apps, eigener Server, Ende-zu-Ende-Verschlüsselung und Echtzeit-Spiele, ohne Datenhunger
PROJEKT
Schnack — Privater Messenger
TECHNOLOGIEN
Herausforderung
Messenger gehören zu den anspruchsvollsten Anwendungskategorien überhaupt: Echtzeit-Kommunikation, Kryptografie, Push-Benachrichtigungen, Medienverarbeitung und Offline-Fähigkeit müssen über mehrere Plattformen hinweg nahtlos zusammenspielen. Genau deshalb wollte ich einen bauen — als privates Produkt und als technische Gesamtübung.
Der Anspruch: ein Messenger, der sich bewusst gegen den Zeitgeist stellt — kein Feed, keine Kanäle, kein „Entdecken“, kein Tracking, keine Werbung. Nur die Menschen, die man wirklich kennt. Und dabei kompromisslos privat.
Daraus ergaben sich drei harte Anforderungen:
- Ende-zu-Ende-Verschlüsselung für alles — Nachrichten, Fotos, Videos und Dateien; der Server darf zu keinem Zeitpunkt Inhalte lesen können (server-blind)
- Native Apps für iOS und Android mit identischem Krypto-Wire-Format, dazu ein Web-Companion — drei Clients, ein Protokoll
- Echtzeit als Grundprinzip — Zustellung, Lesebestätigungen, Tipp-Indikatoren und sogar Spiele wie Backgammon laufen live über dieselbe Infrastruktur
Lösung
Ich habe Schnack als vollständigen Stack entworfen und gebaut: Server, iOS-App, Android-App und Web-Messenger. Drei Leitgedanken bestimmten die Umsetzung.
Verschlüsselung ohne Kompromisse
Jede Nachricht wird pro Empfänger einzeln verschlüsselt: Curve25519-Schlüsselaustausch, AES-GCM-256 für die Inhalte, HKDF für die Schlüsselableitung. Die privaten Schlüssel verlassen nie das Gerät — auf iOS gesichert im Keychain, auf Android im KeyStore. Medien werden vor dem Upload mit einem eigenen Media-Key verschlüsselt, der seinerseits nur verschlüsselt übertragen wird. Für den Gerätewechsel gibt es ein passwortgeschütztes Schlüssel-Backup, mit dem sich die komplette Historie auf einem neuen Gerät entschlüsseln lässt.
Nativ statt Cross-Platform
Die iOS-App ist in SwiftUI mit SwiftData-Persistenz gebaut, die Android-App in Kotlin mit Jetpack Compose — beide gegen dasselbe API- und Krypto-Wire-Format. Das kostet zunächst doppelte Arbeit, zahlt sich aber in Bediengefühl, Performance und Plattform-Integration (APNs/FCM-Push, Photo-Picker, Keychain/KeyStore) aus. Ein Web-Messenger mit QR-Code-Login ergänzt die Apps als Companion am Desktop.
Echtzeit als Fundament
Der Server — ein Next.js Custom Server mit Socket.io, Prisma und PostgreSQL — behandelt alles als Echtzeit-Ereignis: Nachrichten, Online-Presence, Tipp-Indikatoren, Lesebestätigungen. Auf derselben Grundlage laufen komplette Spiele direkt im Chat: Backgammon mit Doubling-Cube, Othello und ein Snake-Score-Duell — Zug für Zug live zwischen den Geräten. Der Server ist quelloffen und lässt sich auf eigener Infrastruktur hosten.
Ergebnisse
Schnack ist veröffentlicht und im Einsatz — als vollständiges Produkt vom Protokoll bis zum App-Store-Release:
- Live im Apple App Store, Android als direkter APK-Download, Web-Messenger als Desktop-Companion
- Durchgängige Ende-zu-Ende-Verschlüsselung für Nachrichten, Medien und Dateien — der Server bleibt blind
- Echtzeit-Spiele im Chat: Backgammon, Othello und Schnake
- Gruppen, Multi-Image-Nachrichten, Video-Messages, Link-Previews, Lesebestätigungen und Tipp-Indikatoren
- Quelloffener, selbst hostbarer Server — betrieben via Docker und Coolify auf eigener Infrastruktur
- Kein Tracking, keine Werbung, kein Datenhandel — komplett kostenlos
Das Projekt zeigt die ganze Spannbreite: Protokoll-Design und Kryptografie, zwei native Apps, Realtime-Backend, Push-Infrastruktur und der komplette Release-Prozess bis in den App Store.