
Explore what NodeJS is: a JavaScript runtime built on the V8 engine, not a language, and learn how runtime environments execute JavaScript beyond browsers.
Learn to install Node.js on macOS by downloading the lts version from nodejs.org, running the installer, and verifying the installation with node -v.
Install node.js on Linux using the LTS binary from nodejs.org, verify with node --version and npm --version, and follow the Debian/Ubuntu installation guide.
Discover the global object in Node.js and its difference from the browser's window. See how setTimeout and setInterval live on global and are available across files.
Learn how to export and import modules in Node.js using module.exports and require, with practical examples of default and named exports.
Explore the module wrapper function in Node.js, showing how code is wrapped in a function with module, exports, require, __filename, and __dirname, making exports accessible without becoming global.
explore the path module in Node.js by importing or requiring it, parse a path, and extract root, dir, basename, and ext for practical file handling.
Master the fs module in nodejs to read, write, append, and unlink files asynchronously and synchronously, and learn how the main thread offloads IO to the assist worker via callbacks.
Explore the nodejs event module, create an event emitter, register events with on, emit events with data, and handle asynchronous callbacks for non-blocking execution.
Export and import a shared EventEmitter instance, register and emit event one across app.js and index.js, then use fs.writeFile to create Test.txt with the received content.
Explore NodeJS streams and buffers by comparing streaming video delivery to progressive data flow, and learn how read streams and write streams handle binary buffers delivered to clients.
Learn to set up a Node.js project, create a simple express server with app.get for the home route, respond with 'homepage', and run on port 8000 with npm start.
Learn how a Node.js app instance handles HTTP request methods, including get, post, put, patch, and delete, using app.get and app.post examples to send responses.
Learn how to parse the incoming request body using express.json, and switch between json, text, and raw payloads guided by headers and postman tests.
Explore the request object in nodejs by logging hostname, ip, method, protocol, and secure status. Use accepts and get methods to read accepted types and the content type header.
Discover how the response object returns data and headers, including custom headers, and manage cookies and status with methods like send, json, render, status, and redirect.
Explore express response methods in nodejs, including end, send, json, and redirect, with practical route examples. Learn how to set and get headers and use location in responses via postman.
Define middleware in Express as a function that processes requests, passes control with next, can respond or throw errors, with app level, route level, error handling, built-in, third party types.
Learn to build and use custom middleware in node.js, with req, res, and next. Understand app level and route level middleware, parameter passing, and modifying requests.
Explore how error handling middleware works in Express by using a four-parameter function (err, req, res, next), throwing errors, or passing next(err) to trigger the error handler and 500 response.
Handle errors proactively in Express.js by using custom error handling middleware and next(error) for asynchronous code; learn built-in vs custom handlers, and inspect error.message and error.stack.
Explore the basics of databases, including relational (RDBMS) and non-relational (NoSQL) systems, core operations (add, update, delete, fetch), and the role of SQL and MongoDB in Node.js projects.
Install the MongoDB community server on Windows with the current MSI package, run as a service, and configure data and log directories with PATH; also install Mongo shell and compass.
Install MongoDB on macOS using Homebrew, confirm Xcode command line tools, and install MongoDB community version 6; then start the service and install MongoDB Compass for GUI access.
Establish a database connection in a Node.js app by installing the mongodb driver, creating a MongoClient with a localhost connection URL, and handling success or error on connect.
Learn to add data to a database via post requests, read JSON bodies with express.json, and add single or multiple records using insert one and insert many.
Update a single document in MongoDB via a put route using findOneAndUpdate, querying by email from request.query, applying changes with $set from request.body, and optionally returning the updated document.
Learn how to update multiple documents in MongoDB using update many, including selecting by age from a request query and updating the department from the request body, with ES6 shorthand.
delete a single document in MongoDB using the find one and delete method through a delete route, locating by email from query and handling 200 success or 500 error.
Explore ODM, or object data modeling, and see how mongoose abstracts the MongoDB driver, enabling schema validation, object mapping, and fewer lines of code when connecting Node.js to MongoDB.
Install mongoose, replace the MongoDB driver, and connect asynchronously to MongoDB with mongoose.connect using a URL that includes the database name, handling a callback to log success or errors.
Define a Mongoose schema to specify a collection and field data types. Create a model with Mongoose.model using a pluralized name to add, update, delete, and fetch data.
Learn to update multiple documents with mongoose using updateMany, filtering by department from the query and updating age from the request body, with error handling and Postman verification.
Retrieve a single document with mongoose using findOne by email, then by id with findById from request.params, returning a 200 response and handling errors with 500.
Shows how to fetch multiple documents with mongoose using find, filtering by department via a get route /student/multiple, with async/await and try/catch, returning 200 with results and 500 on error.
Delete a single document with Mongoose by email query or id, using find one and delete or find by id and delete, via a route, with async/await and 200/500 responses.
Explore MongoDB Compass as a GUI tool to perform CRUD operations with Mongoose, including searching by key-value pairs, updating, deleting, adding documents, and importing or exporting Json or CSV data.
Build a todo app with express.js and mongodb using mongoose, featuring create, read, update, and delete operations, a template engine, and sorting by creation time.
Import mongoose, build a localhost MongoDB URL with the database name, and connect via mongoose.connect with success and error callbacks to log the connection status.
Connects MongoDB with a NodeJS app and builds a to-do list page, including a list database, new and update to-do forms, and delete confirmation, rendered via views index.js.
Create a new todo page in a nodejs project by building a todo form with title and description, adding an add todo route, and rendering with basic error handling.
Build and render the update todo page in nodejs, adding an update view with title and description inputs, a save button, and a new update route with error handling.
Create a delete todo confirmation page by adding a new view and a delete confirmation route, then render the page with a back button and a yes/no message.
Add a todo via post /addtodo by parsing urlencoded data with body-parser, reading title and description, handling validation for title, and saving to the todo model with automatic timestamps.
Fetch all todos on the home page, render them in an ejs template, and loop to display title, description, and timestamps, sorting by created time to show the latest first.
Install and import moment to format created and updated times in your node app. Set moment in response.locals and format with moment.format to show month, date, hour, minute, and second.
Refactor a nodejs project by separating database connection, models, routes, and controllers, and implement a dedicated mongoDB connection file with an async connectMongoDB function and error handling.
Refactor your node project by moving configuration to app.js, exporting the app instance, and importing it in index.js while preserving the port for the server.
After refactoring, test the project by reloading the to-do list page, adding a new todo with description six, and confirm items 2 through 6 appear in MongoDB compass.
Learn how to implement updating a todo item in a Node.js app: edit, prefill fields, pass id via query string, and handle the update route with async controller logic.
Learn to implement delete todo functionality with a confirmation flow in a Node.js app, passing the id via query string, find by id and delete, then redirecting home.
Initialize npm, create package.json, install express, mongoose, dotenv, and body-parser, then set up app.js and index.js for a rest api project and run the server on port 8000.
Create a mongoose user model with name, email, password, and role fields, enforce min password length 6, default to normal user (3), enable timestamps, and export via index.js.
Create a signup route in a nodejs app using a sign up controller, save a user with name, email, password, and role, and return a 201 response under API versioning.
Test the sign up route using postman by sending name, email, and password to http://localhost:8000/API/version one/auth signup; verify user creation in blog db with default role three.
Log in to MongoDB Cloud Atlas in the browser, browse the blog database's user collection, and verify access from anywhere in the world.
Install and import the Morgan middleware to log requests to the console, printing the method, route, and status during a signup request.
Structure api responses by returning an object with code, status, and message, using a 201 status in the auth controller. Show true for success and include a helpful message.
Implement a not found route in a Node.js Express app to handle unmatched requests with a 404 JSON response, showing status false and message not found.
Develop a validate middleware using express validator to collect signup errors (name required, invalid email, password six characters) and return a 400 error response with mapped messages.
Hash passwords with bcryptjs using a salt of 12, returning a promise in a utils function, then store hashed passwords in MongoDB via the auth controller and test with Postman.
Implement a sign in route with email and password validation, bcrypt password comparison, and error handling to return 200 on success or 401 on failure.
Learn to implement email verification in Node.js by generating a six digit code, storing it in the user model, and sending a verification email.
Create a verify user post route with an auth controller and validator to check email and code, verify the user, handle errors, and return a 200 status on successful verification.
Implement a recover password flow in nodejs by creating a recover password post route that validates email, code, and new password, and updates the user with a hashed password.
Change password flow validates old and new passwords with a validator, verifies the old password matches, hashes the new password, updates the user record, and returns success or error responses.
Implement a protected add category flow in a Node.js Express app with a route, validator, and controller that validates title, checks duplicates, and saves title and description updated by user.
implement isadmin middleware to enforce admin access for category management, permitting roles 1 and 2 via token-based authorization with bearer tokens; enable add, update, and delete operations.
Learn to implement update category in a nodejs app with admin middleware, validate category id, ensure title uniqueness, update title or description, and return a 200 response.
Create a delete category route protected by admin middleware, validate the category id, and implement a controller with error handling to delete the category and return a 200 response.
Implement a get categories route and controller to list all categories, then add regex-based search for title or description using Postman and MongoDB.
The lecture introduces the file module, covering upload, download, list, and delete file flows, and guides setting up routes and a file controller in express with basic error handling.
Learn to upload files in node by installing the Malta module, configuring an uploads folder, and using the single middleware to handle form data and test with postman.
Implement a Node.js file filter to allow only jpeg, png, and pdf uploads via a mime type check callback, logging details, and returning an error or approval.
Learn how to set up an AWS S3 bucket for a NodeJS project, create IAM users with an access key and secret access key, and configure environment variables for access.
Create a mongoose file model with a schema including key (string), size (number), mimeType (string), createdBy (object id reference to user), and timestamps, then export the file model.
learn to configure Multer memory storage for file uploads without local disk storage, using a dedicated upload middleware and a 50 MB size limit.
Learn to upload a single image file to an AWS S3 bucket with Node.js, validate extensions (jpg, jpeg, png), and perform a put object request with error handling.
Store file metadata in the database after uploading to an S3 bucket. Create a new file record with key, size, mime type, and created by, then save.
Generate a temporary signed url for an S3 object using the AWS SDK in Node.js, by building a GetObjectCommand and expiring the link after 60 seconds.
Update the user profile picture by linking a profile pic object id from the file model. Validate the id, save the updated profile pic, and demonstrate the process.
Create a delete post route with auth protection and param validation, implement a delete post controller to find by id, delete, and return 200 with 'post deleted successfully'.
Create a get route for listing posts with pagination and title search using a case-insensitive regex; default page and size values and sorting by updated.
Create a router.get route with a dynamic id to fetch a single post, using an async controller with try-catch and populate file, category, updated by, returning 200 with the post.
Celebrate completing a blog RESTful API with Node.js and prepare for backend internships by building two more projects, while exploring the React.js with practical project course for frontend skills.
Do you want to build fast and powerful backend applications with JavaScript? Would you like to become a more complete and in-demand developer?
Then Nodejs is the hottest technology for you to learn right now, and you came to the right place to do it!
This is a project based course where we build an extensive, in-depth backend APIs. We will start from scratch and end up with a professional project. We will dive deep into Node, Express and MongoDB, Mongoose. Here is some of what you will learn in this course and project:
How Nodejs work
Nodejs built-in core library
Stream and Buffer
Express Framework
Routing & Controller
Express middleware
Custom Error Handling
EJS template engine
Upload file to S3 bucket
Sending Email
Authentication With JWT
Password hashing
MongoDB database
MongoDB Atlas & Compass GUI tool
Mongoose ODM
Models & Relationships
Multi user role
Authentication and Authorization
Advanced Query (pagination, filter, searching etc)
HTTP Essentials
Postman Client
RESTful APIs
Web development is evolving, in the past, server-side rendering handled all views and templates, but with the emergence of frontend frameworks like React, Angular, and Vue, projects are now divided into backend and frontend components. The backend manages database interactions and serves JSON, while the frontend fetches data and creates the user interface. This course focuses on the entire backend aspect, enabling you to construct robust APIs and giving you the freedom to choose your frontend technologies.
Our curriculum goes beyond typical Nodejs and Express tutorials, as we cover advanced topics like authentication, roles, permissions, password reset mechanisms, email integration, and many more. By the end of this course, you'll have a deep understanding of what it takes to be a proficient backend engineer.