Lauschliste: Stressfreie Tonie-Wunschlisten für Familien

Lauschliste ist mein erstes richtiges SaaS-Projekt – eine Web-App, mit der Familien Tonie-Wunschlisten anlegen, mit Verwandten teilen und gleichzeitig einen Doppelkauf vermeiden können.
Die ganze Entstehungsgeschichte habe ich in zwei Blog-Artikeln dokumentiert:
Das Problem
Auslöser war ein Doppelkauf zu Hause: Neben der Toniebox hatten wir einen Schlummerwal gekauft – und ein Freund schenkte uns denselben Tonie noch einmal. Klassische Wunschlisten hätten das vermutlich verhindert, aber für Tonies fehlten mir ein paar Dinge:
- Sie sind oft nicht Tonie-spezifisch – keine Cover, keine Beschreibungen, keine gute Suche und Filter
- Gäste hassen Registrierungen. Oma will auf einen Link klicken, einen Tonie reservieren und fertig – nicht erst einen Account anlegen und ein Passwort merken
- Doppelkauf-Schutz fehlt. Ohne Live-Reservierung kann derselbe Tonie von mehreren Personen parallel gekauft werden – das merkt man erst, wenn beide Geschenke geöffnet sind
Die Lösung
Lauschliste ist genau auf diesen Use Case zugeschnitten:
- Eltern legen Listen an und teilen sie per Link oder QR-Code (z.B. auf Einladungskarten)
- Gäste reservieren mit einem Klick – komplett ohne Account
- Doppelkauf-Schutz läuft serverseitig: Race Conditions werden sauber abgefangen, der zweite Klick bekommt eine freundliche "Schon reserviert"-Meldung
Hauptfeatures
- Tonie-Katalog mit Typesense-Suche – rasend schnelle Volltextsuche und Facetten (Serie, Alter, Kategorie, Farbe), Filterzustand zum teilen in der URL
- ~700 Tonie-Einträge, regelmäßig automatisch aktualisiert über eine eigene Sync-Pipeline
- SEO-optimierte Detailseiten für jeden Tonie
- Social-Login mit Google und Facebook (Apple kommt, sobald ich den Developer-Account zähneknirschend zahle)
- QR-Code-Generator für analoge Einladungskarten
- Geburtstagserinnerungen per Cronjob 7–14 Tage vorher
- MDX-basierter Ratgeber-Bereich rund um Tonies und Familien-Themen
Tech Stack
Im Gegensatz zu Laravel Ingest habe ich Lauschliste bewusst in der Node.js-Welt gebaut, um meinen TypeScript-Muskel zu trainieren:
- Framework: Next.js 16 (App Router), React 19, TypeScript
- Styling: Tailwind CSS, shadcn/ui
- Datenbank: PostgreSQL mit Drizzle ORM
- Auth: Better Auth (E-Mail/Passwort + Google + Facebook)
- State Management: TanStack Query 5
- Suche: Typesense (selbst gehostet im Compose-Stack) für Volltext- und Facettensuche
- Deployment: Docker (Standalone Output) via Ansible auf meinem eigenen Server
Architektur-Highlights
- Stateless Public Pages: Die
/l/[slug]-Routen sind so gebaut, dass Gäste ohne Cookie und ohne Account direkt loslegen können. Nur die Reservierung selbst läuft serverseitig mit Locks. - KI-gestützte Datenanreicherung: Fehlende Tonie-Beschreibungen werden über mein eigenes Osmia AI generiert und automatisch vertaggt; die Farbwerte und Tags der Cover für die Suche im Katalog kommen aus einer Vision-KI.
Building in Public
Lauschliste ist mein erster ernsthafter Versuch, ein Produkt nicht nur zu bauen, sondern auch öffentlich zu begleiten. Mittlerweile läuft das Projekt auf:
- lauschliste.de – die Web-App selbst
- @lauschliste_de auf Instagram – Marketing, Reels, Community
- Pinterest - Ratgeber-Pins