require("dotenv").config(); const express = require("express"); const cors = require("cors"); const path = require("path"); const { connectDB } = require("./config/db"); const passport = require("./config/passport"); const socialRoutes = require("./src/routes/social.routes"); const authRoutes = require("./src/routes/auth.routes"); const paymentRoutes = require("./src/routes/payment.routes"); const userRoutes = require("./src/routes/user.routes"); const dmWebhookRoutes = require("./src/routes/dm_webhook.routes"); const dmMessagesRoutes = require("./src/routes/dm_messages.routes"); const { captureDmRawBody } = require("./src/middlewares/dm_rawBody.middleware"); const app = express(); const PORT = process.env.PORT || 7002; // Request Logger app.use((req, res, next) => { console.log(`[REQUEST] ${req.method} ${req.url}`); next(); }); // ------------------ Connect DB ------------------ connectDB() .then(() => console.log("✅ Database connected successfully")) .catch((err) => console.error("❌ Database connection failed:", err)); // ------------------ CORS ------------------ app.use( cors({ origin: ["http://localhost:3500", "https://devapp.socialbuddy.co"], credentials: true, }) ); // ⚠ STRIPE WEBHOOK MUST USE RAW BODY ⚠ app.use( "/api/payment/webhook", express.raw({ type: "application/json" }) ); // Capture raw body for DM webhook before JSON parsing app.use(captureDmRawBody); // ------------------ Body Parser (After Webhook) ------------------ app.use(express.json()); app.use(express.urlencoded({ extended: true })); // ------------------ Static Files ------------------ app.use(express.static(path.join(__dirname, "public"))); //passport app.use(passport.initialize()); // ------------------ Routes ------------------ app.use("/api/social", socialRoutes); app.use("/api/auth", authRoutes); app.use("/api/users", userRoutes); app.use("/api/payment", paymentRoutes); app.use("/api/dm/webhook", dmWebhookRoutes); app.use("/api/dm/messages", dmMessagesRoutes); app.get("/", (_req, res) => { res.send("SocialBuddy backend is running..."); }); // ------------------ Start Server ------------------ app.listen(PORT, () => console.log(`🚀 Server running on port ${PORT}`));