What is Back-End Development?
Difference between Front-End, Back-End, and Full Stack
Roles and responsibilities of a Back-End Developer
Overview of technologies: Node.js, Express.js, MongoDB, Next.js (API routes)
Introduction to RESTful APIs and HTTP basics
Setting up the development environment (Node.js, MongoDB, VS Code, Postman)
What is Node.js and its architecture?
Understanding asynchronous, non-blocking I/O
Node.js core modules: fs, path, http, url, events
Reading and writing files using callbacks and promises
Using environment variables and creating .env files
NPM basics and creating a package.json file
What is Express and why use it?
Creating a basic Express server
Route handling (GET, POST, PUT, DELETE)
Middleware concepts: built-in, third-party, and custom middleware
Parsing request bodies with body-parser and express.json()
Serving static files with Express
Error handling middleware
Router modularization (using Express Routers)
Introduction to NoSQL databases and MongoDB
Setting up MongoDB locally and with MongoDB Atlas
MongoDB shell and GUI tools (MongoDB Compass)
Introduction to Mongoose ODM
Creating schemas and models
Performing CRUD operations with Mongoose:
Create (.save(), .create())
Read (.find(), .findById())
Update (.findByIdAndUpdate())
Delete (.findByIdAndDelete())
REST architecture principles
Designing API endpoints for real-world entities (e.g., users, posts, products)
Working with query parameters and URL params
Status codes and response patterns
Handling errors with custom error classes and centralized error handlers
Testing APIs using Postman
What is authentication vs authorization?
Password hashing with bcryptjs
JWT (JSON Web Tokens) for sessionless auth
Login and registration API flows
Securing routes using middleware
Role-based access control
Token expiration and refresh strategies (optional)
Introduction to Next.js API routes
Folder structure and routing in /pages/api
Creating serverless functions (API handlers)
Working with dynamic API routes
Connecting MongoDB within Next.js API routes
Comparison with Express.js: When to use what
Mongoose schema methods and virtuals
Mongoose middleware (pre/post hooks)
Relationships: Referencing vs embedding
Pagination and filtering with MongoDB
Aggregation pipelines basics
Indexing and performance optimization
Handling file uploads with multer
Uploading files to local storage or cloud (Cloudinary, S3 overview)
Serving uploaded files via Express or Next.js
Validating and restricting file types and sizes
Securing API endpoints
Using Helmet for HTTP headers
Preventing NoSQL injection and XSS attacks
CORS handling and configuration
Rate limiting with express-rate-limit
Data validation using Joi or express-validator
Manual API testing with Postman and Thunder Client
Logging with morgan and winston
Using Chrome DevTools and breakpoints in VS Code
Unit testing with Jest
Integration testing with Supertest
Mocking database calls with mongodb-memory-server (optional)
Environment setup: development, staging, production
Deployment options:
Express apps: Render, Railway, VPS (Ubuntu + Nginx)
Next.js apps: Vercel, Netlify
Using pm2 to manage Node processes
Environment variable management in production
Basic CI/CD concepts and GitHub Actions overview
Initializing and managing Git repos
Common Git commands: add, commit, push, pull, branch, merge
Using .gitignore and managing .env files
GitHub basics: Repositories, issues, pull requests
Collaboration workflows and resolving merge conflicts
Each project emphasizes practical, real-world application of backend development:
RESTful CRUD routes
Authentication (JWT)
MongoDB integration
Image upload for blog cover
Product listing, cart, and user management
Dynamic Next.js API routes
JWT authentication
Hosted on Vercel
Task creation and assignment
Protected routes with authentication
Filtering, pagination, and sorting
Fully documented API with Swagger or Postman