# 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: ```bash npm install ``` ## Starten ```bash 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: ```bash 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`: ```ini [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: ```bash sudo systemctl enable mathquest sudo systemctl start mathquest ``` 4. 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