|
|
require('dotenv').config(); |
|
|
const express = require('express'); |
|
|
const mongoose = require('mongoose'); |
|
|
const cors = require('cors'); |
|
|
const helmet = require('helmet'); |
|
|
const rateLimit = require('express-rate-limit'); |
|
|
const morgan = require('morgan'); |
|
|
const cookieParser = require('cookie-parser'); |
|
|
|
|
|
const app = express(); |
|
|
|
|
|
|
|
|
mongoose.connect(process.env.MONGODB_URI, { |
|
|
useNewUrlParser: true, |
|
|
useUnifiedTopology: true, |
|
|
}) |
|
|
.then(() => console.log('Connected to MongoDB')) |
|
|
.catch(err => console.error('MongoDB connection error:', err)); |
|
|
|
|
|
|
|
|
app.use(cors({ |
|
|
origin: process.env.CLIENT_URL, |
|
|
credentials: true |
|
|
})); |
|
|
app.use(helmet()); |
|
|
app.use(express.json()); |
|
|
app.use(cookieParser()); |
|
|
app.use(morgan('dev')); |
|
|
|
|
|
|
|
|
const limiter = rateLimit({ |
|
|
windowMs: 15 * 60 * 1000, |
|
|
max: 100 |
|
|
}); |
|
|
app.use(limiter); |
|
|
|
|
|
|
|
|
const authRoutes = require('./routes/auth'); |
|
|
const userRoutes = require('./routes/users'); |
|
|
const courseRoutes = require('./routes/courses'); |
|
|
const enrollmentRoutes = require('./routes/enrollments'); |
|
|
const certificateRoutes = require('./routes/certificates'); |
|
|
const paymentRoutes = require('./routes/payments'); |
|
|
|
|
|
app.use('/api/auth', authRoutes); |
|
|
app.use('/api/users', userRoutes); |
|
|
app.use('/api/courses', courseRoutes); |
|
|
app.use('/api/enrollments', enrollmentRoutes); |
|
|
app.use('/api/certificates', certificateRoutes); |
|
|
app.use('/api/payments', paymentRoutes); |
|
|
|
|
|
|
|
|
app.use((err, req, res, next) => { |
|
|
console.error(err.stack); |
|
|
res.status(500).json({ message: 'Internal Server Error' }); |
|
|
}); |
|
|
|
|
|
const PORT = process.env.PORT || 5000; |
|
|
app.listen(PORT, () => { |
|
|
console.log(`Server running on port ${PORT}`); |
|
|
}); |