import express from 'express'; import cors from 'cors'; import { apiReference } from '@scalar/express-api-reference'; import { readFileSync } from 'fs'; import { dirname, join } from 'path'; import { fileURLToPath } from 'url'; import coolifyRoutes from './routes/coolify.js'; const __dirname = dirname(fileURLToPath(import.meta.url)); const spec = JSON.parse(readFileSync(join(__dirname, 'openapi.json'), 'utf8')); const app = express(); const PORT = process.env.PORT || 3100; app.use(cors()); app.use(express.json()); // API routes app.use('/api/coolify', coolifyRoutes); // OpenAPI spec app.get('/openapi.json', (req, res) => res.json(spec)); // Scalar API docs app.use('/reference', apiReference({ spec: { url: '/openapi.json' } })); // Health check app.get('/api/health', (req, res) => res.json({ status: 'ok', timestamp: new Date().toISOString() })); app.listen(PORT, () => { console.log(`API server running on http://localhost:${PORT}`); console.log(`Scalar docs at http://localhost:${PORT}/reference`); });