Fitofan
Sportplattform: Web, Mobile-Apps und das Backend dahinter
Eine Plattform für Athleten, Trainer, Vereine und Fans: eine Web-App in 11 Sprachen, iOS- und Android-Apps und ein Backend, das ich von Anfang bis Ende verantworte.
- Rolle
- Senior Full-Stack & Mobile Engineer
- Zeitraum
- 2024 – 2026


Kontext
Fitofan bedient Athleten, Trainer, Eltern, Vereine und Ligen mit einer Next.js-Web-App, Flutter-Apps für iOS und Android und einem NestJS-Backend. Ich verantworte die Lieferung über den gesamten Stack: Architektur, APIs, Daten, Infrastruktur und Releases, und seit 2026 pflege ich die Mobile-App allein.
Die Herausforderung
Ein Produkt über drei Codebasen und 11 Sprachen hinweg kohärent halten und dabei Live-Sportdaten, Zahlungen, Social Publishing und KI-Funktionen ergänzen, ohne die Releases zu verlangsamen.
Über den gesamten Stack gebaut
- Next.js-16-Web-App auf Feature-Sliced Design: über 140 Seiten, 11 Locales, rund 10.000 Übersetzungsschlüssel mit Paritätsprüfung in der CI
- NestJS-Backend mit über 90 Modulen, PostgreSQL und über 290 Migrationen, Swagger und Health Checks
- Ereignisgesteuerte Synchronisation über RabbitMQ mit idempotenten Consumern, Dead-Letter-Queue und Correlation-IDs
- Redis-Caching mit dekoratorgesteuerter Invalidierung; Socket.IO-Gateways für Kommentare und Live-Sessions
- Live-Spielpläne, Ergebnisse und Quoten von Sportmonks und API-Football; Social Publishing zu Meta, TikTok, LinkedIn und YouTube
- Finix-Abonnements plus Zahlungsverifizierer für Stripe, Square, PayPal, LiqPay, Mercado Pago, GCash und Monopay
- OpenAI-Assistent mit Tool-Calling, Whisper-Transkription und Bildgenerierung mit Replicate
- Flutter-App: BLoC, Hive-Offline-Cache, Socket.IO, Push-Benachrichtigungen, AdMob, iOS Live Activities, 12 Locales, über 360 Tests
- CI/CD: Lint- und i18n-Gates, Jest, mehrstufiges Docker, Container-Registry, SSH-Deploy; Web auf Vercel
- Gemeinsame Pakete für Registrierung und Vereinsanlage, von GymTeam über einen injizierbaren Host-Vertrag wiederverwendet
- KI- und Vision-R&D im selben Ökosystem: eine Sportbewertungs-App für Kinder mit Pose-Erkennung auf dem Gerät in Flutter und In-App-Abos, sowie eine Taekwondo-Technikanalyse im Browser mit MediaPipe und TensorFlow.js
Technische Schwerpunkte
- Idempotente Event-Consumer: jede Nachricht wird vor der Bestätigung gespeichert, sodass Retries und Replays nie doppelt wirken
- Architektur durch Tooling erzwungen: Layer-Regeln, eine eingefrorene Lint-Baseline, die nur schrumpfen darf, Prüfung auf Abhängigkeitszyklen und i18n-Parität bei jedem Pull Request
- Native iOS Live Activities, aus Flutter über eine Method-Channel-Brücke gesteuert
- Ein Registrierungsablauf, hinter einem Host-Vertrag paketiert und von zwei Produkten genutzt
Was es ermöglicht
Features gehen in einer Änderung über Web, Mobile und Backend live, und die Plattform tauscht Vereinsdaten in Echtzeit mit GymTeam aus.