63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
/**
|
|
* Backend Entry Point
|
|
*
|
|
* Purpose: Initialize Express app, apply middleware, mount routes, start server
|
|
* This is where the entire backend application comes together
|
|
*/
|
|
|
|
import express, { Application } from 'express';
|
|
import cors from 'cors';
|
|
import helmet from 'helmet';
|
|
import compression from 'compression';
|
|
import { appConfig } from './config/app';
|
|
import { requestLogger } from './middlewares/requestLogger';
|
|
import { errorHandler } from './middlewares/errorHandler';
|
|
|
|
// Initialize Express app
|
|
const app: Application = express();
|
|
|
|
// Security middleware
|
|
app.use(helmet());
|
|
app.use(cors({ origin: appConfig.corsOrigin }));
|
|
|
|
// Body parsing
|
|
app.use(express.json({ limit: '10mb' }));
|
|
app.use(express.urlencoded({ extended: true, limit: '10mb' }));
|
|
|
|
// Compression
|
|
app.use(compression());
|
|
|
|
// Request logging
|
|
app.use(requestLogger);
|
|
|
|
// Health check endpoint
|
|
app.get('/health', (req, res) => {
|
|
res.json({
|
|
success: true,
|
|
message: 'Server is running',
|
|
environment: appConfig.env,
|
|
timestamp: new Date().toISOString(),
|
|
});
|
|
});
|
|
|
|
// API Routes
|
|
// TODO: Import and mount your route files here
|
|
// Example:
|
|
// import authRoutes from './routes/auth';
|
|
// import productRoutes from './routes/products';
|
|
// app.use('/api/auth', authRoutes);
|
|
// app.use('/api/products', productRoutes);
|
|
|
|
// Error handling (must be last)
|
|
app.use(errorHandler);
|
|
|
|
// Start server
|
|
const PORT = appConfig.port;
|
|
app.listen(PORT, () => {
|
|
console.log(`🚀 Backend server running on http://localhost:${PORT}`);
|
|
console.log(`📝 Environment: ${appConfig.env}`);
|
|
console.log(`🔗 CORS enabled for: ${appConfig.corsOrigin}`);
|
|
});
|
|
|
|
export default app;
|