From 9a9259628a10684f2e692da8051fb7b5931bda46 Mon Sep 17 00:00:00 2001 From: Zac Gaetano Date: Tue, 7 Apr 2026 21:58:25 -0400 Subject: [PATCH] add services/mam-api/src/index.js --- services/mam-api/src/index.js | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 services/mam-api/src/index.js 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}`); +});