MFP by Alena
Online-Kursplattform für Pilates mit Mitgliederbereich, Zahlungssystem und Admin-Dashboard.
Das Problem
Alena betreibt ein Pilates-Studio mit einer treuen Kundschaft - aber ohne digitale Infrastruktur für den Verkauf. Mitgliedschaften und Kurspakete wurden manuell über PayPal-Links und Banküberweisung abgewickelt, Rechnungen von Hand verschickt, Mitgliederzugang per Tabelle verwaltet.
Der Auftrag: eine Plattform, die den gesamten Kaufprozess abbildet, Rechnungen automatisch ausstellt, Inhalte nach Mitgliedschaftsstufe freischaltet und Alena die Kundenverwaltung ohne Entwicklerunterstützung ermöglicht.
Eine fertige Lösung, die alle Anforderungen und das Budget vereint, gab es nicht. Die Entscheidung fiel auf Custom-Software.
Was gebaut wurde
MFP by Alena ist eine Full-Stack-Wellness-E-Commerce-Plattform auf Basis von Angular 20 SSR und Express, mit TypeORM auf PostgreSQL als Datenschicht. Zwei Zahlungsanbieter - Stripe für Kartenzahlungen und PayPal für bankverbundene Käufe - sind mit vollständiger Webhook-Unterstützung integriert.
Kernfunktionen:
- Mitgliedschaftsstufen - drei Zugangsstufen (Gratis-Vorschau, monatlich, jährlich) mit rollenbasierter Inhaltssperrung
- Stripe + PayPal Checkout - einheitlicher Checkout-Prozess mit Anbieterauswahl, automatischen Weiterleitungen und Fallback-Handling
- Webhook-Verarbeitung - idempotente Event-Handler für payment.succeeded, subscription.cancelled und Dispute-Events
- Automatische Rechnungsstellung - PDF-Rechnungen werden bei Kauf generiert und per Nodemailer versendet
- Admin-Dashboard - Alena kann Kundendaten einsehen, Mitgliedschaften verlängern, Rückerstattungen auslösen und Daten exportieren - ohne Entwickler
- Kursbibliothek - gesperrte Videoinhalte mit signierten URLs, damit Inhalte nicht direkt verlinkt oder geteilt werden können
- Responsives Frontend - Angular SSR sorgt dafür, dass Marketing-Seiten crawlbar und beim ersten Laden schnell sind
Architektur
Frontend: Angular 20 mit SSR (Angular Universal) über Express. Marketing- und Landing-Pages werden serverseitig gerendert - für SEO und schnelle First-Paint-Zeit. Mitgliederbereich und Kursbibliothek sind nach der Authentifizierung clientseitig. Tailwind v4 als CSS-Framework.
Backend: Express mit TypeORM auf PostgreSQL. Das Datenmodell trennt Nutzer, Mitgliedschaften, Bestellungen und Webhook-Events in saubere Tabellen. TypeORM-Migrationen halten das Schema in der Versionskontrolle - Produktions-Updates sind nachvollziehbar und bei Bedarf rückgängig zu machen.
Zahlungen: Stripe und PayPal sind auf Webhook-Ebene integriert, nicht nur auf Redirect-Ebene. Das bedeutet: abgebrochene Abos, fehlgeschlagene Abbuchungen und Rückerstattungen aktualisieren die Datenbank automatisch, ohne dass Alena eingreifen muss. Die Webhook-Handler sind idempotent - wiederholte Events erzeugen keine Duplikate.
Deployment: Docker Compose mit Caddy als Reverse Proxy. Ein docker-compose up auf einem VPS startet Postgres, Express API, Angular SSR und Caddy mit automatisch erneuerndem TLS. Die Hostingkosten sind ein fixer VPS-Preis - kein SaaS-Preismodell, das mit der Kundenzahl skaliert.
Technische Herausforderungen
Zwei Zahlungsanbieter, ein Checkout-Flow. Stripe und PayPal haben grundlegend unterschiedliche SDKs und Webhook-Schemas. Ich habe beide hinter einem einheitlichen PaymentService-Interface abstrahiert - das Frontend sendet eine Intention, das Backend routet zur richtigen Implementierung, und die Webhook-Normalisierungsschicht mappt beide auf dasselbe interne Event-Schema.
Idempotente Webhooks sind nicht optional. Zahlungsanbieter können Webhooks wiederholen, wenn sie keine 200-Antwort erhalten. Ohne Idempotenz kann ein Netzwerkausfall zwischen Event-Empfang und Bestätigung Doppelkäufe erzeugen. Jeder Webhook-Handler prüft, ob die Event-ID bereits verarbeitet wurde, bevor er eine Aktion ausführt.
Admin-UX für eine nicht-technische Nutzerin. Das Admin-Dashboard wurde in drei Feedback-Runden iteriert, um sicherzustellen, dass die Kernaufgaben - Mitgliedschaft verlängern, manuelle Rechnung senden, Zugangsstatus prüfen - keine Erklärung und keine Dokumentation erfordern.
Status
MFP by Alena befindet sich aktuell in der Entwicklung (Stand: April 2026). Messergebnisse und finale Zahlen folgen nach dem Launch.



