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

75 lines
1.8 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;
// Speichere Antwort und isCorrect in der Task
tasks[taskIndex].userAnswer = userAnswer;
tasks[taskIndex].isCorrect = isCorrect;
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}`);
});