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. Express Best Practices
ExpressAdvanced

Express Best Practices

Structure, error handling, logging, environment, code-split — Express best practices বাংলায়।

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

1. Structure App Properly

src/
├── app.js             # express app (middleware, routes)
├── server.js          # listen (separate)
├── config/            # db, env config
├── models/            # mongoose schemas
├── controllers/       # business logic
├── routes/            # route definitions
├── middleware/        # auth, validate, error
├── validators/        # zod schemas
├── utils/             # helpers
└── __tests__/         # tests

2. Use Controller Pattern

// routes — ডাক |
router.get("/", userController.getAll);

// controllers — logic |
const getAll = async (req, res, next) => {
  try {
    const users = await User.find();
    res.json(users);
  } catch (err) { next(err); }
};

3. Central Error Handler

// এক জায়গায় সব error
app.use((err, req, res, next) => {
  logger.error(err.stack);

  if (err.name === "ValidationError") {
    return res.status(400).json({ error: "Data invalid" });
  }
  if (err.code === 11000) { // duplicate key
    return res.status(409).json({ error: "ডুপ্লিকেট" });
  }

  res.status(err.status || 500).json({
    error: err.message || "Server error",
  });
});

4. Use Environment Config

config/env.jsjavascript
javascript
require("dotenv").config();

module.exports = {
  NODE_ENV: process.env.NODE_ENV || "development",
  PORT: process.env.PORT || 5000,
  MONGO_URI: process.env.MONGO_URI,
  JWT_SECRET: process.env.JWT_SECRET,
  JWT_EXPIRES: process.env.JWT_EXPIRES || "1d",
  FRONTEND_URL: process.env.FRONTEND_URL,
};

// ব্যবহার
const config = require("../config/env");
console.log(config.NODE_ENV);

5. Logging

utils/logger.jsjavascript
javascript
const winston = require("winston");

const logger = winston.createLogger({
  level: process.env.NODE_ENV === "production" ? "info" : "debug",
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: "logs/error.log", level: "error" }),
    new winston.transports.File({ filename: "logs/all.log" }),
  ],
});

if (process.env.NODE_ENV !== "production") {
  logger.add(new winston.transports.Console({ format: winston.format.simple() }));
}

module.exports = logger;

Checklist

✔অভ্যাস
✔app.js ও server.js আলাদা (test friendly)
✔Controller pattern ব্যবহার
✔Central error handling
✔Environment variables (.env)
✔Validation (Zod) সর্বত্র
✔Logging (winston)
✔Test (jest+supertest)
✔Security (helmet, rate-limit, cors)
✔API versioning (/api/v1)
✔Pagination ও filtering
✔Gitignore + lock file
মূলমন্ত্র

clean structure, consistent pattern, error handling, security, testing — এই 5 জিনিস দিয়ে professional Express app বানানো যায়।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরExpress Testing (Jest + Supertest)পরেরReal-world Express Project
এই পেজে
Tech Tutor

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

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

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

mdanamolhasan1998@gmail.com