Go to file
Amir Alexander Abdelbaki e5c4842784 LAPractice: Karteikarten-Trainer für die LAP-Theoriefragen
Web-App zum Üben der Repetitionsfragen: Fragensets werden als JSON
importiert, Fragen und Antwort-Statistik liegen in SQLite.

Ablauf beim Üben ist selbstkontrolliert – Frage sehen, im Kopf oder dem
Partner antworten, Karte aufdecken, RICHTIG/FALSCH bewerten.

- Server ohne Abhängigkeiten (node:http, node:sqlite, Node 22.5+)
- Import führt Sets mit gleichem Titel zusammen: geänderte Antworten
  werden aktualisiert, fehlende Fragen archiviert, die Statistik bleibt
- Auswahl nach Kategorien/Unterkategorien, Filter auf falsch beantwortete
  oder noch nie gesehene Fragen
- Reihenfolge frei kombinierbar: mischen und/oder Schwächen zuerst
- Endlos-Modus wiederholt, bis die Runde beendet wird; falsche Karten
  kommen in derselben Runde erneut
- Tastatursteuerung, Rundenauswertung und Statistik mit Kategorie-Quoten,
  schwächsten Fragen und 14-Tage-Verlauf

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 10:05:47 +02:00
public LAPractice: Karteikarten-Trainer für die LAP-Theoriefragen 2026-08-28 10:05:47 +02:00
.gitignore LAPractice: Karteikarten-Trainer für die LAP-Theoriefragen 2026-08-28 10:05:47 +02:00
README.md LAPractice: Karteikarten-Trainer für die LAP-Theoriefragen 2026-08-28 10:05:47 +02:00
db.js LAPractice: Karteikarten-Trainer für die LAP-Theoriefragen 2026-08-28 10:05:47 +02:00
lap_it_lernkarten.json LAPractice: Karteikarten-Trainer für die LAP-Theoriefragen 2026-08-28 10:05:47 +02:00
package.json LAPractice: Karteikarten-Trainer für die LAP-Theoriefragen 2026-08-28 10:05:47 +02:00
server.js LAPractice: Karteikarten-Trainer für die LAP-Theoriefragen 2026-08-28 10:05:47 +02:00

README.md

LAPractice

Karteikarten-Trainer für die LAP-Theoriefragen. Fragen kommen als JSON herein, Fragen und Antwort-Statistik liegen danach in einer SQLite-Datei.

Der Ablauf beim Üben ist bewusst selbstkontrolliert: Frage sehen → im Kopf (oder dem Partner) beantworten → Karte aufdecken → RICHTIG / FALSCH.

Starten

npm start           # http://127.0.0.1:4173
npm run dev         # dasselbe, startet bei Dateiänderungen neu

Keine Abhängigkeiten der Server nutzt nur die Node-Standardbibliothek (node:http, node:sqlite). Voraussetzung ist Node 22.5+.

Konfiguration über Umgebungsvariablen: PORT, HOST, LAP_DB (Pfad zur Datenbank, Standard data/lapractice.db).

Fragenset-Format

{
  "title": "Arbeitsunterlagen und Repetitionsfragen zur LAP …",
  "categories": [
    {
      "id": 1,                       // optional
      "title": "Netzwerktechnik",
      "subcategories": [
        {
          "name": "Grundlagen",
          "questions": [
            { "q": "Erklären Sie den Begriff TP-Kabel.", "a": "Twisted-Pair-Kabel …" }
          ]
        }
      ]
    }
  ]
}

Toleranzen beim Import: name statt title, question/answer statt q/a, und eine Kategorie darf ihre questions auch direkt (ohne subcategories) tragen. Fragen ohne Text oder ohne Antwort werden übersprungen.

Erneuter Import: Ein Set mit gleichem title wird zusammengeführt statt dupliziert Fragen werden über Kategorie + Unterkategorie + Fragetext wiedererkannt, geänderte Antworten aktualisiert, neue ergänzt und die Statistik bleibt erhalten. Fragen, die in der neuen Datei fehlen, werden archiviert (nicht gelöscht) und tauchen beim Üben nicht mehr auf.

Üben

  • Auswahl: Kategorien und Unterkategorien einzeln an-/abwählbar, die Auswahl wird pro Fragenset im Browser gemerkt.
  • Fragen (Filter): alle · nur zuletzt falsch beantwortete · nur noch nie gesehene. Die Poolgröße im Startbalken zeigt, wie viele Karten übrig bleiben.
  • Fragen mischen: an = zufällige Reihenfolge, aus = Reihenfolge des Skriptums.
  • Schwächen zuerst: jede dritte Karte ist eine fällige Wiederholung, der Rest neues Material. Lässt sich mit dem Mischen frei kombinieren aus/aus ergibt exakt die Skriptum-Reihenfolge.
  • Endlos üben: die Runde läuft, bis du sie selbst beendest (Esc oder „Beenden"). Ist ein Stapel durch, wird der nächste mit dem aktuellen Wissensstand geholt; falsch beantwortete Karten kommen zusätzlich noch in derselben Runde wieder. Die Anzahl gilt dann als Karten pro Runde.
  • Tastatur: Leertaste aufdecken · 1/ falsch · 2/ richtig · S überspringen (zählt nicht in die Statistik) · Esc Runde beenden.
  • Nach der Runde: Zusammenfassung mit Trefferquote und allen Karten, dazu „Falsche wiederholen" für einen direkten zweiten Durchgang.

Als fällig gilt eine Frage, deren letzte Antwort falsch war, deren Trefferquote unter 70 % liegt oder die länger als 7 Tage nicht dran war.

Datenmodell

sets ─┬─ categories ─┬─ subcategories ─┬─ questions ─┬─ reviews
      │              │                 │             │
      title          title             name          q, a, archived   correct, created_at

reviews speichert jede einzelne Bewertung mit Zeitstempel; alle Kennzahlen (Trefferquote, schwächste Fragen, Tagesverlauf) werden daraus berechnet. Das Zurücksetzen des Fortschritts löscht nur reviews, nie die Fragen.

API

Methode Pfad Zweck
GET /api/sets Fragensets mit Fortschritt
POST /api/sets Import ({ data, filename })
GET /api/sets/:id Kategoriebaum mit Zählern
DELETE /api/sets/:id Set samt Statistik löschen
POST /api/sets/:id/reset nur die Statistik löschen
GET /api/sets/:id/stats Auswertung
POST /api/sets/:id/session Runde zusammenstellen (filter, shuffle, smart, limit)
POST /api/reviews Bewertung speichern