Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Express Documentation22টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Installation
  • Routing
  • Middleware
  • Request & Response
  • Static Files
  • Router
  • Error Handling
  • Template Engines
  • Body Parsing
  • File Upload
  • CORS
  • Database
  • Validation
  • Authentication
  • Security
  • REST API
  • Performance
  • Testing
  • Best Practices
  • Project
  • Interview
  1. Docs
  2. Express
  3. Real-world Express Project
ExpressAdvanced

Real-world Express Project

পূর্ণ Task Manager API — auth, CRUD, validation, security সহ সম্পূর্ণ Express project বাংলায়।

12টি অংশবাংলা ভাষায়

চলুন একটি Task Manager API বানাই — যেখানে auth, CRUD, validation, security — সব থাকবে। এটি একটি realistic mini-project।

Packages

npm init -y
npm install express mongoose bcryptjs jsonwebtoken dotenv cors helmet
npm install --save-dev nodemon

# structure create করুন
mkdir -p src/{config,models,controllers,routes,middleware,validators}

app.js

src/app.jsjavascript
javascript
require("dotenv").config();
const express = require("express");
const cors = require("cors");
const helmet = require("helmet");

const app = express();

app.use(helmet());
app.use(cors());
app.use(express.json());

app.get("/", (req, res) => res.json({ message: "Task API" }));

app.use("/api/auth", require("./routes/auth"));
app.use("/api/tasks", require("./routes/tasks"));

// 404
app.use((req, res) => res.status(404).json({ error: "Not found" }));

// error handler
app.use((err, req, res, next) => {
  console.error(err);
  res.status(err.status || 500).json({ error: err.message || "Server error" });
});

module.exports = app;

models/Task.js

src/models/Task.jsjavascript
javascript
const mongoose = require("mongoose");

const taskSchema = new mongoose.Schema({
  title: { type: String, required: true, trim: true, maxlength: 100 },
  description: { type: String, default: "", maxlength: 500 },
  completed: { type: Boolean, default: false },
  priority: {
    type: String,
    enum: ["low", "medium", "high"],
    default: "medium",
  },
  user: { type: mongoose.Schema.Types.ObjectId, ref: "User", required: true },
  createdAt: { type: Date, default: Date.now },
});

module.exports = mongoose.model("Task", taskSchema);

routes/tasks.js

src/routes/tasks.jsjavascript
javascript
const express = require("express");
const router = express.Router();
const Task = require("../models/Task");
const { protect } = require("../middleware/auth");
const { validateTask } = require("../validators/taskValidator");

// সব middleware এই router-এ
router.use(protect);

// GET /api/tasks
router.get("/", async (req, res, next) => {
  try {
    const tasks = await Task.find({ user: req.user._id }).sort("-createdAt");
    res.json(tasks);
  } catch (err) { next(err); }
});

// POST /api/tasks
router.post("/", validateTask, async (req, res, next) => {
  try {
    const task = await Task.create({ ...req.body, user: req.user._id });
    res.status(201).json(task);
  } catch (err) { next(err); }
});

// PATCH /api/tasks/:id
router.patch("/:id", async (req, res, next) => {
  try {
    const task = await Task.findOneAndUpdate(
      { _id: req.params.id, user: req.user._id }, // own task only
      req.body,
      { new: true, runValidators: true }
    );
    if (!task) return res.status(404).json({ error: "Task খুঁজে পাওয়া যায়নি" });
    res.json(task);
  } catch (err) { next(err); }
});

// DELETE /api/tasks/:id
router.delete("/:id", async (req, res, next) => {
  try {
    const task = await Task.findOneAndDelete({
      _id: req.params.id,
      user: req.user._id,
    });
    if (!task) return res.status(404).json({ error: "Task খুঁজে পাওয়া যায়নি" });
    res.json({ message: "Task মুছে ফেলা হয়েছে" });
  } catch (err) { next(err); }
});

module.exports = router;

Test Flow

# 1. run server
node src/server.js

# 2. register (Postman/Bruno)
POST http://localhost:5000/api/auth/register
{ "name":"রহিম", "email":"rahim@test.com", "password":"123456" }

# 3. login → token
POST http://localhost:5000/api/auth/login
{ "email":"rahim@test.com", "password":"123456" }
→ { "token": "eyJ..." }

# 4. create task (auth header)
POST http://localhost:5000/api/tasks
Authorization: Bearer eyJ...
{ "title":"Node.js শিখি", "priority":"high" }

# 5. get tasks
GET http://localhost:5000/api/tasks
Authorization: Bearer eyJ...
আরও কাজ

এই project-এ আরও যোগ করুন: user-এর task-দৈর্ঘ্য প্রম্পট, category/filter, due date, analytics। তারপর GitHub-এ push করে portfolio build করুন।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরExpress Best PracticesপরেরExpress.js Interview Questions
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com