create-auth-backend-cli
Version:
CLI to scaffold a Node.js Auth backend with Express, JWT, MongoDB
55 lines (46 loc) • 1.46 kB
JavaScript
const express = require("express");
const mongoose = require("mongoose");
const cors = require("cors");
const helmet = require("helmet");
const morgan = require("morgan");
const dotenv = require("dotenv");
const authRoutes = require("./routes/authRoutes");
dotenv.config();
const app = express();
// Middleware
app.use(express.json());
app.use(cors({ origin: "*" })); // adjust origin for production
app.use(helmet()); // secure HTTP headers
if (process.env.NODE_ENV !== "production") {
app.use(morgan("dev")); // logging in dev mode
}
// Routes
app.use("/api/auth", authRoutes);
// Health Check Route
app.get("/", (req, res) => {
res.json({ status: "API is running" });
});
// Global Error Handler
app.use((err, req, res, next) => {
console.error("Error:", err);
res.status(err.status || 500).json({
error: err.message || "Internal Server Error"
});
});
// MongoDB Connection with error handling
const connectDB = async () => {
try {
await mongoose.connect(process.env.MONGO_URI, {
autoIndex: true,
serverSelectionTimeoutMS: 5000
});
console.log("✅ MongoDB connected");
} catch (error) {
console.error("❌ MongoDB connection failed:", error.message);
process.exit(1); // stop app if DB fails
}
};
const PORT = process.env.PORT || 5000;
connectDB().then(() => {
app.listen(PORT, () => console.log(`🚀 Server running on port ${PORT}`));
});