const { createApp } = require("./app"); const { config } = require("./config"); const { closeMongo, connectToMongo } = require("./db/client"); const { ensureIndexes } = require("./db/indexes"); async function start() { const db = await connectToMongo(); await ensureIndexes(db); const app = createApp(); const server = app.listen(config.port, () => { console.log(`Dune API listening on http://localhost:${config.port}`); console.log(`Public API URL: ${config.public.apiUrl}`); console.log(`Public Swagger UI URL: ${config.public.uiUrl}/docs`); }); async function shutdown(signal) { console.log(`Received ${signal}, shutting down`); server.close(async () => { await closeMongo(); process.exit(0); }); } process.on("SIGINT", shutdown); process.on("SIGTERM", shutdown); } start().catch((error) => { console.error(error); process.exit(1); });