kniazkov.dev

Case · Open-Source-Beitrag

Lern-App für Serbisch: Import/Export und Redesign zur PWA

Eine öffentliche Lern-App für Serbisch auf GitHub: Wörter mit Aussprache, Lektionen, Dialoge, Tests und das Alphabet – eine einzige HTML-Datei ohne Build. Ich habe zwei Pull Requests beigesteuert, beide wurden übernommen: eine Seite, um eigene Lernmaterialien zu teilen, und ein Redesign zur installierbaren Web-App.

Die Lern-App auf dem Computer und auf dem Telefon (Demo-Daten, Oberfläche ins Englische übersetzt)
Rolle
Beiträge per Pull Request
Zeitraum
10/2026
Status
2 von 2 Pull Requests übernommen
Stack
HTML · CSS · JavaScript · PWA
2 / 2Pull Requests übernommen
≈ 1.500geänderte Zeilen – weiterhin ohne Build-Schritt
10+neue Funktionen: Dunkelmodus, Suche, Tagesziel …
Offlineinstallierbar als App, läuft ohne Internet

Video: So funktioniert die App

Video · Englisch · 1:52

Rundgang durch die App

Lernen, Tests, Dialoge, Import und Export, Dunkelmodus und Offline-Modus – auf Englisch, mit KI-Sprecherstimme.

Ausgangslage

  • Eine öffentliche Lern-App auf GitHub für alle, die Serbisch lernen: Wörter nach Themen mit Aussprache, Lektionen mit Mini-Tests, Dialoge, Tests und das Alphabet.
  • Technisch eine einzige HTML-Datei mit JavaScript, ohne Build und ohne Server – Fortschritt und eigene Inhalte liegen im Browser (localStorage).
  • Eigene Themen und Lektionen ließen sich hinzufügen, aber nicht mit anderen teilen; auf dem Computer war die Oberfläche eine schmale Handy-Spalte.

Pull Request 1: eigene Materialien teilen – Import und Export

  • Neue Seite „Meine Materialien“: alle eigenen Themen, Dialoge und Lektionen mit Auswahl und Löschen.
  • Export als ein JSON-Paket – herunterladen, als Text kopieren oder über das Teilen-Menü des Telefons verschicken.
  • Import aus einer Datei oder per Einfügen: versteht das Paket und die alten Einzelformate, zeigt vorher an, was hinzukommt, überspringt fehlerhafte Einträge und fragt bei Duplikaten: ersetzen oder überspringen.
  • Sicherheit: Lektionen enthalten HTML. Weil sie jetzt von anderen kommen können, wird importiertes HTML bereinigt – ohne <script>, on*-Handler und javascript:-Links.
Import: Vorschau mit einem Thema und einem Dialog, darunter die Schaltfläche zum Übernehmen
Import: Die App zeigt vorher, was hinzukommt – hier ein Thema und ein Dialog.
Meine Materialien nach dem Import: Auswahl und Export als Datei oder JSON
Nach dem Import: eigene Materialien auswählen und als Datei oder JSON weitergeben.

Pull Request 2: Redesign zur installierbaren Web-App

Design

  • Neues Designsystem: Farb-Tokens, Schrift Manrope, Karten, Schatten und ruhige Animationen.
  • Dunkelmodus: automatisch wie im System, hell oder dunkel.
  • Telefon: untere Navigationsleiste; Computer (ab 900 px): Seitenmenü und breite Raster.
  • Feedback beim Lernen: Animation für richtige und falsche Antworten, Konfetti für ein gutes Ergebnis.
Startseite nachher
Startseite vorher
VorherNachher
Startseite vorher und nachher – ziehen Sie den Regler.

Neue Funktionen

  • „Zurück“ funktioniert: Jeder Bildschirm hat eine eigene Adresse, Neuladen springt nicht mehr auf die Startseite.
  • Tagesziel mit Fortschrittsring, Lernserie und „Wort des Tages“.
  • Suche über alle Wörter – auch ohne Sonderzeichen: „dovidjenja“ findet „doviđenja“.
  • Fehler wiederholen: eigener Test aus den Wörtern, bei denen man sich geirrt hat; bestes Ergebnis je Thema.
  • Lateinisch oder kyrillisch – umschaltbar in den Einstellungen oder direkt auf der Lernkarte.
  • Aussprache prüfen per Mikrofon (Web Speech API), Wischen auf dem Telefon, Tastenkürzel am Computer, Aktivitätskalender über vier Wochen.

PWA

  • Manifest und Icons: Die App lässt sich auf Telefon und Computer installieren.
  • Service Worker: Sie läuft ohne Internet – auch schon gehörte Wörter klingen offline.
Die App auf dem Telefon: Startseite, Lernkarte, Test und Dunkelmodus
Auf dem Telefon: untere Navigationsleiste, Lernkarte, Test und Dunkelmodus.

So habe ich gearbeitet

Mit Claude Code: den Code der App gelesen und die Änderungen in zwei getrennte Pull Requests aufgeteilt – jeweils mit Beschreibung und Prüfliste. Geprüft: alle Bildschirme bei 375 px Breite, der Desktop bei 1280 px, Zurück und Vor im Browser, Neuladen auf jedem Bildschirm, Start ohne Internet über den Service Worker – und dass alter Fortschritt aus dem localStorage erhalten bleibt. Die App bleibt reines HTML und JavaScript ohne Build: Andere können sie weiter wie bisher bearbeiten.

Screenshots aus der App mit Demo-Daten. Die Oberfläche (im Original Russisch) habe ich für dieses Portfolio ins Englische übersetzt; die Beschreibungen der Pull Requests auf GitHub sind auf Russisch.

Was ich mitbringe

  • In fremden Code schnell einarbeiten und sauber beitragen – mit klar abgegrenzten, gut beschriebenen Pull Requests.
  • Frontend und UX: responsives Design, Dunkelmodus, PWA und Offline-Fähigkeit – ohne Framework und ohne Build.
  • Sicherheit mitdenken: Inhalte von anderen werden geprüft und bereinigt, bevor sie angezeigt werden.

Offen für eine neue Stelle

Lassen Sie uns sprechen.

Ich suche eine Festanstellung als KI-Automatisierer, Entwickler oder KI-Videoproduzent – remote oder vor Ort in der Region.

Antwort in der Regel innerhalb von 24 h
WhatsAppLebenslauf