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%

Aktivität

45 Commits vor 2 Stunden