/nodejs-roadmap

Roadmap for Back-End Development using Node.JS

Backend with NodeJS Roadmap

By Seif El-Din Sweilam for Backend Circle in CAT-Reloaded

Inroduction

The purpose of this roadmap is to collect and organize open-source resources for learners seeking to learn Back-End Development and use node.js as a development environment. There are direct and indirect topics that are supposed to improve the technical skills of the learner.

Topics are ordered and organized according to the vision of the planner, this order isn't at all obligatory but it's recommended to ensure that the learner doesn't face much problems.

Content

Level 0

Objectives

By the end of this level, the learner should know

  • How the internet and the web browser work
  • How frontend code works
  • Version Control Systems
  • What are relational and non-relational databases
  • Basic Data Structures and Algorithms
  • Basic Knowledge with Operating Systems

Plan

Phase Content
Week 1
🎯 Topics
  • HTML
  • CSS
  • Browser Developer Tools
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 0: Week 1 Quiz
Week 2
🎯 Topics
  • Version Control (Git & GitHub)
  • Introduction to databases
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 0: Week 2 Quiz
Week 3
🎯 Topics
  • Network Fundamentals for Web Developers
  • DNS Servers
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 0: Week 3 Quiz

Level 1

Objectives

By the end of this level, the learner should learn

  • JavaScript: Syntax, Features, OOP, Asynchronous Programming
  • NodeJS: Development, Packages, Modules, Processes, http module
  • Express: Basics, Middlewares
  • MongoDB: CRUD Operations, Integration with express

Plan

Phase Content
Week 1
🎯 Topics
  • What is JavaScript
  • Variables, DataTypes and Operators
  • Numbers and Strings Methods
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 1: Week 1 Quiz
Week 2
🎯 Topics
  • Arrays and Array Methods
  • Controlling Flow (Conditional Statements)
  • Controlling Flow (Iteration and Repeatition)
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 1: Week 2 Quiz
Week 3
🎯 Topics
  • Functions and Callbacks
  • Objects
  • Higher Order Functions
  • Hoisting
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 1: Week 3 Quiz
Week 4
🎯 Topics
  • Objects and Arrays Destructing, Spread Operator
  • Some Data Structures in JS (Map, Set, ...)
  • Array Advanced Methods
  • Regular Expressions
  • Closures
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 1: Week 4 Quiz
Week 5
🎯 Topics
  • Object Oriented Programming
  • Date Objects
  • Generator Functions
  • Modules
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 1: Week 5 Quiz
Week 6
🎯 Topics
  • Asynchronous Programming
    • Event Loop and Callback Queue
    • Promises and Promise Chaining
    • Callback Hells
    • Async/Await
  • JSON
  • Error Handling
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 1: Week 6 Quiz
Week 7
🎯 Topics
  • Node.js as a development environment
  • Using http module
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 1: Week 7 Quiz
Week 8
🎯 Topics
  • Express.js Basics
  • MongoDB and Mongoose
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 1: Week 8 Quiz
Final Project
🎯 Required
Implement a URL Shortener web application using what you have learnt in Express and MongoDB.
The way a URL shortener works is that the user enters a long URL through some form and submits, then the web application generates a short URL which redirects them into the desired URL.
🫵 Criteria
  • The application runs locally without any crashes
  • The user is able to enter a long URL and get a short one which auto-redirects to the target website
  • Previously shortened URLs are listed in the homepage as a reference for user
  • No need for authentication or routes protection in this project
📃 Task
Starter Code & Description

Level 2

Objectives

By the end of this level, the learner should learn

  • TypeScript: Syntax, Features, Usage
  • Architecture: MVC and other design patterns
  • Express: Validation, Authentication, Authorization, Sessions, APIs, JWT
  • API Documentation: Rules, using Swagger & Postman
  • Unit Testing: Test-Driven Development, Using tools like jest and supertest

Plan

