Files
mathquest/server.js
2026-01-25 19:32:08 +01:00

84 lines
2.1 KiB
JavaScript

const express = require('express');
const cors = require('cors');
const fs = require('fs');
const path = require('path');
const app = express();
const PORT = process.env.PORT || 3000;
const TASKS_FILE = path.join(__dirname, 'tasks.json');
// Middleware
app.use(cors());
app.use(express.json());
app.use(express.static('public'));
// Lade Aufgaben
function loadTasks() {
try {
const data = fs.readFileSync(TASKS_FILE, 'utf8');
return JSON.parse(data);
} catch (error) {
console.error('Fehler beim Laden der Aufgaben:', error);
return [];
}
}
// Speichere Aufgaben
function saveTasks(tasks) {
fs.writeFileSync(TASKS_FILE, JSON.stringify(tasks, null, 2));
}
// API: Hole alle Aufgaben
app.get('/api/tasks', (req, res) => {
const tasks = loadTasks();
res.json({ tasks });
});
// API: Prüfe Antwort
app.post('/api/check-answer', (req, res) => {
const { taskId, answer } = req.body;
if (!taskId || answer === undefined) {
return res.status(400).json({ error: 'taskId und answer sind erforderlich' });
}
const tasks = loadTasks();
const taskIndex = tasks.findIndex(t => t.id === taskId);
if (taskIndex === -1) {
return res.status(404).json({ error: 'Aufgabe nicht gefunden' });
}
const task = tasks[taskIndex];
const userAnswer = parseInt(answer);
const correctAnswer = parseInt(task.answer);
const isCorrect = userAnswer === correctAnswer;
// Initialisiere attempts Counter falls nicht vorhanden
if (tasks[taskIndex].attempts === undefined) {
tasks[taskIndex].attempts = 0;
}
// Erhöhe Versuchszähler bei jeder Antwortprüfung
tasks[taskIndex].attempts += 1;
// Speichere Antwort, isCorrect und Timestamp in der Task
tasks[taskIndex].userAnswer = userAnswer;
tasks[taskIndex].isCorrect = isCorrect;
tasks[taskIndex].answerTimestamp = new Date().toISOString();
saveTasks(tasks);
res.json({
correct: isCorrect,
correctAnswer: correctAnswer,
points: isCorrect ? task.points : 0
});
});
// Starte Server
app.listen(PORT, () => {
console.log(`MathQuest Server läuft auf http://localhost:${PORT}`);
});