Ausgewählte Projekte
Eine Auswahl aus Kundenaufträgen und eigenen Produkten. Die Beschreibungen zeigen, was ich entwickelt und verantwortet habe.
Das vollständige Projektarchiv und die ausführlichen Fallstudien sind auf Englisch verfügbar.
Vollständiges Archiv ansehen (Englisch)ClassCharts
Schulsoftware für Sitzpläne und Verhaltensmanagement
- Anfragen pro Sekunde zuletzt
- ~1.000
- Instanzen, von Rackspace bis AWS
- 3 → ~100
- zwischen Clouds migriert, ohne Ausfall
- 40+ TB
- App-Downloads
- ~2 Mio.
Als erster Entwickler neben dem CTO habe ich ClassCharts acht Jahre lang mit aufgebaut, von Hunderttausenden bis zu über zehn Millionen Nutzern an Tausenden Schulen. Ich habe das jQuery-Frontend schrittweise auf React umgestellt, die mobilen Apps mit React Native neu entwickelt und die Infrastruktur über Rackspace, GCP und AWS geführt. Dazu kamen CI/CD, automatisierte Tests und Mentoring. Bei der Migration von über 40 TB an Bildern und Assets blieb die Plattform durchgehend online.
- Das jQuery-Frontend im laufenden Betrieb auf React und Redux umgestellt, Funktion für Funktion als eigene Micro-Apps, mit beiden Stacks parallel auf einem Webpack-Build, den ich verantwortet habe
- Die rein native Android-App durch drei React-Native-Apps für Lehrkräfte, Schüler und Eltern ersetzt: sechs Store-Einträge für iOS und Android aus einer Codebasis, später eine Neuentwicklung der Eltern- und Schüler-Apps
- Push-Benachrichtigungen, Offline-Verhalten sowie die Release- und Signierungs-Pipeline der mobilen Apps
- Entwicklung und Produktion mit Docker containerisiert, danach die Plattform auf Kubernetes gebracht
- Die Infrastruktur von Rackspace über GCP zu AWS migriert, von drei Servern auf rund 100 Instanzen, und die Werkzeuge geschrieben, mit denen über 40 TB an Bildern und Assets ohne Ausfall umgezogen sind
- Cypress-End-to-End-Tests für jeden Pull Request über GitHub Actions eingeführt, dazu Unit- und Integrationstests und die CI-Deployment-Pipelines
- Hausaufgaben-Abgabe mit Virenprüfung in unter zwei Wochen ausgeliefert, als die Schulen in der Pandemie schlossen
- Einer von vier Code-Ownern im Haupt-Repository, während das Team von zwei auf mehr als ein Dutzend Entwickler wuchs
Auftraggeber
Edukey Education Ltd
Rolle
Senior Software Engineer
Zeitraum
November 2015 - Dezember 2023
Technologien
PHP CakePHP MySQL JavaScript TypeScript Redis React Redux jQuery Webpack PHPUnit Jest Docker Kubernetes React Native Cypress GitHub Actions
Links
MarketAlerts
KI-gestützte Finanzmarktanalysen mit Echtzeitdaten
Als Founding Engineer habe ich eine von einer Agentur entwickelte Plattform für über 20 globale Märkte übernommen und Webanwendung, mobile Apps, Express-API und Payload-CMS weiterentwickelt. Mit dem Datenteam arbeitete ich an der Python/FastAPI-Plattform und verantwortete die KI-Schicht für die Klassifikation von Finanzsignalen auf Airflow und Kubernetes. Weitere Aufgaben waren Benachrichtigungen über mehrere Kanäle und die Migration von AWS zu GCP. Der Geschäftsbetrieb wurde im März 2026 eingestellt.
- Eine Next.js-Webanwendung als Ersatz für die alte React-Anwendung, dazu Expo- und React-Native-Apps für iOS und Android, alle auf einer Express-API mit Authentifizierung, Abonnements, Berechtigungen und Admin-Werkzeugen
- Die Alert-Engine: Alerts für einzelne Aktien, Watchlists, Screener und Research, mit wählbaren Auslösern und Häufigkeit, zugestellt per E-Mail, Telegram und Push auf iOS und Android über Firebase Cloud Messaging, auf Redis-basierten Warteschlangen
- Import und Abgleich von Broker-Depots über SnapTrade, mit Anbindung an Interactive Brokers, Robinhood, E*TRADE und Webull
- Die KI-Klassifikation auf der Datenplattform des Datenteams: Python-Klassifikatoren mit hierarchischen GPT-Modellen für Finanzereignisse, gespeist von Airflow-Pipelines über SEC-Meldungen, Earnings-Call-Transkripte, Research und Nachrichten
- Ein KI-Aktienanalyst als Chat mit gestreamten Antworten auf Basis einer Live-Websuche (OpenAI und Perplexity), geräteübergreifendem Verlauf und Sprachfragen mit serverseitiger Transkription
- Konfigurierbare Dashboards, Unternehmensanalysen, eine Suche nach Trade-Ideen und Screener, die aktiv bleiben und neue Treffer automatisch aufnehmen
- Abrechnung über Stripe mit tarifabhängigen Funktionen und Payload CMS für die öffentliche Website
- Docker Swarm für Anwendungs- und Worker-Dienste, Admin-Ansichten für Nutzer, Alerts, Warteschlangen und Broker-Verbindungen sowie die Migration von AWS zu GCP für Produkt- und Datenlasten
Auftraggeber
MarketAlerts
Rolle
Founding Engineer
Zeitraum
Mai 2024 - März 2026
Technologien
JavaScript TypeScript React Next.js React Native Expo Zustand PostgreSQL MongoDB Redis Express FastAPI Airflow Jest Docker Docker Swarm Kubernetes Python OpenAI Perplexity SnapTrade Firebase Cloud Messaging Telegram AWS GCP Finance APIs
Links
Website (offline)
Smart-City-Plattform
Backend für vernetzte städtische Infrastruktur
- Microservices mit je eigener Datenbank
- 20+
- städtische Bereiche parallel entwickelt
- 5
Backend-Architektur mit über 20 Microservices auf Kubernetes entworfen und umgesetzt, mit eigener Datenbank und API je Dienst. Kafka verarbeitet Ereignisse, Cassandra speichert Zeitreihen und PostgreSQL die übrigen Daten. Keycloak übernimmt die Identitätsverwaltung, Grafana das Monitoring. Klare API-Verträge und C4-Architekturmodelle dienten als gemeinsame Grundlage für die beteiligten Dienstleisterteams.
- Das Backend als über 20 Microservices auf Kubernetes entworfen, jeder mit eigener Datenbank und API, aufgeteilt in klar abgegrenzte Kontexte, damit mehrere Dienstleisterteams fünf städtische Bereiche parallel entwickeln konnten
- Die Vorgaben einer externen Beratung in C4-Architekturmodelle übersetzt, die zur gemeinsamen Referenz der Dienstleisterteams wurden
- Die Plattformdienste für alle Bereiche in NestJS und TypeScript entwickelt: Nutzer, Onboarding, Benachrichtigungen, Zertifizierung und E-Mail
- Fachdienste entwickelt, darunter Smart Parking, Smart Lighting, ein Dashboard, ein Marktplatz und Support
- APISIX als API-Gateway und Keycloak für die Identitätsverwaltung
- Gerätedaten der IoT-Gateways über Kafka nach Cassandra für Zeitreihen, PostgreSQL für alle übrigen Daten
- Grafana und Prometheus für das Monitoring, GitLab CI und Terraform für die Auslieferung
Auftraggeber
Nicht öffentlich genannt
Rolle
Senior Backend Engineer
Zeitraum
August 2024 - Februar 2025
Technologien
TypeScript Node.js PostgreSQL Cassandra Kafka Docker Kubernetes Terraform CI/CD UML C4 Microservices Loki Grafana Prometheus Keycloak APISIX NestJS GitLab Alibaba Cloud
KI-Lernplattform
Verbrauchserfassung, Abrechnung und Gedächtnis eines KI-Tutors
Backend-Entwicklung für eine EdTech-Plattform zur Prüfungsvorbereitung mit Millionen Schülerinnen und Schülern. Ich habe die Verbrauchserfassung über alle Tarifstufen vereinheitlicht, Guthabenaufladungen neben Abonnements ergänzt und die zugehörige Verwaltung gebaut. Für das Gedächtnis des KI-Tutors entwickelte ich eine Hintergrundpipeline, die dauerhafte Fakten aus Gesprächen extrahiert und nachts zusammenführt und bereinigt. Der Auftraggeber bleibt ungenannt.
- Nachrichtenlimits durch kostenbasierte Verbrauchserfassung ersetzt, einheitlich für alle Tarifstufen, damit das Limit im Produkt den tatsächlichen Token-Kosten jeder Anfrage entspricht
- Eine Deckungsprüfung vor dem Modellaufruf und die Abbuchung erst nach Erfolg, sodass eine fehlgeschlagene Anfrage den Nutzer nichts kostet
- Guthabenaufladungen neben Abonnements über Stripe, einschließlich Banküberweisungen, die erst Tage nach dem Kauf eingehen
- Der Verwaltungsbereich für den Verbrauch, aufgeschlüsselt nach Nutzertyp, damit die Kosten jeder Tarifstufe sichtbar sind
- Die Gedächtnis-Pipeline des KI-Tutors auf Inngest: dauerhafte Fakten werden im Hintergrund aus Gesprächen extrahiert und nachts zusammengeführt und bereinigt
Auftraggeber
AI tutoring startup
Rolle
Senior Software Engineer
Zeitraum
April 2026 - Juni 2026
Technologien
TypeScript Next.js tRPC PostgreSQL Drizzle ORM Inngest Stripe Bun AI/ML
Guestavo
Gästebindung für Restaurants, Bars, Cafés und Veranstaltungsorte
Guestavo ist die Software, mit der unabhängige Restaurants, Bars, Cafés und Veranstaltungsorte ihre Gäste betreuen. Ein typischer Betrieb arbeitet mit einem Reservierungs-Widget, einer Speisekarte als PDF, einem Newsletter-Tool und einer Stempelkarte aus Papier, und keines dieser Werkzeuge weiß, dass der Gast mit der Reservierung, der Gast am Tisch und der Gast im Newsletter dieselbe Person sind. Guestavo führt Reservierungen, Besuche, Kampagnen und Portalaktivität eines Gastes zusammen und deckt auch die Personalseite des Betriebs ab. Von mir konzipiert und vollständig entwickelt, von Produkt und Architektur über Backend, Frontend und Design bis zu Infrastruktur und Deployment. Als Beta mit Warteliste live, auf Englisch, Deutsch und Slowenisch, zuerst für Betriebe in Slowenien und im DACH-Raum.
- TypeScript-Monorepo mit pnpm: Next.js-Verwaltungsanwendung und öffentliche Betriebsseiten, Fastify-API mit OpenAPI-Spezifikation, BullMQ-Worker, PostgreSQL mit Drizzle, Redis, ein MCP-Server und eine CLI
- Ein MCP-Server über stdio und Streamable HTTP, mit dem ein Betrieb Speisekarten, Verfügbarkeit, Reservierungen, Veranstaltungen, Kontakte, Schichten und Auswertungen aus einem KI-Client heraus steuert. Jede Änderung eines Agenten wird mit dem Zustand davor und danach protokolliert und lässt sich rückgängig machen. API-Schlüssel sind pro Organisation, Betrieb und Aktion begrenzt, haben ein Ratenlimit und einen Notschalter
- Speisekarten-Scan: bis zu zehn Fotos einer gedruckten Karte laufen durch OCR und ein Sprachmodell (OpenAI, mit Anthropic und Replicate als Ausweichlösung) und werden zu Kategorien, Gerichten, Preisen, Allergenen und Ernährungshinweisen, die der Betrieb prüft und bestehenden Einträgen zuordnet. Das Abtippen der Karte ist beim Onboarding eines Restaurants die größte Hürde
- Reservierungen auf Ressourcen, Leistungsarten und Zusatzoptionen, mit Verfügbarkeit nach Personenzahl, Öffnungszeiten und Sperrzeiten, Warteliste, Erinnerungen, automatischem Abschluss als erschienen oder nicht erschienen und einer Zuverlässigkeitsbewertung pro Gast
- Personalplanung: Schichten, Besetzung, Abwesenheiten, Stundenzettel mit CSV-Export, Personalkosten im Verhältnis zu den reservierten Gedecken und ein iCal-Feed
- Treueprogramm mit verfallenden Punkten, Stufen, Abzeichen, Serien, Bestenlisten und Prämien, und ein Gästeportal, in dem Gäste ihre Besuche sehen, Prämien einlösen, sich für Veranstaltungen anmelden, Reservierungen verschieben oder stornieren und Feedback geben
- Kampagnen mit Auslösern wie einem neuen Kontakt, einem hinzugefügten Tag oder einem eigenen Ereignis, ein E-Mail-Posteingang für Antworten in beide Richtungen und eine Einwilligungsprüfung pro Kontakt vor jedem Versand. SMS- und WhatsApp-Routing (Twilio, BulkGate, Meta) ist gebaut und per Feature-Flag abgeschaltet
- Veranstaltungen mit Crew-Rollen, Musikwünschen, Gästefotos, Kommentaren und Reaktionen, einem einbettbaren Widget und Synchronisierung mit Facebook-Veranstaltungen
- Anfragen und Angebote: eine Vertriebspipeline, versionierte Angebote, eine Annahmeseite mit Token und die Umwandlung in eine Reservierung
- Digitale Speisekarten mit Allergenen und Ernährungshinweisen, druckfertige Speisekarten als PDF und eine Diashow für Bildschirme im Lokal
- QR-Touchpoints, die Gäste mit E-Mail-Bestätigung und Einwilligungsschritt erfassen, dazu druckfertige QR-Bögen
- Eine Bewertungsseite nach dem Besuch, die jeden Gast zu einer öffentlichen Bewertungsplattform weiterleitet, ohne unzufriedene Gäste auszufiltern
- Organisationen mit mehreren Betrieben, Rollen für Inhaber, Admins und Mitglieder, Personal ohne eigene Lizenz, Auswertungen zu Gedecken, Personalkosten, Reservierungen, Treueprogramm und Outreach sowie Abrechnung über eine Adapterschicht (Stripe live, Adapter für Paddle, PayPal, Polar und Lemon Squeezy gebaut)
- DSGVO-Datenexport und -Löschung, eine Playwright-End-to-End-Suite sowie Unit- und Integrationstests in der CI
Auftraggeber
Eigenes Projekt
Rolle
Eigene Produktentwicklung
Zeitraum
Februar 2026 - heute
Technologien
TypeScript Next.js React React Query Tailwind CSS Fastify Zod PostgreSQL Drizzle ORM Redis BullMQ Stripe Resend MinIO Docker Turborepo Vitest Playwright
Links
AfterGather
Kundengalerien und Gäste-Uploads für Fotografen
Eine White-Label-Medienplattform für Fotografen und Studios. Sie verbindet zwei Aufgaben, für die es sonst getrennte Produkte gibt: private Kundenshootings ausliefern und freigeben lassen, und bei Live-Events Fotos und Videos der Gäste per QR-Code-Upload sammeln. Heute landet die Galerie des Fotografen in einem Werkzeug und die Handyfotos der Gäste in einem Gruppenchat. In AfterGather kommt beides beim selben Event an, unter der Marke des Fotografen, und Brautpaar oder Gastgeber haben alle Bilder an einem Ort. Von mir konzipiert und vollständig entwickelt. In aktiver Entwicklung, mit Zugang über eine öffentliche Warteliste, auf Englisch, Deutsch, Slowenisch, Spanisch und Niederländisch.
- TypeScript-Monorepo mit pnpm: Next.js-16-Webanwendung mit App Router, Fastify-5-API mit TypeBox-Schemas und Swagger-Dokumentation, BullMQ-Worker, PostgreSQL mit Drizzle, Redis, Socket.IO und S3-kompatibler Speicher, dazu eine CLI
- Die API signiert nur die Upload-URLs und berührt die Dateien nie: Gäste laden per QR-Code direkt in den Objektspeicher hoch, große Dateien als fortsetzbare Multipart-Uploads. Auf einer Hochzeit lädt fast der ganze Saal in denselben Minuten hoch, deshalb sind die Upload-Routen idempotent und pro Gast begrenzt
- Eine Worker-Pipeline mit BullMQ: zuerst Virenprüfung mit ClamAV, mit Quarantäne, falls der Scanner ausfällt, dann Vorschauen, Miniaturen und optionale Wasserzeichen für Bilder, HEIC nach JPEG und ffmpeg-Transkodierung von Videos in 720p-H.264-Vorschauen mit Standbild
- Guthabenabrechnung über ein Ledger, in das nur angefügt wird: Gutschriften ändern sich nie, Salden werden aus Buchungen und Reservierungen berechnet statt gespeichert, Idempotenzschlüssel verhindern, dass ein erneut zugestellter Zahlungs-Webhook doppelt gutschreibt, und Zahlungsanbieter sitzen hinter einer Adapterschicht mit Stripe live
- Sechs Zugriffsmodi pro Projekt, von öffentlich bis nur auf Einladung, und Links, die sich auf eine Sammlung beschränken, mit Passwort schützen, in der Nutzung begrenzen, befristen und widerrufen lassen
- Moderation mit Freigeben, Ablehnen und Sammelaktionen für Uploads und Kommentare, dazu eine KI-Sicherheitsbewertung, die markierte Fotos vom Bildschirm vor Ort fernhält
- Eine Live-Diashow für das Event über Socket.IO mit Polling als Rückfallebene, mehreren Räumen und Fernsteuerung zum Pausieren, Anheften und Weiterschalten
- Bildauswahl für Kunden mit Favoriten unter weichen oder harten Limits, einer Ansicht der Auswahl, Bearbeitungswünschen mit Sprachnotizen und Wasserzeichen
- Eigene Domains mit DNS-Prüfung, TLS auf Abruf über Caddy mit automatischer Erneuerung und Branding bis in Galerien und Transaktions-E-Mails
- KI-Bildverbesserung, Stiländerungen und Hintergrundbearbeitung mit Freigabe vor der Veröffentlichung, Foto-zu-Video sowie Bildunterschriften und Auswahl der Höhepunkte für Rückblicke, über sechs Modellanbieter mit Freigabelisten pro Workspace und Projekt und einer Evaluierungsumgebung
- Datenmodell aus Workspace, Projekt, Sammlung und Asset mit Teams, Rollen und Berechtigungen pro Mitglied, damit ein Studio Marke, Kundenprojekte und Event-Seiten an einer Stelle führt
- Gäste übernehmen ihre Uploads später per Magic Link und können Nutzungsrechte widerrufen. IP-Adressen werden nur als gesalzener Hash gespeichert
- ZIP-Downloads mit Rechten pro Link für Originale oder Vorschauen, druckfertige QR-Tischkarten, Rückblickseiten für Events sowie Erinnerungs- und Zusammenfassungs-E-Mails
- Zwei-Faktor-Anmeldung per E-Mail-Code oder Authenticator-App, Anmeldung mit Google und GitHub, API-Schlüssel, Web-Push, DSGVO-Export und -Löschung, versionierte Rechtstexte und eine Playwright-Suite für Chromium, WebKit und Mobilgeräte
Auftraggeber
Eigenes Projekt
Rolle
Eigene Produktentwicklung
Zeitraum
April 2026 - heute
Technologien
TypeScript Next.js React React Query Tailwind CSS Fastify TypeBox PostgreSQL Drizzle ORM Redis BullMQ Stripe MinIO Docker Turborepo Playwright Vitest Socket.IO FFmpeg ClamAV
Links
Metis
Nachrichtenaggregation, KI-Klassifikation und Suche
Langjähriges eigenes Projekt für Finanznachrichten und Marktdaten mit rund 100.000 Artikeln täglich. ClickHouse übernimmt Analysen, Meilisearch und Qdrant die Suche, Redis das Caching und BullMQ die Verarbeitung. Selbst gehostete Modelle liefern unter anderem Embeddings, Clustering und Spracherkennung. Die Plattform wird laufend weiterentwickelt.
- Erfassung aus über 5.000 RSS-Feeds, Newslettern und Archiven rund um die Uhr, etwa 100.000 Artikel am Tag
- Eine ereignisgesteuerte Artikel-Pipeline mit BullMQ und RabbitMQ
- Speicher nach Aufgabe getrennt: PostgreSQL für relationale Daten, ClickHouse für Analysen, Meilisearch für die Volltextsuche, Qdrant für die Vektorsuche und Redis für das Caching
- Selbst gehostete Modelle für Embeddings, Clustering, Named-Entity-Recognition, Sentiment und Spracherkennung, dazu LLM-Zusammenfassungen über OpenAI, Anthropic und Ollama
- Themen-Tagging und Beziehungen zwischen Entitäten, abgeglichen mit Echtzeit-Kursen von Alpaca und Binance
- NestJS- und FastAPI-Dienste mit Worker, Client-API und MCP-Server in einem NX-Monorepo auf Docker Swarm und Kubernetes mit Grafana
Auftraggeber
Eigenes Projekt
Rolle
Eigene Produktentwicklung
Zeitraum
Juni 2021 - heute
Technologien
TypeScript React Zustand Jotai Zod React Router React Query Tailwind CSS NestJS PostgreSQL ClickHouse Redis Meilisearch MinIO Cypress Docker Docker Swarm Kubernetes AI/ML GitHub Actions TypeORM BullMQ NX
MoaiTime
Open-Source-Plattform für persönliche Produktivität
Kalender, Aufgaben, Gewohnheiten, Notizen, Fokus-Sitzungen und Stimmungserfassung in einer Anwendung. Ich habe Datenmodell, API, Webanwendung und Deployment selbst entwickelt. Der Schwerpunkt lag darauf, die miteinander verbundenen Bereiche in einer gemeinsamen Codebasis konsistent zu halten. TypeScript, React, NestJS, PostgreSQL und Redis.
- Kalender und Termine, Aufgaben und Listen, Gewohnheiten mit Serien, Ziele, Notizen, Stimmungserfassung und Fokus-Sitzungen, alle miteinander verknüpft in einem Produkt
- Teams und Organisationen, geteilte Kalender, Einladungen und das Folgen anderer Nutzer
- Erfolge und Erfahrungspunkte, berechnet von Hintergrundprozessen, dazu Benachrichtigungen in der App
- Ein eigenes, getestetes Paket für wiederkehrende Termine
- Eine NestJS-API, eine React-Webanwendung, eine mobile App mit Capacitor und eine CLI mit Commander in einem NX-Monorepo
- BullMQ und RabbitMQ für Jobs und globale Ereignisse, PostgreSQL und Redis, mit Tests der Datenschicht auf zwei Ebenen
- Anmeldung ohne Passwort und Datenexport für Nutzer, Open Source und selbst hostbar
Auftraggeber
Eigenes Projekt
Rolle
Eigene Produktentwicklung
Zeitraum
Oktober 2023 - Mai 2024
Technologien
TypeScript React Zustand Jotai Zod React Router React Query Tailwind CSS NestJS PostgreSQL Redis MinIO Cypress Docker Docker Swarm Kubernetes GitHub Actions Drizzle ORM BullMQ Capacitor Turborepo
Links