Day 80

Project: REST API

40 min
JavaScript 100 Days

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.

structure
bash
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.

app.js
javascript
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.