Phase Content
Week 1
🎯 Topics
  • Why TypeScript
  • TypeScript Syntax
  • TypeScript Compiling
  • TypeScript inside an Express project
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 2: Week 1 Quiz
Week 2
🎯 Topics
  • MVC Design Architecture
  • Server-Side Validation
  • Environment variables and dotenv
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 2: Week 2 Quiz
Week 3
🎯 Topics

CRUD Application Part I

  • Setting Up Files with MVC
  • Connection with MongoDB Database
  • Server-Side Validation

🎞️ Tutorials
🌏 Arabic
🌏 English
📃 Task

Choose one project from the above, follow along with the tutorials and upload your code on GitHub

Level 2: Week 3 Quiz
Week 4
🎯 Topics

CRUD Application Part II

  • User Password Authentication
  • Authorization and Protecting Routes
  • Sessions, Cookies, Tokens
  • Uploading Files

🎞️ Tutorials
🌏 Arabic
🌏 English
📃 Task

Choose one project from the above, follow along with the tutorials and upload your code on GitHub

Level 2: Week 4 Quiz
Week 5
🎯 Topics
  • File Uploads
  • Sessions and Session Stores
  • Hashing Vs. Encryption
  • Session-Based Authentication
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task

Mini Tasks

  • Implement Hashing with Salting with SHA-256 Algorithm (Generating Salts, Generating Hashes, Comparing Values)
  • Implement file upload and fetching in a gallery application
Level 2: Week 5 Quiz

Week 6
🎯 Topics
  • Server-Side Rendering VS. Client-Side Rendering
  • REST APIs
  • JSON Web Tokens
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Level 2: Week 6 Quiz
Week 7
🎯 Topics
  • Advanced MongoDB Queries
  • Enhancing API Functionality
🎞️ Resources
🌏 Arabic
  • Index Academy (No need to watch all, just videos about queries, filtration, pagination, population and validation)
🌏 English
📃 Task
Level 2: Week 7 Quiz
Week 8
🎯 Topics

Build REST API

  • Dealing with JSON data
  • HTTP Methods and Status Codes
  • REST Routing Convention
  • JSON Web Tokens

🎞️ Tutorials
🌏 Arabic
🌏 English
📃 Task

Choose one project from the above, follow along with the tutorials and upload your code on GitHub

Level 2: Week 8 Quiz
Week 9
🎯 Topics
  • OAuth2.0 and Third Party Authentication
  • Authentication using passport.js
  • API Security
  • Rate Limiting and Controlling Traffic
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task

Implement OAuth2.0 Authentication with Passport.js using two third-party providers

Level 2: Week 9 Quiz
Week 10
🎯 Topics
  • SMTP
  • Sending Emails in Node.js
  • Sending SMS Messages with Twilio API
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task

Implement simple user registration system with Email Confirmation

Level 2: Week 10 Quiz
Week 11
🎯 Topics
  • Unit Testing in JavaScript
  • Unit Testing in Express Apps
  • API Documentation
  • Deployment
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task

Implement Unit Tests and API Documentation for the application you created at week 6, then deploy it on railway.

Level 2: Week 11 Quiz
Final Project
🎯 Required
Dr. Hossam teaches programming, but he is tired of manually collecting tasks from students and grading them one by one. He asks you if you can make an application for him where students make an account and upload their tasks. Only Dr. Hossam can add new tasks and give them grades. Can you make a Task Grading Hub for him?
🫵 Criteria
  • The application runs locally without any crashes.
  • The application is built on REST API, and uses JWTs for Authentication.
  • Admin Routes are protected, and users can't submit tasks without being logged in.
  • The users upload the task in a form of PDF file.
  • Server-Side Validation is provided to user input.
  • API is well documented using Swagger, Postman or any other tool.
  • Unit tests are implemented, inclusive and work fine.
📃 Task
Project Description

Level 3

Objectives

