Offizielles Projekthandbuch
learn Dokumentation & Referenz
Vollständiges technisches und didaktisches Handbuch zur Open-Source Lern-Engine, dem 3-Branch/3-Web System, Compiler-Labor und Abschlussprüfungen nach Fachinformatiker-Standard.
💡 1. Übersicht & Philosophie
learn ist als radikal datenschutzfreundliche, paywall-freie Alternative zu kommerziellen Lern-Apps wie Mimo oder SoloLearn konzipiert. Kommerzielle Apps setzen oft auf künstliche Verknappung („Herzen aufgebraucht“, Zwangswerbung, Paywalls vor Prüfungen), intransparente Tracking-SDKs und oberflächliche Multiple-Choice-Klickereien.
100% Freie Software (GPL-3.0) • Keine künstlichen Paywalls • Zero-Telemetry (kein Firebase, kein Google Analytics) • 100% Offline-First via SQLite WAL & IndexedDB • Echte Code-Schreib-Befähigung statt Auswendiglernen.
🏗️ 2. Das 3-Branch & 3-Web System
Um Codebase, Lehrmaterial und Webauftritt sauber zu entkoppeln, setzt learn auf eine strikte 3-Branch- und 3-Web-Architektur:
🌿 Branch 1: main
Reiner Go 1.22 Quellcode, CLI-Runner, native Fyne v2 Android/Desktop-Engine, Pure-Go SQLite WAL-Speicher, Notification-Service und GitHub Actions CI/CD.
📚 Branch 2: content
Vollständig entkoppeltes Curriculum. Enthält JSON-Schemas (`schemas/chapter-v1.json`), Kursmanifeste, Lektionen, Compiler-Bugfix-Szenarien und 90-Min-Prüfungen.
🌐 Branch 3: web
Die vollständige statische Web-Präsenz auf GitHub Pages. Beherbergt das 3-Web-Trio: Showcase (`/learn/`), Web-Wiki (`/learn/wiki/`) und Web-App (`/learn/app/`).
Das 3-Web-Trio im Detail
| Web-Komponente | URL-Pfad | Zweck & Funktion |
|---|---|---|
| 1. Main-Web (Showcase) | https://benzjeremy.github.io/learn/ |
Landingpage nach untis-go Standard: Hero, Feature-Grid, APK & Binary Downloads, Installationsanleitungen, GPL-3.0 Lizenz und Credits. |
| 2. Web-Wiki (Handbuch) | https://benzjeremy.github.io/learn/wiki/ |
Umfassende Dokumentation, Curriculums-Referenz, Compiler-Labor Anleitung, Prüfungs-Modus, F-Droid Setup und Problembehebung. |
| 3. Web-App (Cockpit) | https://benzjeremy.github.io/learn/app/ |
Die eigentliche interaktive Lern-Applikation: 9 Fächer, Lektionen-Player, Compiler-Editor, 90-Minuten-Prüfungen mit Countdown und lokaler Persistenz. |
🎓 3. Curricula & Kernfächer
Die Curricula orientieren sich an der staatlichen Ausbildungsordnung für Fachinformatiker (Anwendungsentwicklung & Systemintegration). Jedes Fach umfasst strukturierte Theorie, interaktive Quizzes, Inline-Code-Aufgaben, Compiler-Bugfixes und eine abschließende Fachprüfung:
- Go (Golang): 8 vollständige Kapitel von Syntax, Kontrollfluss, Slices/Pointers, Structs/Interfaces über Concurrency/Channels bis Tooling & HTTP-Server.
- Cybersecurity: OWASP Top 10, Zero-Trust, symmetrische/asymmetrische Kryptografie (AES-256-GCM, PBKDF2), CSRF & DNS-Rebinding Schutz.
- SQL & Datenbanken: Relationale Modellierung (1:1, 1:n, n:m), DDL/DML, Normalisierung (1NF–3NF), Indizes, ACID-Transaktionen.
- C# & .NET: OOP, Delegates/Events, LINQ, Garbage Collection, async/await und CLR-Internals.
- Astro & Modern Web: Island Architecture, Zero-JS by Default, Content Collections, Static Site Generation (SSG) & SSR.
- Python: Datenstrukturen, List Comprehensions, Decorator, Generatoren, OOP und idiomatische CLI-Tools.
- HTML5 & CSS3: Semantisches Web, Flexbox, CSS Grid, Container Queries, responsive Typografie und Barrierefreiheit (WCAG AAA).
- JavaScript: ESNext, Event Loop, Promises, Closures, DOM-Manipulation, Strict Mode und Prototypal Inheritance.
- PHP: Modernes PHP 8+, Type Hinting, Attributes, PSR-Standards, Composer, PDO und Prepared Statements.
🛠️ 4. Interaktives Compiler-Labor
Damit Lernende nicht nur passive Multiple-Choice-Fragen beantworten, sondern echte Code-Schreib-Kompetenz entwickeln, enthält learn ein interaktives Compiler-Labor direkt im Browser:
// Beispiel aus Go Kapitel 1 (Abschnitt 5: Compiler-Labor)
package main
import "fmt"
func main() {
// BUG: fmt.Printlln existiert nicht!
fmt.Println("Hallo Welt aus Go!")
}
Wird der Fehler nicht behoben, meldet das Terminal Exit Code 1 mit exakter Zeilenangabe: ./main.go:6:5: undefined: fmt.Printlln (did you mean fmt.Println?). Erst bei fehlerfreier Korrektur meldet das Terminal Exit Code 0: Compilation & Run Successful.
🎓 5. 90-Minuten-Abschlussprüfungen
Jedes Fach schließt mit einer umfassenden Abschlussprüfung ab. Diese simuliert eine reale 90-minütige Fachprüfung unter Prüfungsbedingungen:
| Prozentbereich | Deutsche Schulnote | Bewertung |
|---|---|---|
| 92% – 100% | Note 1 | Sehr gut (Auszeichnung) |
| 81% – 91% | Note 2 | Gut (Überdurchschnittlich) |
| 67% – 80% | Note 3 | Befriedigend (Solide Basis) |
| 50% – 66% | Note 4 | Ausreichend (Bestanden) |
| 30% – 49% | Note 5 | Mangelhaft (Wiederholungsbedarf) |
| 0% – 29% | Note 6 | Ungenügend (Nicht bestanden) |
Prüfungs-Features: 90-Minuten Countdown-Timer mit visueller Warnung unter 15 Minuten • Durchmischter Fragenpool • Dozenten-Musterlösung nach Abgabe • Lokale Archivierung aller Prüfungsversuche in IndexedDB.
💡 6. Distraktor-Didaktik ohne Lösungs-Spoilen
In traditionellen Apps führt eine falsche Antwort oft dazu, dass sofort die richtige Lösung eingeblendet wird. Dadurch lernt der Nutzer jedoch nichts, sondern merkt sich nur die Position der richtigen Option.
Wählt der Nutzer beispielsweise := statt des Channel-Operators <-, blendet das System ein: „Didaktischer Hinweis: := ist der Kurzdeklarations-Operator für Variablen (z. B. x := 42) und hat keinen Bezug zu Goroutine-Channels.“ Die Optionen bleiben aktiv, und der Nutzer erarbeitet sich die Lösung selbst.
🔔 7. Lokales Erinnerungssystem
learn respektiert die Privatsphäre des Nutzers. Daher gibt es keinen zentralen Push-Server und keine Cloud-Tracker. Das Benachrichtigungssystem läuft zu 100% lokal auf dem Endgerät:
- Tägliche Erinnerung: Frei wählbare Uhrzeit (z. B. 18:00 Uhr) zur Etablierung einer täglichen Lern-Gewohnheit.
- Höflicher Inaktivitäts-Nudge: Erkennt die App nach 3–5 Tagen keine Aktivität, erinnert sie dezent daran, wieder ein kurzes Kapitel zu absolvieren.
- Web Notifications API: Im Browser über native HTML5 Notifications nach einmaliger Erlaubnis.
- Android AlarmManager: Unter Android über energiesparende Betriebssystem-Alarme ohne Hintergrund-Batterieverbrauch.
📱 8. F-Droid & Android Distribution
Die Android-App ist als echtes, natives Go/Fyne v2 Paket kompiliert (< 20 MB Paketgröße, ~25 MB RAM). Die Distribution erfolgt primär über freie Repositories:
# F-Droid Fastlane Metadaten-Struktur:
fastlane/metadata/android/
├── de-DE/ (title.txt, short_description.txt, full_description.txt)
├── en-US/ (title.txt, short_description.txt, full_description.txt)
└── images/ (icon.png 512x512, featureGraphic.png 1024x500)
Zusätzlich steht das offizielle F-Droid Repository myfdroid unter https://benzjeremy.github.io/myfdroid/repo zur direkten Einbindung in F-Droid, Neo Store und Droid-ify zur Verfügung.
💻 9. CLI & Desktop-Engine
Für Entwickler und Power-User steht das schlanke Go-Binary für Linux und Windows zur Verfügung:
# Installation via Go CLI
go install github.com/benzjeremy/learn/cmd/learn@latest
# Interaktiver Terminal-Modus
learn --cli
# Erinnerungs-Check ausführen
learn --check-reminder
# Lokale SQLite-Datenbank anzeigen
learn --version
❓ 10. Häufige Fragen (FAQ)
Werden meine Daten in der Cloud gespeichert?
Nein. Alle Fortschritte, XP-Punkte, Streaks und Prüfungsergebnisse werden zu 100% lokal gespeichert (SQLite WAL auf Desktop/Android, isolierte IndexedDB im Web-Browser). Null Cloud-Speicher, null Tracking.
Kostet die App oder ein Zertifikat Geld?
Nein. Alle Kurse, Übungen, Compiler-Prüfungen und Notenbescheinigungen sind unter der GNU General Public License v3.0 bedingungslos kostenlos und open source.
Wie kann ich neue Lektionen beitragen?
Über den Branch content! Öffne einen Pull Request gegen das Repository benzjeremy/learn auf GitHub. Nach automatisierter Schema-Validierung wird dein Kurs im nächsten Release freigeschaltet.