Portfolio

Language Loops

Überblick

Language Loops ist eine Anwendung zum Sprachenlernen in kurzen, wiederkehrenden Zyklen. Statt eine lange Lektion durchzuarbeiten, konzentrieren sich die Nutzer jeweils auf einen Satz, begegnen ihm in unterschiedlichen Kontexten erneut und festigen so schrittweise Wortschatz und Aussprache.

Das Projekt wird als Webplattform mit getrennten Diensten für Benutzeroberfläche, API und KI-Funktionen entwickelt. Die aktuelle Architekturarbeit konzentriert sich auf den Wechsel vom bisherigen Firebase-Stack zu PostgreSQL, Keycloak und containerisierten Diensten.

Produktfunktionen

Das Produkt umfasst:

  • Den Explore-Modus zum Üben vorbereiteter Sprach-Loops
  • Den Hunt-Modus für personalisierte Sammlungen
  • Übungen mit jeweils einem Satz
  • KI-gestützte Erstellung und Analyse von Lerninhalten mit Gemini
  • Aussprache der Sätze durch Sprachsynthese
  • Erfassung von Fortschritt, Lernserien und Erfolgen
  • Unterstützung für Englisch, Spanisch, Italienisch, Französisch, Deutsch, Portugiesisch, Armenisch und Russisch
  • Einen Blog über Sprachpraxis, bereitgestellt über Mailoo

Einige personalisierte Funktionen setzen eine Registrierung voraus. Die Keycloak-Anbindung und der Abruf von Lerndaten über die neue API befinden sich in der aktuellen Weboberfläche noch in Arbeit. Deshalb bleiben der Gastzugang und statische Adapter vorerst von der Zielarchitektur getrennt.

Architektur

Die Zielarchitektur von Language Loops umfasst:

  • Eine Webanwendung auf Basis von Next.js
  • Eine HTTP-API mit Hono
  • Einen separaten KI-Dienst für Gemini
  • PostgreSQL als zentrale Datenbank
  • Keycloak für die Authentifizierung
  • Gemeinsame Pakete für Typen, Konstanten und Konfiguration
  • Mailoo als Headless-CMS für den Blog
  • Einen Zahlungsdienst für mehrere Anbieter

Die frühere Implementierung nutzte Firebase Authentication, Firestore, Google Cloud Functions und Pub/Sub. Dieser Stack ist im Repository als veraltet gekennzeichnet. Die neue API stellt derzeit ein Grundgerüst und einen Health-Endpunkt bereit. Daten und Produktabläufe werden daher schrittweise migriert und nicht als bereits abgeschlossen dargestellt.

Infrastruktur & SRE

Für das Projekt wurden eingerichtet:

  • GitLab CI für Prüfungen, Tests, Abhängigkeits-Audits und Builds
  • Container-Builds mit Kaniko
  • Separate Docker-Images für Webanwendung, API und KI-Dienst
  • SonarQube-Prüfungen der Codequalität
  • Renovate für Abhängigkeits-Updates
  • Eine lokale Umgebung mit PostgreSQL und Keycloak über Testcontainers
  • GitOps-Konfiguration für die angestrebte Produktionsumgebung
  • Serverseitige Speicherung der Schlüssel für Mailoo, Gemini und Zahlungsanbieter

Redis wurde bewusst noch nicht in den neuen Stack aufgenommen. Es soll erst hinzukommen, wenn ein konkreter Anwendungsfall tatsächlich eine Queue benötigt. Dadurch bleibt die Architektur während der Migration übersichtlicher und erhält keine vorzeitige Infrastrukturabhängigkeit.

Technische Herausforderungen

Die zentrale technische Aufgabe von Language Loops besteht darin, eng an Firebase und GCP gekoppelte Komponenten durch eine portable Servicearchitektur zu ersetzen, ohne die Produktentwicklung anzuhalten.

Dazu gehören:

  • Der Wechsel von Firebase Authentication zu Keycloak
  • Die Migration der Daten von Firestore zu PostgreSQL
  • Der Ersatz mehrerer Cloud Functions durch containerisierte API- und KI-Dienste
  • Die Trennung aktueller Dokumentation von veralteten Inhalten
  • Die Anbindung der Produktabläufe an die neue API anstelle temporärer Adapter
  • Die sichere Speicherung von Schlüsseln für KI- und Zahlungsintegrationen
  • Der Erhalt von Sprach-Loops, Sprachsynthese und Personalisierung während des Plattformwechsels

Das Projekt verbindet Produktentwicklung mit schrittweiser Architekturmodernisierung und trennt noch nicht abgeschlossene Komponenten klar von bereits funktionierenden Möglichkeiten.