By the end of this level, the learner should learn

  • Database: SQL Syntax, DB-APIs, ORMs, Migrations
  • Modern APIs: GraphQL
  • Real Time Connections: Using socket.io and WebRTC
  • Caching: Caching Techniques, Redis for server-side caching
  • Task Scheduling: node-schedule
  • Browser Automation: E2E Testing and Web Scraping using puppeteer

Plan

Phase Content
Week 1
🎯 Topics
  • SQL Syntax
🎞️ Resources
🌏 Arabic

Choose only one DBMS

🌏 English

Choose only one DBMS

📃 Task
Part 1
Part 2
Week 2
🎯 Topics
  • Relational Database Design
  • SQL inside Node.js
🎞️ Resources
🌏 Arabic

🌏 English

📃 Task
Level 3: Week 2 Quiz
Week 3
🎯 Topics
  • What are ORMs
  • Prisma/Sequelize/typeORM
  • Database Migrations
🎞️ Resources
🌏 Arabic
🌏 English

Note: Sequelize, Prisma and TypeORM do the same job, so you don't have to learn all of them.

📃 Task
Mid Project

The Egyptian League wanted to stop using paper any more and wanted to create a dashboard to handle all players signed to different teams. Using an ORM connected to a relational database of your choice, implement a REST API for the Egyptian League Dashboard. You should have a route for teams and another one for players. The client using the dashboard should be able to:

  • Get all teams
  • Get one team's details
  • Get players by team
  • Get one player's details
  • Search for a player's name
  • Add new players, delete retired ones
  • Transfer a player from a team to another
  • Change a player's salary
  • Change team shirt color
Make sure you design your database precisely to acheive the desired features. Implementing Authentication is optional but recommended.

Week 4
🎯 Topics
  • Websocket and Socket.io
  • Streaming with WebRTC
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Week 5
🎯 Topics
  • Creating a Chat Application
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Week 6
🎯 Topics
  • Browser Automation & Web Scraping using puppeteer
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task

Implement a Job Stalker App using express.js and puppeteer, where the user enters the URL for someone's profile on LinkedIn and then the web application extracts data from the LinkedIn profile and presents them to the user to determine if the candidate is worth or not.

Week 7
🎯 Topics
  • Payment Gateways Integration
🎞️ Resources
🌏 Arabic
🌏 English

Note: There are other payment gates that are commonly used in the middle east like Paymob and 2Checkout, but there's no specific YouTube Content on how to integrate them using Node.js, so you will have to take a look at their documentations if you need them in a job.

📃 Task
Week 8
🎯 Topics
  • GraphQL
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Week 9
🎯 Topics
  • Caching with Redis
  • Task Scheduling
🎞️ Resources
🌏 Arabic
🌏 English
📃 Task
Final Project
🎯 Required

Mr. Samer is a seasoned entrepreneur who is looking to build an online marketplace platform. He wants to create a platform where users can buy and sell various products, while also providing real-time communication between buyers and sellers. Can you help Mr. Samer build this Online Marketplace with GraphQL, Socket.IO, and PayPal Integration?

🫵 Criteria
  • The application runs locally without any crashes.
  • The application is built on a GraphQL API, utilizing the Apollo Server library.
  • Real-time communication between buyers and sellers is implemented using Socket.IO.
  • PayPal Integration is implemented for secure and convenient payment processing.
  • User authentication and authorization are implemented using JWTs.
  • Server-side validation is provided for user input and uploaded product data.
  • API is well-documented using Swagger, Postman, or any other tool.
  • Unit tests are implemented to ensure functionality and reliability.
📃 Project: Online Marketplace

Level 4

Objectives

By the end of this level, the learner should learn

  • Hosting: Linux operating system, SSH protocol, VPS hosting
  • Web Security: Avoiding Attacks and designing security layers
  • Architecture: Microservices, Nodejs Design Patterns
  • Automation: Tasks and pipelines
  • System Design: Fundamentals of designing complex software
  • Software Engineering: SDLC, Agile Workflow, DevOps Workflow
  • Containers: Concept, Intro to Kubernetes

Plan

TO BE DETERMINED