Day 80 Project: REST API
40+ din ke concepts use karke ek complete, production-ready REST API banate hain — proper folder structure, validation, error handling, aur documentation ke saath.
Project Structure
Professional folder organization.
my-api/
├── src/
│ ├── config/
│ │ └── database.js
│ ├── controllers/
│ │ ├── authController.js
│ │ └── userController.js
│ ├── middleware/
│ │ ├── auth.js
│ │ ├── validate.js
│ │ └── errorHandler.js
│ ├── models/
│ │ └── User.js
│ ├── routes/
│ │ ├── auth.js
│ │ └── users.js
│ └── app.js
├── .env
├── .env.example
├── package.json
└── README.md
Main App Setup
app.js — everything wire karo.
require("dotenv").config();
const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const authRoutes = require("./routes/auth");
const userRoutes = require("./routes/users");
const errorHandler = require("./middleware/errorHandler");
const app = express();
// Middleware
app.use(cors());
app.use(express.json());
// Routes
app.use("/api/auth", authRoutes);
app.use("/api/users", userRoutes);
// Health check
app.get("/health", (req, res) => {
res.json({ status: "OK", timestamp: new Date() });
});
// Error handler
app.use(errorHandler);
// Database connect
mongoose.connect(process.env.MONGODB_URI)
.then(() => {
app.listen(process.env.PORT || 3000, () => {
console.log(`API running on port ${process.env.PORT || 3000}`);
});
})
.catch(err => {
console.error("DB connection failed:", err);
process.exit(1);
});
🎯 Practice Challenge
Complete Blog API banao: users (auth), posts (CRUD), comments (nested), categories, tags. Full documentation README mein likho.