104 lines
2.9 KiB
JavaScript
104 lines
2.9 KiB
JavaScript
// LIBRARY IMPORT
|
|
const express = require("express");
|
|
const cors = require("cors");
|
|
const bodyParser = require("body-parser");
|
|
const compression = require("compression");
|
|
const cookieParser = require("cookie-parser");
|
|
const multer = require("multer");
|
|
const morgan = require("morgan");
|
|
const path = require("path");
|
|
const admin = require("firebase-admin");
|
|
const http = require("http");
|
|
const socketIo = require("socket.io");
|
|
|
|
// SERVICES
|
|
const { initializeCronJobs } = require("./app/services/cronjob.services.js");
|
|
const { startScheduledNotificationCron } = require("./app/services/scheduled-notification-processor.services.js");
|
|
const logger = require("./app/services/logger.services.js");
|
|
const SocketService = require("./app/services/socket.services.js");
|
|
|
|
// INITIALIZE CRON JOBS
|
|
initializeCronJobs();
|
|
|
|
startScheduledNotificationCron();
|
|
|
|
// APP CONFIG
|
|
const app = express();
|
|
const server = http.createServer(app);
|
|
const upload = multer({
|
|
limits: { fileSize: 100 * 1024 * 1024 }
|
|
});
|
|
const port = process.env.PORT || 3000;
|
|
|
|
app.use(morgan('combined'));
|
|
|
|
app.use(cors({ origin: true, credentials: true }));
|
|
|
|
app.use(bodyParser.json());
|
|
|
|
app.use(bodyParser.urlencoded({ limit: '100mb', extended: true }));
|
|
|
|
app.use(cookieParser());
|
|
|
|
app.use(compression());
|
|
|
|
app.use(upload.any());
|
|
|
|
if (!admin.apps.length) {
|
|
admin.initializeApp({
|
|
credential: admin.credential.applicationDefault(),
|
|
storageBucket: "cifowallet.firebasestorage.app",
|
|
});
|
|
}
|
|
|
|
// SOCKET.IO SETUP
|
|
const io = socketIo(server, {
|
|
cors: {
|
|
origin: ["http://localhost:3000", "http://localhost:3001", "*"],
|
|
methods: ["GET", "POST"],
|
|
credentials: true
|
|
},
|
|
transports: ['websocket', 'polling']
|
|
});
|
|
|
|
// INITIALIZE SOCKET SERVICE
|
|
const socketService = new SocketService(io);
|
|
|
|
// ROUTES
|
|
const adminRoutes = require("./app/routes/admin.route.js");
|
|
const appRoutes = require("./app/routes/app.route.js");
|
|
const cmsRoutes = require("./app/routes/cms.route.js");
|
|
const bucketRoutes = require("./app/routes/bucket.route.js");
|
|
const userRoutes = require("./app/routes/users.route.js");
|
|
const cctvRoutes = require("./app/routes/cctv.route.js");
|
|
const campaignRoutes = require("./app/routes/campaign.route.js");
|
|
const activityRoutes = require("./app/routes/activity.route.js");
|
|
const crashRoutes = require("./app/routes/crash.route.js");
|
|
const aiNotificationRoutes = require("./app/routes/ai-notification.route.js");
|
|
const menuRoutes = require("./app/routes/menu.route.js");
|
|
const messagesRoutes = require("./app/routes/messages.route.js");
|
|
|
|
// ENDPOINTS
|
|
const endpoints = [
|
|
adminRoutes,
|
|
appRoutes,
|
|
cmsRoutes,
|
|
bucketRoutes,
|
|
userRoutes,
|
|
cctvRoutes,
|
|
campaignRoutes,
|
|
activityRoutes,
|
|
crashRoutes,
|
|
aiNotificationRoutes,
|
|
menuRoutes,
|
|
messagesRoutes
|
|
];
|
|
|
|
app.use(endpoints);
|
|
|
|
server.listen(port, () => {
|
|
logger.info(`App is listening on port ${port}`);
|
|
logger.info("Started at " + new Date().toLocaleString() + "");
|
|
logger.info("Socket.IO server is running");
|
|
});
|