Files
internify-be/src/index.js
T
2026-06-23 14:51:31 +07:00

94 lines
3.0 KiB
JavaScript
Executable File

require('dotenv').config();
const express = require('express');
const http = require('http');
const { initSocket } = require('./helpers/socket/socket_connection');
const cors = require('cors');
const path = require('path');
const adminRoutes = require('./routes/admin.routes');
const authRoutes = require('./routes/auth.routes');
const lowonganMagangRoutes = require('./routes/lowonganMagang.routes');
const lamaranMagangRoutes = require('./routes/lamaranMagang.routes');
const mahasiswaRoutes = require('./routes/mahasiswa.routes');
const partnershipRoutes = require('./routes/partnership.routes');
const hasilResearchRoutes = require('./routes/hasilResearch.routes');
const faqRoutes = require('./routes/faq.routes');
const feedbackRoutes = require('./routes/feedback.routes');
const batchRoutes = require('./routes/batch.routes');
const projectRoutes = require('./routes/project.routes');
const taskRoutes = require('./routes/task.routes');
const certificateRoutes = require('./routes/certificate.routes');
const notificationRoutes = require('./routes/notification.routes');
const setupSwaggerDocs = require('./docs/swagger');
const PORT = process.env.PORT;
const app = express();
const corsOptions = {
origin: true,
methods: ["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE", "OPTIONS"],
credentials: true,
allowedHeaders: ["Content-Type", "Authorization", "X-Requested-With", "Accept"],
exposedHeaders: ["Content-Range", "X-Content-Range"],
optionsSuccessStatus: 200,
};
const uploadDir = process.env.NODE_ENV === 'production'
? '/tmp/uploads'
: path.join(__dirname, 'uploads');
app.options('*', cors(corsOptions));
app.use(express.json());
app.use(cors(corsOptions));
app.use("/uploads", express.static(uploadDir), (req, res, next) => {
if (!res.headersSent) {
res.status(404).json({
status: false,
message: `File not found: ${req.path}`,
code: 404
});
}
});
app.use("/admin-api", adminRoutes);
app.use("/auth-api", authRoutes);
app.use("/lowongan-magang-api", lowonganMagangRoutes);
app.use("/lamaran-magang-api", lamaranMagangRoutes);
app.use("/mahasiswa-api", mahasiswaRoutes);
app.use("/partnership-api", partnershipRoutes);
app.use("/hasil-research-api", hasilResearchRoutes);
app.use("/faq-api", faqRoutes);
app.use("/feedback-api", feedbackRoutes);
app.use("/batch-api", batchRoutes);
app.use("/project-api", projectRoutes);
app.use("/task-api", taskRoutes);
app.use("/certificate-api", certificateRoutes);
app.use("/notification-api", notificationRoutes);
// app.use("/project-member-api", projectMemberRoutes);
setupSwaggerDocs(app);
app.use((req, res) => {
res.status(404).json({
status: false,
message: `Route not found: ${req.method} ${req.path}`,
code: 404
});
});
const server = http.createServer(app);
initSocket(server);
if (process.env.NODE_ENV !== 'production') {
server.listen(PORT, () => {
console.log(`listening at http://localhost:${PORT}`);
});
}
module.exports = app;
/*
NOTE : saran saya untuk penamaan variabel untuk setiap response dibuat konsisten menjadi inggris, tolong komunikasi aja ke fe 😁
*/