This commit is contained in:
2026-07-02 22:13:33 +02:00
parent b343ad8a38
commit ba6c35f76d
30 changed files with 2752 additions and 2 deletions
+53
View File
@@ -0,0 +1,53 @@
const path = require("path");
const express = require("express");
const cors = require("cors");
const { connect } = require("./db");
const peopleRouter = require("./routes/people");
const projectsRouter = require("./routes/projects");
const tasksRouter = require("./routes/tasks");
const absencesRouter = require("./routes/absences");
const capacityRouter = require("./routes/capacity");
const app = express();
const PORT = process.env.PORT || 3000;
app.use(cors());
app.use(express.json());
app.get("/api/health", (req, res) => res.json({ status: "ok" }));
app.use("/api/people", peopleRouter);
app.use("/api/projects", projectsRouter);
app.use("/api/tasks", tasksRouter);
app.use("/api/absences", absencesRouter);
app.use("/api/capacity", capacityRouter);
// Gebautes Frontend (Vite -> dist) ausliefern
const frontendDist = path.join(__dirname, "..", "public");
app.use(express.static(frontendDist));
// SPA-Fallback: alles, was nicht /api ist, liefert die index.html aus
app.get(/^(?!\/api).*/, (req, res) => {
res.sendFile(path.join(frontendDist, "index.html"));
});
app.use((err, req, res, next) => {
console.error(err);
res.status(500).json({ error: "Interner Serverfehler" });
});
async function start() {
try {
await connect();
app.listen(PORT, () => {
console.log(`Jahresplanung-Server laeuft auf Port ${PORT}`);
});
} catch (err) {
console.error("Konnte keine Verbindung zu MongoDB herstellen:", err);
process.exit(1);
}
}
start();