diff --git a/backend/src/server.ts b/backend/src/server.ts new file mode 100644 index 0000000..078e0d7 --- /dev/null +++ b/backend/src/server.ts @@ -0,0 +1,53 @@ +import fastify from 'fastify'; +import cors from '@fastify/cors'; +import rateLimit from '@fastify/rate-limit'; +import swagger from '@fastify/swagger'; +import swaggerUi from '@fastify/swagger-ui'; + +const app = fastify({ logger: true }); + +// Register plugins +await app.register(cors, { + origin: 'https://cad.media-on.de' +}); + +await app.register(rateLimit, { + max: 100, + timeWindow: '1 minute' +}); + +await app.register(swagger, { + openapi: { + info: { + title: 'web-cad API', + description: 'API for web-cad - Web-based 2D CAD for Event Seating Plans', + version: '0.0.1' + }, + servers: [{ + url: 'https://cad.media-on.de' + }] + } +}); + +await app.register(swaggerUi, { + routePrefix: '/docs', + uiConfig: { + deepLinking: false + }, + staticCSP: true, + transformSpecification: (swaggerObject) => { + return swaggerObject; + } +}); + +// Define a route +app.get('/', async () => { + return { message: 'Welcome to web-cad API' }; +}); + +// Define a health check route +app.get('/health', async () => { + return { status: 'OK' }; +}); + +export default app; \ No newline at end of file