Files
FEDEO/src/index.ts
2025-09-02 18:47:44 +02:00

67 lines
2.0 KiB
TypeScript

import Fastify from "fastify";
import swaggerPlugin from "./plugins/swagger"
import supabasePlugin from "./plugins/supabase";
import healthRoutes from "./routes/health";
import meRoutes from "./routes/me";
import tenantRoutes from "./routes/tenant";
import tenantPlugin from "./plugins/tenant";
import authRoutes from "./routes/auth";
import authRoutesAuthenticated from "./routes/auth-authenticated";
import authPlugin from "./plugins/auth";
import adminRoutes from "./routes/admin";
import corsPlugin from "./plugins/cors";
import resourceRoutes from "./routes/resources";
import fastifyCookie from "@fastify/cookie";
import historyRoutes from "./routes/history";
import fileRoutes from "./routes/files";
import {sendMail} from "./utils/mailer";
async function main() {
const app = Fastify({ logger: true });
/*app.addHook("onRequest", (req, reply, done) => {
console.log("Incoming:", req.method, req.url, "Headers:", req.headers)
done()
})*/
// Plugins Global verfügbar
await app.register(swaggerPlugin);
await app.register(corsPlugin);
await app.register(supabasePlugin);
await app.register(tenantPlugin);
app.register(fastifyCookie, {
secret: process.env.COOKIE_SECRET || "supersecret", // optional, für signierte Cookies
})
// Öffentliche Routes
await app.register(authRoutes);
await app.register(healthRoutes);
//Geschützte Routes
await app.register(async (subApp) => {
await subApp.register(authPlugin);
await subApp.register(authRoutesAuthenticated);
await subApp.register(meRoutes);
await subApp.register(tenantRoutes);
await subApp.register(adminRoutes);
await subApp.register(resourceRoutes);
await subApp.register(historyRoutes);
await subApp.register(fileRoutes);
},{prefix: "/api"})
// Start
try {
await app.listen({ port: 3100 });
console.log("🚀 Server läuft auf http://localhost:3100");
} catch (err) {
app.log.error(err);
process.exit(1);
}
}
main();