Dateien nach "backend/src" hochladen

This commit is contained in:
2026-05-26 14:29:34 +02:00
parent 061c8bad3b
commit 1aa635783b
2 changed files with 16 additions and 14 deletions

View File

@@ -83,10 +83,10 @@ db.exec(`
`); `);
// Standard-Admin beim ersten Start anlegen // Standard-Admin beim ersten Start anlegen
if (!db.prepare('SELECT id FROM users WHERE username = ?').get('admin')) { if (db.prepare('SELECT COUNT(*) c FROM users').get().c === 0) {
db.prepare('INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)') db.prepare('INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)')
.run('admin', bcrypt.hashSync('admin123', 12), 'admin'); .run('admin', bcrypt.hashSync('admin123', 12), 'admin');
console.log('✅ Admin angelegt: admin / admin123 → Bitte Passwort sofort ändern!'); console.log('✅ Erster Start: Admin angelegt: admin / admin123 → Bitte Passwort sofort ändern!');
} }
// ── Migrationen (werden bei jedem Start geprüft) ───────────────────────────── // ── Migrationen (werden bei jedem Start geprüft) ─────────────────────────────

View File

@@ -2,19 +2,18 @@ const express = require('express');
const path = require('path'); const path = require('path');
const fs = require('fs'); const fs = require('fs');
require('./db'); // Datenbank + Tabellen initialisieren require('./db');
const app = express(); const app = express();
app.use(express.json()); app.use(express.json());
// ── Core-Routen ─────────────────────────────────────────────────────────────── // ── API ───────────────────────────────────────────────────────────────────────
app.use('/api/auth', require('./routes/auth')); app.use('/api/auth', require('./routes/auth'));
app.use('/api/admin', require('./routes/admin')); app.use('/api/admin', require('./routes/admin'));
app.use('/api/dashboard', require('./routes/dashboard')); app.use('/api/dashboard', require('./routes/dashboard'));
app.use('/api/system', require('./routes/system')); app.use('/api/system', require('./routes/system'));
// ── Tool-Routen automatisch laden ───────────────────────────────────────────── // Tool-Routen automatisch laden
// Neues Tool: Datei unter src/tools/<name>/routes.js ablegen → wird automatisch eingebunden
const toolsDir = path.join(__dirname, 'tools'); const toolsDir = path.join(__dirname, 'tools');
fs.readdirSync(toolsDir, { withFileTypes: true }) fs.readdirSync(toolsDir, { withFileTypes: true })
.filter(d => d.isDirectory()) .filter(d => d.isDirectory())
@@ -26,16 +25,19 @@ fs.readdirSync(toolsDir, { withFileTypes: true })
} }
}); });
// ── React-Frontend ausliefern ───────────────────────────────────────────────── // ── Frontend ──────────────────────────────────────────────────────────────────
const PUBLIC = path.join(__dirname, '../public'); const PUBLIC = path.join(__dirname, '../public');
// Service Worker braucht diesen Header damit er auf '/' zugreifen darf app.get('/manifest.json', (_req, res) => {
app.use((req, res, next) => { res.setHeader('Content-Type', 'application/manifest+json');
if (req.path === '/sw.js') { res.setHeader('Cache-Control', 'no-cache');
res.sendFile(path.join(PUBLIC, 'manifest.json'));
});
app.get('/sw.js', (_req, res) => {
res.setHeader('Content-Type', 'application/javascript');
res.setHeader('Service-Worker-Allowed', '/'); res.setHeader('Service-Worker-Allowed', '/');
res.setHeader('Cache-Control', 'no-cache'); res.setHeader('Cache-Control', 'no-cache');
} res.sendFile(path.join(PUBLIC, 'sw.js'));
next();
}); });
app.use(express.static(PUBLIC)); app.use(express.static(PUBLIC));