Was es kann
Ich habe Tymbo entwickelt – eine Terminbuchungs-App für kleine Dienstleistungsbetriebe wie Barbershops, Studios oder Coaches. Der Betrieb legt Team, Leistungen und Arbeitszeiten an; die Kundschaft wählt Leistung, Person und Uhrzeit.
- Gebucht wird eine bestimmte Person aus dem Team oder „wer gerade frei ist“ – mit oder ohne Kundenkonto.
- Jeder Betrieb bekommt eine eigene Website und Buchungsseite, dazu einen QR-Code und ein einbettbares Buchungs-Widget.
- Der Betrieb verwaltet Team, Leistungen, Wochenzeiten, Abwesenheiten und Termine. Eingeladene Mitarbeitende sehen ihren eigenen Plan.
- Kostenlose und bezahlte Tarife, Gutscheincodes und ein Partnerprogramm mit nachvollziehbaren Provisionen.
- Verfügbar auf Deutsch, Englisch, Spanisch und Arabisch (von rechts nach links).
Der Rede wert
Doppelbuchungen verhindert die Datenbank selbst.
Ein PostgreSQL-Constraint weist überlappende Termine für dieselbe Person ab – auch wenn zwei Buchungen im selben Moment eingehen.
Links in E-Mails warten auf einen echten Menschen.
Sie öffnen eine Seite, auf der erst ein Klick auf den Button zählt. Mailscanner, die Links vorab aufrufen, können so weder eine Bestätigung verbrauchen noch einen Termin stornieren.
Der Abo-Status kommt ausschließlich über Stripe-Webhooks.
Jeder Webhook wird genau einmal verarbeitet. Die Regeln für Rabatte und Provisionen liegen in der eigenen Datenbank der App.
Tech-Stack
- Frontend
- Expo, React Native Web, Expo Router, TanStack Query, i18next, Astro
- Backend
- Node.js, Fastify, Zod, TypeScript
- Datenbank
- PostgreSQL, Drizzle ORM
- Mobile
- PWA (die Web-App, auf dem Smartphone installierbar)
- Auth
- Better Auth
- Zahlungen
- Stripe Checkout, Billing und Tax
Infrastruktur
- Coolify auf Hetzner
- Baut jede App aus ihrem eigenen Dockerfile. Der main-Branch geht in die Produktion, dev in eine Testumgebung.
- Object Storage
- S3-kompatibler Speicher für hochgeladene Logos und Fotos.
- Brevo
- Transaktionsmails: Buchungsbestätigungen, Einladungen, Passwort-Resets.
- Umami
- Besucherstatistik, selbst gehostet und ohne Cookies.