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.

🚧
Pre-Release Status: learn befindet sich in aktiver Entwicklung und ist noch nicht final fertiggestellt. Alle Versionen und Builds sind Pre-Releases (Work in Progress).

💡 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.

🛡️ Unsere Kernprinzipien

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!")
}
⚠️ Realistische Terminal-Ausgaben

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 1Sehr gut (Auszeichnung)
81% – 91%Note 2Gut (Überdurchschnittlich)
67% – 80%Note 3Befriedigend (Solide Basis)
50% – 66%Note 4Ausreichend (Bestanden)
30% – 49%Note 5Mangelhaft (Wiederholungsbedarf)
0% – 29%Note 6Ungenü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.

🧠 Wie learn Feedback liefert

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.