require('dotenv').config(); const express = require('express'); const path = require('path'); const { DB_PATH, initialize } = require('./db'); const { createCorsMiddleware } = require('./middleware/cors'); const { requireAuth } = require('./middleware/auth'); const adminRoutes = require('./routes/admin'); const alertRoutes = require('./routes/alerts'); const assetRoutes = require('./routes/assets'); const assignmentRoutes = require('./routes/assignments'); const authRoutes = require('./routes/auth'); const bookRoutes = require('./routes/books'); const contactRoutes = require('./routes/contacts'); const dashboardRoutes = require('./routes/dashboard'); const dataPortabilityRoutes = require('./routes/dataPortability'); const disposalRoutes = require('./routes/disposals'); const leaseRoutes = require('./routes/leases'); const partRoutes = require('./routes/parts'); const pmRoutes = require('./routes/pm'); const profileRoutes = require('./routes/profile'); const referenceRoutes = require('./routes/reference'); const reportRoutes = require('./routes/reports'); const serviceNowRoutes = require('./routes/servicenow'); const taxRuleRoutes = require('./routes/taxRules'); const templateRoutes = require('./routes/templates'); const workdayRoutes = require('./routes/workday'); function createApp() { initialize(); const app = express(); app.use(createCorsMiddleware()); app.use(express.json({ limit: '12mb' })); app.get('/api/health', (req, res) => { res.json({ ok: true, app: 'MixedAssets', database: DB_PATH }); }); app.use('/api', authRoutes); app.use('/api', requireAuth); app.use('/api', profileRoutes); app.use('/api', dashboardRoutes); app.use('/api', referenceRoutes); app.use('/api', assetRoutes); app.use('/api', alertRoutes); app.use('/api', bookRoutes); app.use('/api', contactRoutes); app.use('/api', disposalRoutes); app.use('/api', leaseRoutes); app.use('/api', partRoutes); app.use('/api', pmRoutes); app.use('/api', assignmentRoutes); app.use('/api', templateRoutes); app.use('/api', taxRuleRoutes); app.use('/api', reportRoutes); app.use('/api', serviceNowRoutes); app.use('/api', dataPortabilityRoutes); app.use('/api', adminRoutes); app.use('/api', workdayRoutes); const distPath = path.join(process.cwd(), 'dist'); app.use(express.static(distPath)); app.get(/.*/, (req, res, next) => { if (req.path.startsWith('/api')) return next(); return res.sendFile(path.join(distPath, 'index.html')); }); app.use((error, req, res, next) => { if (res.headersSent) return next(error); const status = error.status || 500; return res.status(status).json({ error: error.message || 'MixedAssets server error' }); }); return app; } module.exports = { createApp };