└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Backend with NodeJS Roadmap 2 | By [Seif El-Din Sweilam](https://github.com/saifsweelam) for Backend Circle in [CAT-Reloaded](https://github.com/CATReloaded) 3 | 4 | ## Inroduction 5 | 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. 6 | 7 | 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. 8 | 9 | > #### **NOTE** 10 | > This is **Version 1** of the roadmap. 11 | > 🚧 **Version 2 is currently in progress** in the [`v2` branch](https://github.com/cat-backend-nodejs/nodejs-roadmap/tree/v2). It will have more updated resources. 12 | 13 | ## Content 14 | 15 | ### Level 0 16 | 17 | #### Objectives 18 | _By the end of this level, the learner should know_ 19 | * How the internet and the web browser work 20 | * How frontend code works 21 | * Version Control Systems 22 | * What are relational and non-relational databases 23 | * Basic Data Structures and Algorithms 24 | * Basic Knowledge with Operating Systems 25 | 26 | #### Plan 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 59 | 60 | 61 | 62 | 84 | 85 | 86 | 87 | 106 | 107 | 108 |
PhaseContent
Week 1 38 |
🎯 Topics
39 |
    40 |
  • HTML
  • 41 |
  • CSS
  • 42 |
  • Browser Developer Tools
  • 43 |
44 |
🎞️ Resources
45 |
🌏 Arabic
46 | 51 |
🌏 English
52 | 56 |
📃 Task
57 | Level 0: Week 1 Quiz 58 |
Week 2 63 |
🎯 Topics
64 |
    65 |
  • Version Control (Git & GitHub)
  • 66 |
  • Introduction to databases
  • 67 |
68 |
🎞️ Resources
69 |
🌏 Arabic
70 | 75 |
🌏 English
76 | 81 |
📃 Task
82 | Level 0: Week 2 Quiz 83 |
Week 3 88 |
🎯 Topics
89 |
    90 |
  • Network Fundamentals for Web Developers
  • 91 |
  • DNS Servers
  • 92 |
93 |
🎞️ Resources
94 |
🌏 Arabic
95 | 98 |
🌏 English
99 | 103 |
📃 Task
104 | Level 0: Week 3 Quiz 105 |
109 | 110 | 111 | ### Level 1 112 | 113 | #### Objectives 114 | _By the end of this level, the learner should learn_ 115 | * **JavaScript**: Syntax, Features, OOP, Asynchronous Programming 116 | * **NodeJS**: Development, Packages, Modules, Processes, `http` module 117 | * **Express**: Basics, Middlewares 118 | * **MongoDB**: CRUD Operations, Integration with `express` 119 | 120 | #### Plan 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 150 | 151 | 152 | 153 | 173 | 174 | 175 | 176 | 199 | 200 | 201 | 202 | 231 | 232 | 233 | 234 | 258 | 259 | 260 | 261 | 290 | 291 | 292 | 293 | 315 | 316 | 317 | 318 | 344 | 345 | 346 | 347 | 362 | 363 | 364 |
PhaseContent
Week 1 132 |
🎯 Topics
133 |
    134 |
  • What is JavaScript
  • 135 |
  • Variables, DataTypes and Operators
  • 136 |
  • Numbers and Strings Methods
  • 137 |
138 |
🎞️ Resources
139 |
🌏 Arabic
140 | 143 |
🌏 English
144 | 147 |
📃 Task
148 | Level 1: Week 1 Quiz 149 |
Week 2 154 |
🎯 Topics
155 |
    156 |
  • Arrays and Array Methods
  • 157 |
  • Controlling Flow (Conditional Statements)
  • 158 |
  • Controlling Flow (Iteration and Repeatition)
  • 159 |
160 |
🎞️ Resources
161 |
🌏 Arabic
162 | 165 |
🌏 English
166 | 170 |
📃 Task
171 | Level 1: Week 2 Quiz 172 |
Week 3 177 |
🎯 Topics
178 |
    179 |
  • Functions and Callbacks
  • 180 |
  • Objects
  • 181 |
  • Higher Order Functions
  • 182 |
  • Hoisting
  • 183 |
184 |
🎞️ Resources
185 |
🌏 Arabic
186 | 190 |
🌏 English
191 | 196 |
📃 Task
197 | Level 1: Week 3 Quiz 198 |
Week 4 203 |
🎯 Topics
204 |
    205 |
  • Objects and Arrays Destructing, Spread Operator
  • 206 |
  • Some Data Structures in JS (Map, Set, ...)
  • 207 |
  • Array Advanced Methods
  • 208 |
  • Regular Expressions
  • 209 |
  • Closures
  • 210 |
211 |
🎞️ Resources
212 |
🌏 Arabic
213 | 217 |
🌏 English
218 | 228 |
📃 Task
229 | Level 1: Week 4 Quiz 230 |
Week 5 235 |
🎯 Topics
236 |
    237 |
  • Object Oriented Programming
  • 238 |
  • Date Objects
  • 239 |
  • Generator Functions
  • 240 |
  • Modules
  • 241 |
242 |
🎞️ Resources
243 |
🌏 Arabic
244 | 247 |
🌏 English
248 | 255 |
📃 Task
256 | Level 1: Week 5 Quiz 257 |
Week 6 262 |
🎯 Topics
263 |
    264 |
  • 265 | Asynchronous Programming 266 |
      267 |
    • Event Loop and Callback Queue
    • 268 |
    • Promises and Promise Chaining
    • 269 |
    • Callback Hells
    • 270 |
    • Async/Await
    • 271 |
    272 |
  • 273 |
  • JSON
  • 274 |
  • Error Handling
  • 275 |
276 |
🎞️ Resources
277 |
🌏 Arabic
278 | 281 |
🌏 English
282 | 287 |
📃 Task
288 | Level 1: Week 6 Quiz 289 |
Week 7 294 |
🎯 Topics
295 |
    296 |
  • Node.js as a development environment
  • 297 |
  • Using http module
  • 298 |
299 |
🎞️ Resources
300 |
🌏 Arabic
301 | 306 |
🌏 English
307 | 312 |
📃 Task
313 | Level 1: Week 7 Quiz 314 |
Week 8 319 |
🎯 Topics
320 |
    321 |
  • Express.js Basics
  • 322 |
  • MongoDB and Mongoose
  • 323 |
324 |
🎞️ Resources
325 |
🌏 Arabic
326 | 332 |
🌏 English
333 | 341 |
📃 Task
342 | Level 1: Week 8 Quiz 343 |
Final Project 348 |
🎯 Required
349 | Implement a URL Shortener web application using what you have learnt in Express and MongoDB. 350 |
351 | 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. 352 |
🫵 Criteria
353 |
    354 |
  • The application runs locally without any crashes
  • 355 |
  • The user is able to enter a long URL and get a short one which auto-redirects to the target website
  • 356 |
  • Previously shortened URLs are listed in the homepage as a reference for user
  • 357 |
  • No need for authentication or routes protection in this project
  • 358 |
359 |
📃 Task
360 | Starter Code & Description 361 |
365 | 366 | ### Level 2 367 | 368 | #### Objectives 369 | _By the end of this level, the learner should learn_ 370 | * **TypeScript**: Syntax, Features, Usage 371 | * **Architecture**: MVC and other design patterns 372 | * **Express**: Validation, Authentication, Authorization, Sessions, APIs, JWT 373 | * **API Documentation**: Rules, using Swagger & Postman 374 | * **Unit Testing**: Test-Driven Development, Using tools like `jest` and `supertest` 375 | 376 | #### Plan 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 409 | 410 | 411 | 412 | 438 | 439 | 440 | 441 | 466 | 467 | 468 | 469 | 495 | 496 | 497 | 498 | 537 | 538 | 539 | 540 | 572 | 573 | 574 | 575 | 593 | 594 | 595 | 596 | 623 | 624 | 625 | 626 | 657 | 658 | 659 | 660 | 683 | 684 | 685 | 686 | 716 | 717 | 718 | 719 | 735 | 736 | 737 |
PhaseContent
Week 1 388 |
🎯 Topics
389 |
    390 |
  • Why TypeScript
  • 391 |
  • TypeScript Syntax
  • 392 |
  • TypeScript Compiling
  • 393 |
  • TypeScript inside an Express project
  • 394 |
395 |
🎞️ Resources
396 |
🌏 Arabic
397 | 401 |
🌏 English
402 | 406 |
📃 Task
407 | Level 2: Week 1 Quiz 408 |
Week 2 413 |
🎯 Topics
414 |
    415 |
  • MVC Design Architecture
  • 416 |
  • Server-Side Validation
  • 417 |
  • Environment variables and dotenv
  • 418 |
419 |
🎞️ Resources
420 |
🌏 Arabic
421 | 428 |
🌏 English
429 | 435 |
📃 Task
436 | Level 2: Week 2 Quiz 437 |
Week 3 442 |
🎯 Topics
443 |

444 | CRUD Application Part I 445 |

    446 |
  • Setting Up Files with MVC
  • 447 |
  • Connection with MongoDB Database
  • 448 |
  • Server-Side Validation
  • 449 |
450 |

451 |
🎞️ Tutorials
452 |
🌏 Arabic
453 | 457 |
🌏 English
458 | 462 |
📃 Task
463 |

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

464 | Level 2: Week 3 Quiz 465 |
Week 4 470 |
🎯 Topics
471 |

472 | CRUD Application Part II 473 |

    474 |
  • User Password Authentication
  • 475 |
  • Authorization and Protecting Routes
  • 476 |
  • Sessions, Cookies, Tokens
  • 477 |
  • Uploading Files
  • 478 |
479 |

480 |
🎞️ Tutorials
481 |
🌏 Arabic
482 | 486 |
🌏 English
487 | 491 |
📃 Task
492 |

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

493 | Level 2: Week 4 Quiz 494 |
Week 5 499 |
🎯 Topics
500 |
    501 |
  • File Uploads
  • 502 |
  • Sessions and Session Stores
  • 503 |
  • Hashing Vs. Encryption
  • 504 |
  • Session-Based Authentication
  • 505 |
506 |
🎞️ Resources
507 |
🌏 Arabic
508 | 517 |
🌏 English
518 | 527 |
📃 Task
528 |

529 | Mini Tasks 530 |

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

536 |
Week 6 541 |
🎯 Topics
542 |
    543 |
  • Server-Side Rendering VS. Client-Side Rendering
  • 544 |
  • REST APIs
  • 545 |
  • JSON Web Tokens
  • 546 |
547 |
🎞️ Resources
548 |
🌏 Arabic
549 | 558 |
🌏 English
559 | 569 |
📃 Task
570 | Level 2: Week 6 Quiz 571 |
Week 7 576 |
🎯 Topics
577 |
    578 |
  • Advanced MongoDB Queries
  • 579 |
  • Enhancing API Functionality
  • 580 |
581 |
🎞️ Resources
582 |
🌏 Arabic
583 |
    584 |
  • Index Academy (No need to watch all, just videos about queries, filtration, pagination, population and validation)
  • 585 |
586 |
🌏 English
587 | 590 |
📃 Task
591 | Level 2: Week 7 Quiz 592 |
Week 8 597 |
🎯 Topics
598 |

599 | Build REST API 600 |

    601 |
  • Dealing with JSON data
  • 602 |
  • HTTP Methods and Status Codes
  • 603 |
  • REST Routing Convention
  • 604 |
  • JSON Web Tokens
  • 605 |
606 |

607 |
🎞️ Tutorials
608 |
🌏 Arabic
609 | 613 |
🌏 English
614 | 619 |
📃 Task
620 |

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

621 | Level 2: Week 8 Quiz 622 |
Week 9 627 |
🎯 Topics
628 |
    629 |
  • OAuth2.0 and Third Party Authentication
  • 630 |
  • Authentication using passport.js
  • 631 |
  • API Security
  • 632 |
  • Rate Limiting and Controlling Traffic
  • 633 |
634 |
🎞️ Resources
635 |
🌏 Arabic
636 | 643 |
🌏 English
644 | 653 |
📃 Task
654 |

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

655 | Level 2: Week 9 Quiz 656 |
Week 10 661 |
🎯 Topics
662 |
    663 |
  • SMTP
  • 664 |
  • Sending Emails in Node.js
  • 665 |
  • Sending SMS Messages with Twilio API
  • 666 |
667 |
🎞️ Resources
668 |
🌏 Arabic
669 | 673 |
🌏 English
674 | 679 |
📃 Task
680 |

Implement simple user registration system with Email Confirmation

681 | Level 2: Week 10 Quiz 682 |
Week 11 687 |
🎯 Topics
688 |
    689 |
  • Unit Testing in JavaScript
  • 690 |
  • Unit Testing in Express Apps
  • 691 |
  • API Documentation
  • 692 |
  • Deployment
  • 693 |
694 |
🎞️ Resources
695 |
🌏 Arabic
696 | 703 |
🌏 English
704 | 712 |
📃 Task
713 |

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

714 | Level 2: Week 11 Quiz 715 |
Final Project 720 |
🎯 Required
721 | 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? 722 |
🫵 Criteria
723 |
    724 |
  • The application runs locally without any crashes.
  • 725 |
  • The application is built on REST API, and uses JWTs for Authentication.
  • 726 |
  • Admin Routes are protected, and users can't submit tasks without being logged in.
  • 727 |
  • The users upload the task in a form of PDF file.
  • 728 |
  • Server-Side Validation is provided to user input.
  • 729 |
  • API is well documented using Swagger, Postman or any other tool.
  • 730 |
  • Unit tests are implemented, inclusive and work fine.
  • 731 |
732 |
📃 Task
733 | Project Description 734 |
738 | 739 | ### Level 3 740 | 741 | #### Objectives 742 | _By the end of this level, the learner should learn_ 743 | * **Database**: SQL Syntax, DB-APIs, ORMs, Migrations 744 | * **Modern APIs**: `GraphQL` 745 | * **Real Time Connections**: Using `socket.io` and `WebRTC` 746 | * **Caching**: Caching Techniques, Redis for server-side caching 747 | * **Task Scheduling**: `node-schedule` 748 | * **Browser Automation**: E2E Testing and Web Scraping using `puppeteer` 749 | 750 | #### Plan 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 840 | 841 | 842 | 843 | 881 | 882 | 883 | 884 | 929 | 930 | 931 | 932 | 949 | 950 | 951 | 952 | 974 | 975 | 976 | 977 | 995 | 996 | 997 | 998 | 1017 | 1018 | 1019 | 1020 | 1039 | 1040 | 1041 | 1042 | 1062 | 1063 | 1064 | 1065 | 1087 | 1088 | 1089 | 1090 | 1106 | 1107 | 1108 |
PhaseContent
Week 1 762 |
🎯 Topics
763 |
    764 |
  • SQL Syntax
  • 765 |
766 |
🎞️ Resources
767 |
🌏 Arabic
768 |

769 | Choose only one DBMS 770 |

800 |

801 |
🌏 English
802 |

803 | Choose only one DBMS 804 |

835 |

836 |
📃 Task
837 | Part 1
838 | Part 2 839 |
Week 2 844 |
🎯 Topics
845 |
    846 |
  • Relational Database Design
  • 847 |
  • SQL inside Node.js
  • 848 |
849 |
🎞️ Resources
850 |
🌏 Arabic
851 |

852 |

862 |

863 |
🌏 English
864 |

865 |

877 |

878 |
📃 Task
879 | Level 3: Week 2 Quiz 880 |
Week 3 885 |
🎯 Topics
886 |
    887 |
  • What are ORMs
  • 888 |
  • Prisma/Sequelize/typeORM
  • 889 |
  • Database Migrations
  • 890 |
891 |
🎞️ Resources
892 |
🌏 Arabic
893 | 897 |
🌏 English
898 | 926 |

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

927 |
📃 Task
928 |
Mid Project 933 |

934 | 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: 935 |

    936 |
  • Get all teams
  • 937 |
  • Get one team's details
  • 938 |
  • Get players by team
  • 939 |
  • Get one player's details
  • 940 |
  • Search for a player's name
  • 941 |
  • Add new players, delete retired ones
  • 942 |
  • Transfer a player from a team to another
  • 943 |
  • Change a player's salary
  • 944 |
  • Change team shirt color
  • 945 |
946 | Make sure you design your database precisely to acheive the desired features. Implementing Authentication is optional but recommended. 947 |

948 |
Week 4 953 |
🎯 Topics
954 |
    955 |
  • Websocket and Socket.io
  • 956 |
  • Streaming with WebRTC
  • 957 |
958 |
🎞️ Resources
959 |
🌏 Arabic
960 | 966 |
🌏 English
967 | 972 |
📃 Task
973 |
Week 5 978 |
🎯 Topics
979 |
    980 |
  • Creating a Chat Application
  • 981 |
982 |
🎞️ Resources
983 |
🌏 Arabic
984 | 987 |
🌏 English
988 | 993 |
📃 Task
994 |
Week 6 999 |
🎯 Topics
1000 |
    1001 |
  • Browser Automation & Web Scraping using puppeteer
  • 1002 |
1003 |
🎞️ Resources
1004 |
🌏 Arabic
1005 | 1009 |
🌏 English
1010 | 1014 |
📃 Task
1015 |

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.

1016 |
Week 7 1021 |
🎯 Topics
1022 |
    1023 |
  • Payment Gateways Integration
  • 1024 |
1025 |
🎞️ Resources
1026 |
🌏 Arabic
1027 | 1031 |
🌏 English
1032 | 1036 |

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.

1037 |
📃 Task
1038 |
Week 8 1043 |
🎯 Topics
1044 |
    1045 |
  • GraphQL
  • 1046 |
1047 |
🎞️ Resources
1048 |
🌏 Arabic
1049 | 1055 |
🌏 English
1056 | 1060 |
📃 Task
1061 |
Week 9 1066 |
🎯 Topics
1067 |
    1068 |
  • Caching with Redis
  • 1069 |
  • Task Scheduling
  • 1070 |
1071 |
🎞️ Resources
1072 |
🌏 Arabic
1073 | 1076 |
🌏 English
1077 | 1085 |
📃 Task
1086 |
Final Project 1091 |
🎯 Required
1092 |

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?

1093 |
🫵 Criteria
1094 |
    1095 |
  • The application runs locally without any crashes.
  • 1096 |
  • The application is built on a GraphQL API, utilizing the Apollo Server library.
  • 1097 |
  • Real-time communication between buyers and sellers is implemented using Socket.IO.
  • 1098 |
  • PayPal Integration is implemented for secure and convenient payment processing.
  • 1099 |
  • User authentication and authorization are implemented using JWTs.
  • 1100 |
  • Server-side validation is provided for user input and uploaded product data.
  • 1101 |
  • API is well-documented using Swagger, Postman, or any other tool.
  • 1102 |
  • Unit tests are implemented to ensure functionality and reliability.
  • 1103 |
1104 |
📃 Project: Online Marketplace
1105 |
1109 | 1110 | 1111 | ### Level 4 1112 | 1113 | #### Objectives 1114 | _By the end of this level, the learner should learn_ 1115 | * **Hosting**: Linux operating system, SSH protocol, VPS hosting 1116 | * **Web Security**: Avoiding Attacks and designing security layers 1117 | * **Architecture**: Microservices, Nodejs Design Patterns 1118 | * **Automation**: Tasks and pipelines 1119 | * **System Design**: Fundamentals of designing complex software 1120 | * **Software Engineering**: SDLC, Agile Workflow, DevOps Workflow 1121 | * **Containers**: Concept, Intro to Kubernetes 1122 | 1123 | #### Plan 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1164 | 1165 | 1166 | 1167 | 1200 | 1201 | 1202 | 1203 | 1232 | 1233 | 1234 | 1235 | 1265 | 1266 | 1267 |
PhaseContent
Week 1 1136 |
🎯 Topics
1137 |
    1138 |
  • 1139 | Creational Design Patterns 1140 |
      1141 |
    • Builder
    • 1142 |
    • Factory
    • 1143 |
    • Singleton
    • 1144 |
    • Prototype
    • 1145 |
    1146 |
  • 1147 |
1148 |
🎞️ Resources
1149 |
🌏 Arabic
1150 |

1151 |

1155 |

1156 |
🌏 English
1157 |

1158 |

1161 |

1162 |
📃 Task
1163 |
Week 2 1168 |
🎯 Topics
1169 |
    1170 |
  • 1171 | Structural Design Patterns 1172 |
      1173 |
    • Adapter
    • 1174 |
    • Bridge
    • 1175 |
    • Composite
    • 1176 |
    • Decorator
    • 1177 |
    • Facade
    • 1178 |
    • Flyweight
    • 1179 |
    • Proxy
    • 1180 |
    1181 |
  • 1182 |
1183 |
🎞️ Resources
1184 |
🌏 Arabic
1185 |

1186 |

1191 |

1192 |
🌏 English
1193 |

1194 |

1197 |

1198 |
📃 Task
1199 |
Week 3 1204 |
🎯 Topics
1205 |
    1206 |
  • 1207 | Behavioral Design Patterns (1) 1208 |
      1209 |
    • Chain of responsibility
    • 1210 |
    • Observer
    • 1211 |
    • Command
    • 1212 |
    • Interpreter
    • 1213 |
    • Iterator
    • 1214 |
    1215 |
  • 1216 |
1217 |
🎞️ Resources
1218 |
🌏 Arabic
1219 |

1220 |

1223 |

1224 |
🌏 English
1225 |

1226 |

1229 |

1230 |
📃 Task
1231 |
Week 4 1236 |
🎯 Topics
1237 |
    1238 |
  • 1239 | Behavioral Design Patterns (2) 1240 |
      1241 |
    • Mediator
    • 1242 |
    • Memento
    • 1243 |
    • State
    • 1244 |
    • Strategy
    • 1245 |
    • Template
    • 1246 |
    • Visitor
    • 1247 |
    1248 |
  • 1249 |
1250 |
🎞️ Resources
1251 |
🌏 Arabic
1252 |

1253 |

1256 |

1257 |
🌏 English
1258 |

1259 |

1262 |

1263 |
📃 Task
1264 |
1268 | --------------------------------------------------------------------------------