diff --git a/services/mam-api/src/index.js b/services/mam-api/src/index.js new file mode 100644 index 0000000..7606e61 --- /dev/null +++ b/services/mam-api/src/index.js @@ -0,0 +1,61 @@ +import 'dotenv/config'; +import express from 'express'; +import cors from 'cors'; +import session from 'express-session'; +import ConnectPgSimple from 'connect-pg-simple'; +import pool from './db/pool.js'; +import { errorHandler } from './middleware/errors.js'; + +// Import routes +import assetsRouter from './routes/assets.js'; +import projectsRouter from './routes/projects.js'; +import binsRouter from './routes/bins.js'; +import jobsRouter from './routes/jobs.js'; +import captureRouter from './routes/capture.js'; + +const app = express(); +const PORT = process.env.PORT || 3000; + +// Middleware +app.use(cors()); +app.use(express.json()); + +// Session store +const PgSession = ConnectPgSimple(session); + +app.use( + session({ + store: new PgSession({ + pool, + tableName: 'sessions', + }), + secret: process.env.SESSION_SECRET || 'your-secret-key', + resave: false, + saveUninitialized: false, + cookie: { + secure: process.env.NODE_ENV === 'production', + httpOnly: true, + maxAge: 1000 * 60 * 60 * 24, // 24 hours + }, + }) +); + +// Health check +app.get('/health', (req, res) => { + res.json({ status: 'ok' }); +}); + +// API Routes +app.use('/api/v1/assets', assetsRouter); +app.use('/api/v1/projects', projectsRouter); +app.use('/api/v1/bins', binsRouter); +app.use('/api/v1/jobs', jobsRouter); +app.use('/api/v1/capture', captureRouter); + +// Error handler +app.use(errorHandler); + +// Start server +app.listen(PORT, () => { + console.log(`MAM API listening on port ${PORT}`); +});