Portfolio · UserFlow SaaS

Buchen, betreiben und wachsen — mit einer Plattform fuer Schweizer KMU-Dienstleister.

UserFlow ist unsere Produktfamilie fuer Terminbuchung, Dashboard, Analytics und automatisiertes Tenant-Onboarding. Gebaut als modularer Monolith mit hexagonalen Grenzen, CQRS und Event Sourcing im Booking-Kontext.

Arbeiten & Module

Was wir bei UserFlow gebaut haben

Ein Ausschnitt aus den Produktbausteinen, die wir fuer Schweizer Dienstleister entwickelt haben — vom oeffentlichen Booking-Widget bis zum Multi-Tenant-Billing.

Booking-Widget

Oeffentliches Slot-Picker-Widget mit Idempotency-Schutz

Einbindbares Booking-Widget mit Staff-Auswahl, Service-Bundles, Working-Hours und Holidays. Doppelbuchungen werden durch Idempotency-Keys im Event-Sourcing-Strom verhindert.

KontextCustomer-Facing
StackNext.js 16, Prisma
MusterEvent Sourcing
Analytics

Dashboard mit KPIs, Funnel und Drift-Detection

Operative Uebersicht mit Buchungen, Services, Staff, Working-Hours, Scoring, Customers und Pause-Modus — ergaenzt um Funnel-Analyse und automatische Drift-Erkennung.

KontextOperator-UI
MusterCQRS-Queries
Auto-Setup

Tenant-Onboarding in Minuten statt Tagen

Scraping-Pipeline mit Cheerio und Playwright, 359 Keywords ueber 15 Branchen. Erkennt Leistungen, Oeffnungszeiten und Staff aus bestehenden Webseiten.

KIClaude Haiku
Billing & Auth

Stripe-Checkout, Portal und Grace Period

Mehrmandantenfaehiges Abo-Billing mit Stripe Checkout, Customer Portal und Grace-Period-Logik. NextAuth v5 mit Magic-Link via Resend.

AuthNextAuth v5
Kommunikation

SMS, Email und Reminder mit Audit-Trail

Twilio-SMS und Resend-Email mit MessageLog fuer nachvollziehbare Zustellungen. Reminder-Cron und No-Show-Logik sichern die Kalender.

KanalSMS · Email
Architektur-Case-Study

Von Monolith zu modularem Monolith — acht Phasen, eine Linie.

Die Architektur-Migration ist seit 2026-04-29 abgeschlossen. Hexagonale Grenzen, Event Sourcing nur fuer Booking, Server Components rufen Application-Queries direkt auf. Jede Entscheidung ist als ADR dokumentiert.

Architektur im Detail →
Qualitaet

Definition of Done als Gate, nicht als Wunsch

Jede Aenderung erfuellt klare Kriterien: npm test, npm run lint und npx tsc --noEmit muessen gruen sein. Architekturgrenzen werden per ESLint import/no-restricted-paths erzwungen.

GatesTests · Lint · Types
Betrieb

Betrieb in Zuerich, revDSG-konform.

Hosting bei Infomaniak in Zuerich, Deployment ueber Nginx und PM2, Health-Check unter /api/health. Rollback-Pfad dokumentiert in DEPLOYMENT.md.

RegionSchweiz (CH)
ProzessPM2 · Nginx
Produktsaeulen

Drei Saeulen, ein kohaerentes Produkt

UserFlow ist nicht ein Feature-Korb. Jede Saeule loest ein klares Problem — gemeinsam decken sie den Alltag eines Schweizer KMU-Dienstleisters ab.

Buchen

Oeffentliches Widget, Slot-Verfuegbarkeit in Echtzeit, Staff-Zuweisung, Bundles und Idempotency-Schutz auf Event-Sourcing-Basis.

Steuern

Dashboard fuer Services, Staff, Holidays, KPIs, Funnel, Customer-Scoring, Drift-Detection und Pause-Modus — alles an einem Ort.

Automatisieren

Auto-Setup-Scan mit 96% Detection-Accuracy, KI-gestuetzte No-Show-Logik, Reminder-Cron und MessageLog-Audit-Trail.

Marken-Architektur

Eine Dachmarke, drei vertikale Produkt-Brands

Coiffeur

SalonPunkt

Booking und Kundenbindung fuer Salons — mit Service-Bundles, Farb-Workflows und klaren Buchungsfenstern.

Zahnarztpraxis

Praxis-Widget

Terminplanung fuer Praxen mit Staff-Rollen, Kontroll- und Behandlungstypen und revDSG-konformer Ablage.

Physiotherapie

PhysioBook

Serientermine, Erstgespraeche und No-Show-Schutz fuer Physio-Praxen in der deutschsprachigen Schweiz.

Tech-Stack

Tools, die wir bewusst gewaehlt haben

Keine Modetrends, sondern begruendete Entscheidungen — jede Wahl ist in einer ADR dokumentiert.

Next.js 16App Router, RSC
TypeScriptstrict mode
PrismaPostgreSQL
NextAuth v5Magic Link
StripeBilling & Portal
ResendTransactional Email
TwilioSMS-Reminder
PlaywrightAuto-Setup-Scan
Migration & Prozess

Wie die Architektur in acht Phasen entstand

Von der monolithischen Basis zum modularen Monolith mit hexagonalen Grenzen — dokumentiert, nachvollziehbar, reversibel.

Phase 1 — 2

Schichtung und Grenzen

Einfuehrung von Domain, Application, Ports und Adapters. ESLint import/no-restricted-paths erzwingt die Richtung.

Phase 3 — 4

CQRS und Query-Modelle

Trennung von Write-Use-Cases und Read-Queries. Server Components rufen Queries direkt (ADR-0004).

Phase 5 — 6

Event Sourcing fuer Booking

Booking erhaelt eine Event-Sourcing-Implementierung (ADR-0002). Andere Kontexte bleiben state-based — bewusst.

Phase 7 — 8

Stabilisierung & Dokumentation

Evidence-Standard, Legacy-Table-Drop-Plan, Demo-Checklist. Migration abgeschlossen per 2026-04-29 laut STATUS.md.