// Load environment-specific config const env = process.env.NODE_ENV || "dev"; const envFile = `.env.${env}`; require("dotenv").config({ path: envFile, }); const express = require("express"); const cors = require("cors"); const bodyParser = require("body-parser"); const path = require("path"); const { sequelize } = require("./models"); // Import from models/index.js to ensure associations are loaded const authRoutes = require("./routes/auth"); const phoneAuthRoutes = require("./routes/phone-auth"); const userRoutes = require("./routes/users"); const itemRoutes = require("./routes/items"); const rentalRoutes = require("./routes/rentals"); const messageRoutes = require("./routes/messages"); const betaRoutes = require("./routes/beta"); const itemRequestRoutes = require("./routes/itemRequests"); const stripeRoutes = require("./routes/stripe"); const PayoutProcessor = require("./jobs/payoutProcessor"); const app = express(); app.use(cors()); app.use(bodyParser.json({ limit: "5mb" })); app.use(bodyParser.urlencoded({ extended: true, limit: "5mb" })); // Serve static files from uploads directory app.use("/uploads", express.static(path.join(__dirname, "uploads"))); // Beta verification route (doesn't require auth) app.use("/api/beta", betaRoutes); app.use("/api/auth", authRoutes); app.use("/api/auth/phone", phoneAuthRoutes); app.use("/api/users", userRoutes); app.use("/api/items", itemRoutes); app.use("/api/rentals", rentalRoutes); app.use("/api/messages", messageRoutes); app.use("/api/item-requests", itemRequestRoutes); app.use("/api/stripe", stripeRoutes); app.get("/", (req, res) => { res.json({ message: "CommunityRentals.App API is running!" }); }); const PORT = process.env.PORT || 5000; sequelize .sync({ alter: true }) .then(() => { console.log("Database synced"); // Start the payout processor const payoutJobs = PayoutProcessor.startScheduledPayouts(); app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); }); }) .catch((err) => { console.error("Unable to sync database:", err); });