first commit
This commit is contained in:
51
apps/backend/src/app.ts
Normal file
51
apps/backend/src/app.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user