require("dotenv").config({quiet:true}); //DB Setup const sqlite3 = require('sqlite3').verbose(); const dbFile = process.env.DB_FILE || 'database.db'; global.db = new sqlite3.Database(dbFile, (err) => { if (err) { console.error('Could not connect to database', err); process.exit(1); // We simply CANNOT continue without a database } else { console.log('Connected to database'); require("./migrations.js")(global.db); } }); //Express Setup const express = require('express'); const app = express(); const port = process.env.SERVER_PORT || 3000; app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(express.static('public')); // Load routes dynamically from routes/** const fs = require('fs'); const path = require('path'); const routesPath = path.join(__dirname, 'routes'); // Load recursively function loadRoutes(dir) { fs.readdirSync(dir).forEach(file => { const fullPath = path.join(dir, file); if (fs.lstatSync(fullPath).isDirectory()) { loadRoutes(fullPath); } else if (file.endsWith('.js')) { const route = require(fullPath); if (route.path && route.router) { app.use(route.path, route.router); console.log(`Loaded route: ${route.path} from ${fullPath}`); } } }); } loadRoutes(routesPath); app.listen(port, () => { console.log(`Listening on ${port}`); });