forked from JIshanRandika/CallYourDriver_Backend
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
72 lines (61 loc) · 2.03 KB
/
server.js
File metadata and controls
72 lines (61 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import express from 'express';
import dotenv from 'dotenv';
import cors from 'cors'; // Import the cors package
import connectDB from './config/db.js';
import userRoutes from './routes/userRoutes.js';
import driverRoutes from './routes/driverRoutes.js';
import parkRoutes from './routes/parkRoutes.js';
import categoryRoutes from './routes/categoryRoutes.js';
import cronJob from './resetDailySuggestions.js';
dotenv.config();
const app = express();
// Configure database
connectDB();
// Middleware for JSON parsing
app.use(express.json());
// CORS Configuration
const allowedOrigins = ['http://localhost:3000', 'https://callyourdriver-ef3f0.web.app', 'https://callyourdriver.online', 'https://callyourdriver-driver.web.app']; // Add mobile app domains here
app.use(
cors({
origin: (origin, callback) => {
// Allow requests with no origin (like mobile apps or Postman)
if (!origin) return callback(null, true);
if (allowedOrigins.includes(origin)) {
return callback(null, true);
} else {
return callback(new Error('Not allowed by CORS'));
}
},
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization'],
})
);
// Root route
app.get('/', (req, res) => {
res.send('API is running...');
});
// Routes
app.use('/api/users', userRoutes);
app.use('/api/drivers', driverRoutes);
app.use('/api/parks', parkRoutes);
app.use('/api/categories', categoryRoutes);
// Error handling middleware
app.use((err, req, res, next) => {
const statusCode = res.statusCode === 200 ? 500 : res.statusCode;
res.status(statusCode);
res.json({
message: err.message,
stack: process.env.NODE_ENV === 'production' ? null : err.stack,
});
});
// Handle 404 errors
app.use((req, res) => {
res.status(404).json({ message: 'Route not found' });
});
// Start server
const PORT = process.env.PORT || 5000;
if (process.env.NODE_ENV !== 'test') {
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
}
// Export the app for Vercel
export default app;