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

90 lines
2.1 KiB
Markdown

# 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