harris_paint / src /server.js
aliroohan179's picture
Update src/server.js
c27863e verified
Raw
History Blame Contribute Delete
2.53 kB
require('dotenv').config();
const express = require('express');
const cors = require('cors');
const cookieParser = require('cookie-parser');
const morgan = require('morgan');
const helmet = require('helmet');
const rateLimit = require('express-rate-limit');
const path = require('path');
const connectDB = require('./config/db');
const errorHandler = require('./middleware/errorHandler');
const app = express();
// ─── Security ───
app.use(helmet());
// ─── Rate limiting ───
const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 200,
message: { message: 'Too many requests, please try again later.' },
});
app.use('/api/', limiter);
// ─── CORS ───
app.use(
cors({
origin: process.env.ADMIN_URL || 'http://localhost:3000',
credentials: true,
})
);
// ─── Body Parsing ───
app.use(express.json({ limit: '10mb' }));
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
// ─── Logging ───
if (process.env.NODE_ENV === 'development') {
app.use(morgan('dev'));
}
// ─── Static uploads ───
app.use('/uploads', express.static(path.join(__dirname, '../uploads')));
// ─── Routes ───
app.use('/api/auth', require('./routes/auth.routes'));
app.use('/api/markets', require('./routes/market.routes'));
app.use('/api/banners', require('./routes/banner.routes'));
app.use('/api/blog', require('./routes/blog.routes'));
app.use('/api/colours', require('./routes/colour.routes'));
app.use('/api/pages', require('./routes/cms.routes'));
app.use('/api/inspiration', require('./routes/inspiration.routes'));
app.use('/api/dealers', require('./routes/dealer.routes'));
app.use('/api/partners', require('./routes/partner.routes'));
app.use('/api/admin-users', require('./routes/admin-user.routes'));
app.use('/api/alerts', require('./routes/alert.routes'));
// Health check
app.get('/api/health', (req, res) => {
res.json({ status: 'ok', timestamp: new Date().toISOString() });
});
app.get('/', (req, res) => {
res.json({ status: 'ok', timestamp: new Date().toISOString() });
});
// ─── Error Handler ───
app.use(errorHandler);
// ─── Start Server ───
const PORT = process.env.PORT || 5000;
const startServer = async () => {
await connectDB();
app.listen(PORT, () => {
console.log(`\nπŸš€ Harris Paints API running on http://localhost:${PORT}`);
console.log(` Environment: ${process.env.NODE_ENV || 'development'}\n`);
});
};
startServer();
module.exports = app;