import cors from 'cors'; import express from 'express'; import helmet from 'helmet'; import pinoHttp from 'pino-http'; import rateLimit from 'express-rate-limit'; import { router } from './routes/index.js'; import { notFoundHandler } from './middlewares/not-found.js'; import { errorHandler } from './middlewares/error-handler.js'; import { logger } from './config/logger.js'; export function createApp() { const app = express(); app.use(helmet()); app.use( cors({ origin: '*', credentials: true }) ); app.use(express.json({ limit: '10mb' })); app.use(express.urlencoded({ extended: true })); app.use( rateLimit({ windowMs: 60_000, limit: 100, legacyHeaders: false }) ); app.use( pinoHttp({ logger, autoLogging: false }) ); app.get('/', (_req, res) => { res.json({ name: 'AI Bill API', version: '0.1.0', uptime: process.uptime() }); }); app.use('/api', router); app.use(notFoundHandler); app.use(errorHandler); return app; }