Files
mathquest/README.md
Lukas Cremer 37b77fdb40 initial page
2026-01-20 19:48:07 +01:00

2.1 KiB

MathQuest - Mathe-Lernseite für Kinder

Eine einfache und spaßige Mathe-Lernseite mit Quest-Punktesystem für Kinder.

Features

  • 🎯 Einfache Mathe-Aufgaben (Addition, Subtraktion, Multiplikation)
  • Quest-Punktesystem - jede Aufgabe gibt Punkte
  • 📊 Fortschrittsbalken zur Visualisierung der Gesamtpunktzahl
  • 💾 Persistente Speicherung der Punkte (JSON-Datei)
  • 🎨 Kindgerechtes, buntes Design

Installation

  1. Node.js installieren (falls noch nicht vorhanden)

  2. Abhängigkeiten installieren:

npm install

Starten

npm start

Die Seite läuft dann auf http://localhost:3000

Auf VPS deployen

  1. Code auf den VPS hochladen
  2. npm install ausführen
  3. Mit PM2 oder systemd als Service laufen lassen:

Mit PM2:

npm install -g pm2
pm2 start server.js --name mathquest
pm2 save
pm2 startup

Mit systemd:

Erstelle eine Service-Datei /etc/systemd/system/mathquest.service:

[Unit]
Description=MathQuest Server
After=network.target

[Service]
Type=simple
User=dein-user
WorkingDirectory=/pfad/zum/mathquest
ExecStart=/usr/bin/node server.js
Restart=always

[Install]
WantedBy=multi-user.target

Dann:

sudo systemctl enable mathquest
sudo systemctl start mathquest
  1. Nginx als Reverse Proxy konfigurieren (optional)

Architektur

  • tasks.json: Enthält alle Mathe-Aufgaben (Fragen, Antworten, Punkte)
    • Wird beim Prüfen von Antworten aktualisiert
    • Speichert userAnswer und isCorrect für jede Aufgabe
  • Backend: Prüft Antworten und speichert sie direkt in der Task
  • Frontend: Lädt Aufgaben, berechnet Gesamtpunktzahl aus korrekt beantworteten Aufgaben

API Endpoints

  • GET /api/tasks - Lädt alle Aufgaben (inkl. gespeicherte Antworten)
  • POST /api/check-answer - Prüft eine Antwort (taskId, answer)
    • Speichert userAnswer und isCorrect in der Task
    • Gibt zurück: correct, correctAnswer, points

Anpassungen

  • Aufgaben können in tasks.json angepasst werden
  • Design kann in public/style.css angepasst werden
  • Port kann über Umgebungsvariable PORT geändert werden