lichtbild
Nach jedem Shooting stellt sich die gleiche Frage: Wie kommen die Fotos zu den Leuten? WhatsApp zerstampft die Qualität, Cloud-Alben brauchen Accounts und die Originale liegen am Ende bei irgendeinem Drittanbieter.
lichtbild ist meine eigene Lösung: eine selbst-gehostete Foto-Sharing-App für den Freundeskreis. Ich lege pro Shooting ein Projekt an, lade die Fotos hoch und verschicke einfach einen Link – optional mit PIN. Wer den Link hat, braucht keinen Account: Gäste bekommen eine anonyme Device-ID und können direkt reagieren, herunterladen und speichern.
Save to Photos, wie es sein soll
Das wichtigste Feature ist auf iOS zu Hause: Ausgewählte Fotos landen über das native Share Sheet direkt in der Foto-Mediathek. Damit Safari dabei mitspielt, werden die Fotos in 12er-Batches vorgeladen, sodass navigator.share() synchron innerhalb der Tap-Geste feuern kann – sonst lässt Safari das Share Sheet einfach fallen.
Dazu kommen Quick-Exports für Socials: Ein Tap erzeugt einen 1:1-Post- oder 9:16-Story-Crop und teilt ihn direkt.
Die Details
- Reactions wie in WhatsApp – ein Emoji pro Gerät und Foto, ein neues ersetzt das alte.
- Originale auf der eigenen Nextcloud – ein eigener Storage-Provider auf Basis meines nuxt-filer-Moduls legt die Original-Dateien per WebDAV auf meiner Nextcloud ab, während Metadaten in Postgres leben.
- Ingest-Pipeline – beim Upload werden EXIF-Daten (Kamera, Objektiv, Belichtung) extrahiert und Blurhash-Platzhalter berechnet, damit Grid und Lightbox ohne Layout-Sprünge laden.
- ZIP-Downloads im Browser – Mehrfach-Downloads werden clientseitig gestreamt gezippt, mit Auswahl zwischen Web-, High- und Original-Auflösung.
- Mobile-Web-Polish – Pull-to-Refresh, Safe-Area-Handling und Session-Cookies, die iOS Safari auch nach Wochen nicht verliert.
Als Nächstes steht die Gesichtserkennung an: Das Schema für Personen und Face-Embeddings (pgvector) ist schon angelegt, damit sich Galerien bald nach Personen filtern lassen.

Sprachen
- Nuxt55.0%
- TypeScript45.0%