Mandantenfähige SaaS mit Stripe Connect, Queue-Workern und E-Rechnung.
Web-Software für Massagestudios auf React Router, PostgreSQL und Prisma. Mandantentrennung per organizationId und hostbasierter Org-Auflösung, Gutscheinverkauf über Stripe Connect mit Plattformgebühr, asynchrone Verarbeitung über BullMQ und E-Rechnungen nach ZUGFeRD und XRechnung aus einem Java-Dienst.
Ablauf
- 01Registrierung per E-Mail und Passwort, E-Mail-OTP, Google oder Passkey (BetterAuth), dann Onboarding für Organisation, Kalender und Shop.
- 02Konfiguration im Dashboard: Leistungen, Arbeitspläne, Team, Buchungsregeln, Buchungsfelder und Benachrichtigungen.
- 03Buchung über die Org-Subdomain, ein Embed-Script (Overlay oder Inline per iframe) oder das WordPress-Plugin.
- 04Gutscheinkauf: Order lokal als pending, dann PaymentIntent auf dem Connected Account mit application_fee_amount und Idempotency-Key.
- 05Stripe-Webhook, dann BullMQ-Worker: Order abschließen, Gutschein-PDF und E-Rechnung erzeugen, Mails versenden.
Technische Details
Mandantentrennung
Jede Query filtert nach organizationId, die Auth-Prüfung läuft im Loader jeder Route. Eine orgMiddleware löst die Organisation aus dem Hostnamen auf. Rollenmodell mit Owner, Manager und Member.
Serverseitige Preisbildung
Preise kommen ausschließlich aus der Datenbank, Client-Werte werden ignoriert. Mindestbetrag 10 €, Rate-Limit pro IP, E-Mail und Organisation. Der Idempotency-Key pi-{orderId} verhindert doppelte PaymentIntents.
Webhook-Verarbeitung
Signaturprüfung, Idempotenz über die Event-ID und einen Unique-Constraint auf die PaymentIntent-ID, asynchrone Verarbeitung in einer Queue. Eigene Handler für Disputes mit automatischer Gutscheinsperre, Refunds und Payouts.
E-Rechnung
Java-Dienst auf Spring Boot mit der Mustang-Bibliothek, erreichbar über das interne Docker-Netz, Zugriff per API-Key, Ablage in S3. Standardprofil ZUGFeRD EN16931, optional XRechnung. Erzeugt Rechnungen für Gutscheinkäufe, Storno- und Korrekturrechnungen und die monatliche Plattformgebühr.
Einbettung
Embed-Loader mit Overlay- und Inline-Modus per iframe und Messaging. WordPress-Plugin mit Shortcode oder Floating-Button, kompatibel mit Gutenberg, Elementor und Divi.
Hintergrund-Worker
BullMQ-Worker für Erinnerungen, DSGVO-Anonymisierung, Bereinigung verwaister Buchungen und Orders sowie einen synthetischen Healthcheck. Fehler gehen an Sentry.