Files
FuerDieCuts/server/index.js
T
ferdi2goandClaude Opus 5.5 d7102d04a4 Import-Oberfläche mit Zeitraum, Clipauswahl und Upload bauen
Der Browser liest den entpackten Exportordner selbst, schlägt Montag bis
Freitag der Vorwoche vor, zeigt Videos pro Tag und warnt bei Lücken und
fehlenden Dateien. Nur die gewählten Videos werden hochgeladen; ein
abgebrochener Upload lässt sich in der Projektansicht fortsetzen.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 10:04:40 +00:00

52 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import http from 'node:http';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import express from 'express';
import { createApp } from './app.js';
import { loadSessionSecret } from './auth.js';
import { loadConfig } from './config.js';
import { probe } from './media.js';
import { createProjectStore } from './projects.js';
const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
// Lokal liest der Entwicklungsserver eine .env; in Produktion setzt VCH die Umgebung.
if (process.env.NODE_ENV !== 'production') {
try {
process.loadEnvFile(path.join(rootDir, '.env'));
} catch {
// keine .env vorhanden
}
}
const config = loadConfig();
if (!config.pin) {
console.warn('APP_PIN ist nicht gesetzt – Anmeldung ist nicht möglich.');
}
const store = createProjectStore({ dataDir: config.dataDir, probe });
const app = createApp({ config, secret: loadSessionSecret(config), store });
const server = http.createServer(app);
if (config.isProduction) {
const distDir = path.join(rootDir, 'dist');
app.use(express.static(distDir));
app.use((req, res, next) => {
if (req.method !== 'GET') return next();
res.sendFile(path.join(distDir, 'index.html'));
});
} else {
// Im Entwicklungsbetrieb liefert Vite das Frontend über denselben Port aus.
const { createServer } = await import('vite');
const vite = await createServer({
root: rootDir,
appType: 'spa',
server: { middlewareMode: true, hmr: { server } },
});
app.use(vite.middlewares);
}
server.listen(config.port, '0.0.0.0', () => {
console.log(`FuerDieCuts läuft auf Port ${config.port}`);
});