node

๐ŸŽ“ Node.js Course

## Full-Stack JavaScript Development with Node.js **VIVES University of Applied Sciences** Dirk Hostens & Milan Dima

๐Ÿ“š Course Overview

Welcome to the Node.js Course! This comprehensive course will take you from Node.js basics to building full-stack applications with MongoDB, Express, and authentication.


๐Ÿ—‚๏ธ Course Chapters

### ๐Ÿ“˜ [Chapter 1: Introduction and Installation](/node/01-Intro/)
**Topics:** - What is Node.js? - Node.js Architecture - Installation & Setup - First Application **Slides:** - [01 - Course Introduction](/node/01-Intro/01-course-introduction.html) - [02 - What is Node.js](/node/01-Intro/02-what-is-nodejs.html) - [03 - Node.js Architecture](/node/01-Intro/03-nodejs-architecture.html) - [04 - Installation & Setup](/node/01-Intro/04-installation-setup.html) - [05 - First Application](/node/01-Intro/05-first-application.html)
--- ### ๐Ÿ“— [Chapter 2: Node Module System](/node/02-Node-Module-System/)
**Topics:** - Global Objects - Module System Basics - Creating Custom Modules - Built-in Modules - Events & EventEmitter - HTTP Module **Slides:** - [01 - Global Objects](/node/02-Node-Module-System/01-global-objects.html) - [02 - Module System Basics](/node/02-Node-Module-System/02-module-system.html) - [03 - Creating Custom Modules](/node/02-Node-Module-System/03-creating-modules.html) - [04 - Built-in Modules](/node/02-Node-Module-System/04-builtin-modules.html) - [05 - Events & EventEmitter](/node/02-Node-Module-System/05-events.html) - [06 - HTTP Module](/node/02-Node-Module-System/06-http-module.html)
--- ### ๐Ÿ“™ [Chapter 3: Node Package Manager (NPM)](/node/03-Node-NPM/)
**Topics:** - What is npm? - package.json Configuration - Installing & Using Packages - Semantic Versioning - Managing Dependencies - Publishing Packages **Slides:** - [01 - What is NPM?](/node/03-Node-NPM/01-what-is-npm.html) - [02 - package.json](/node/03-Node-NPM/02-package-json.html) - [03 - Installing Packages](/node/03-Node-NPM/03-installing-packages.html) - [04 - Semantic Versioning](/node/03-Node-NPM/04-semantic-versioning.html) - [05 - Managing Dependencies](/node/03-Node-NPM/05-managing-dependencies.html) - [06 - Publishing Packages](/node/03-Node-NPM/06-publishing-packages.html)
--- ### ๐Ÿ“• [Chapter 4: Building APIs with Express](/node/04-Express-API/)
**Topics:** - RESTful API Principles - Express.js Framework - GET, POST, PUT, DELETE Requests - Route Parameters & Validation - Using Postman & nodemon **Slides:** - [01 - REST & Express](/node/04-Express-API/01-rest-and-express.html) - [02 - GET Requests](/node/04-Express-API/02-get-requests.html) - [03 - POST Requests](/node/04-Express-API/03-post-requests.html) - [04 - PUT & DELETE Requests](/node/04-Express-API/04-put-delete-requests.html) - [05 - Tools & Best Practices](/node/04-Express-API/05-tools-best-practices.html)
--- ### ๐Ÿ“” [Chapter 5: Middleware Functions](/node/05-Middleware/)
**Topics:** - Middleware Concepts & Pipeline - Built-in Middleware - Third-party Middleware (helmet, morgan) - Environments & Configuration - Templating & Project Structure **Slides:** - [01 - Middleware Basics](/node/05-Middleware/01-middleware-basics.html) - [02 - Built-in Middleware](/node/05-Middleware/02-builtin-middleware.html) - [03 - Third-party Middleware](/node/05-Middleware/03-third-party-middleware.html) - [04 - Environments & Config](/node/05-Middleware/04-environments-config.html) - [05 - Templating & Structure](/node/05-Middleware/05-templating-structure.html)
--- ### ๐Ÿ““ [Chapter 6: Asynchronous JavaScript](/node/06-Async-JS/)
**Topics:** - Synchronous vs Asynchronous - Callbacks & Callback Hell - Promises - Async/Await - Parallel Execution **Slides:** - [01 - Sync vs Async](/node/06-Async-JS/01-sync-vs-async.html) - [02 - Callbacks](/node/06-Async-JS/02-callbacks.html) - [03 - Promises](/node/06-Async-JS/03-promises.html) - [04 - Async/Await](/node/06-Async-JS/04-async-await.html)
--- ### ๐Ÿ“’ [Chapter 7: MongoDB & Mongoose](/node/07-MongoDB/)
**Topics:** - MongoDB Setup & Connection - Schemas & Models - CRUD Operations (Create, Read, Update, Delete) - Querying & Filtering - Pagination & Sorting **Slides:** - [01 - MongoDB Setup](/node/07-MongoDB/01-mongodb-setup.html) - [02 - Schemas & Models](/node/07-MongoDB/02-schemas-models.html) - [03 - Creating Documents](/node/07-MongoDB/03-creating-documents.html) - [04 - Reading Documents](/node/07-MongoDB/04-reading-documents.html) - [05 - Updating Documents](/node/07-MongoDB/05-updating-documents.html) - [06 - Deleting Documents](/node/07-MongoDB/06-deleting-documents.html)
--- ### ๐Ÿ“– [Chapter 8: Data Validation](/node/08-Data-Validation/01-introduction.html)
**Topics:** - Mongoose Validation - Built-in Validators - Custom Validators - Adding Persistence to APIs - Refactoring CRUD Operations **Slides:** - [01 - Introduction](/node/08-Data-Validation/01-introduction.html) - [02 - Validation in Mongoose](/node/08-Data-Validation/02-validation-mongoose.html) - [03 - Custom Validators](/node/08-Data-Validation/03-custom-validators.html) - [04 - Adding Persistence](/node/08-Data-Validation/04-adding-persistence.html) - [05 - Refactoring GET](/node/08-Data-Validation/05-refactoring-get.html) - [06 - Refactoring POST](/node/08-Data-Validation/06-refactoring-post.html) - [07 - Refactoring PUT](/node/08-Data-Validation/07-refactoring-put.html) - [08 - Refactoring DELETE](/node/08-Data-Validation/08-refactoring-delete.html) - [09 - Testing](/node/08-Data-Validation/09-testing.html) - [10 - Lab Assignment](/node/08-Data-Validation/10-lab.html)
--- ### ๐Ÿ“š [Chapter 9: Mongoose Modeling](./09-Mongoose-Modeling/README.md)
**Topics:** - Referencing vs Embedding - Hybrid Approaches - Subdocuments & Arrays - Transactions **Slides:** - [01 - Introduction to Modeling](/node/09-Mongoose-Modeling/01-intro.html) - [02 - Referencing vs Embedding](/node/09-Mongoose-Modeling/02-referencing-embedding.html) - [03 - Hybrid Approach](/node/09-Mongoose-Modeling/03-hybrid-approach.html) - [04 - Referencing Documents](/node/09-Mongoose-Modeling/04-referencing-documents.html) - [05 - Embedding Documents](/node/09-Mongoose-Modeling/05-embedding-documents.html) - [06 - Arrays of Subdocuments](/node/09-Mongoose-Modeling/06-arrays-subdocuments.html) - [07 - MongoDB ObjectIDs](/node/09-Mongoose-Modeling/07-objectids.html) - [08 - Transactions](/node/09-Mongoose-Modeling/08-transactions.html) - [09 - Lab & Assignment](/node/09-Mongoose-Modeling/09-lab.html)
--- ### ๐Ÿ“• [Chapter 10: Authentication & Authorization](./10-Auth-And-Auth/README.md)
**Topics:** - JWT Authentication - Auth Middleware - Role-Based Authorization - Admin Privileges - Secure Logout **Slides:** - [01 - Introduction](/node/10-Auth-And-Auth/01-intro.html) - [02 - Auth Middleware](/node/10-Auth-And-Auth/02-auth-middleware.html) - [03 - Protecting Routes](/node/10-Auth-And-Auth/03-protecting-routes.html) - [04 - Getting Current User](/node/10-Auth-And-Auth/04-current-user.html) - [05 - User Logout](/node/10-Auth-And-Auth/05-user-logout.html) - [06 - Role-Based Authorization](/node/10-Auth-And-Auth/06-role-based-auth.html) - [07 - Admin Middleware](/node/10-Auth-And-Auth/07-admin-middleware.html) - [08 - Applying Admin Middleware](/node/10-Auth-And-Auth/08-applying-admin.html) - [09 - Summary](/node/10-Auth-And-Auth/09-summary.html)
--- ### ๐Ÿšจ [Chapter 11: Error Handling](/node/11-Error-Handling/01-introduction.html)
**Topics:** - Synchronous vs Asynchronous Error Handling - Try-Catch Blocks - Custom Error Classes - Express Error Middleware - Production Best Practices **Slides:** - [01 - Introduction](/node/11-Error-Handling/01-introduction.html) - [02 - Synchronous Error Handling](/node/11-Error-Handling/02-synchronous-errors.html) - [03 - Asynchronous Error Handling](/node/11-Error-Handling/03-async-errors.html) - [04 - Express Error Middleware](/node/11-Error-Handling/04-express-errors.html) - [05 - Best Practices](/node/11-Error-Handling/05-best-practices.html)
--- ### ๐Ÿงช [Chapter 12: Testing with Node.js](/node/12-Testing/01-introduction.html)
**Topics:** - Node.js Built-in Test Runner - Writing Unit & Integration Tests - Assertions & Mocking - Asynchronous Testing - Code Coverage - Testing Best Practices **Slides:** - [01 - Introduction to Testing](/node/12-Testing/01-introduction.html) - [02 - Writing Your First Test](/node/12-Testing/02-first-test.html) - [03 - Assertions](/node/12-Testing/03-assertions.html) - [04 - Async Testing](/node/12-Testing/04-async-testing.html) - [05 - Mocking and Spies](/node/12-Testing/05-mocking.html) - [06 - Code Coverage](/node/12-Testing/06-coverage.html) - [07 - Best Practices](/node/12-Testing/07-best-practices.html) - [08 - Lab Exercise](/node/12-Testing/08-lab.html)

๐ŸŽฏ Learning Path

graph TD
    A[1. Introduction] --> B[2. Modules]
    B --> C[3. NPM]
    C --> D[4. Express API]
    D --> E[5. Middleware]
    E --> F[6. Async JS]
    F --> G[7. MongoDB]
    G --> H[8. Validation]
    H --> I[9. Modeling]
    I --> J[10. Auth]
    J --> K[11. Error Handling]
    K --> L[12. Testing]
    style A fill:#4caf50,stroke:#2e7d32,color:#fff

๐Ÿ“– How to Use This Course

### For Students 1. **Read sequentially** - Start with Chapter 1 and progress through each chapter 2. **Practice** - Complete all lab exercises 3. **Ask questions** - Use the Toledo forum 4. **Build projects** - Apply what you learn ### For Instructors (Live Demos) 1. **Navigate by chapter** - Each chapter has its own folder 2. **Use individual slides** - Numbered files for each topic 3. **Interactive examples** - All code examples are ready to run 4. **Mermaid diagrams** - Install VS Code extension for visual diagrams

๐Ÿ› ๏ธ Prerequisites

Before starting this course, you should have: โœ… Basic understanding of **JavaScript** (ES6+) โœ… Familiarity with **HTML & CSS** โœ… Experience with **command line/terminal** โœ… Basic knowledge of **Git & GitHub** โœ… Understanding of **web development concepts**

๐Ÿ’ป Setup Requirements

Requirement Version Link
Node.js v18+ (LTS) nodejs.org
npm v9+ Included with Node.js
VS Code Latest code.visualstudio.com
Git Latest git-scm.com
MongoDB v6+ mongodb.com

Install these for the best development experience: - ๐Ÿ“ฆ **npm intellisense** - Auto-complete npm modules - ๐Ÿ” **ESLint** - Code quality and error detection - ๐ŸŽจ **Prettier** - Code formatting - ๐ŸŒ **REST Client** - Test APIs in VS Code - ๐Ÿ“ **Markdown Preview Mermaid Support** - View diagrams - ๐Ÿ—ƒ๏ธ **MongoDB for VS Code** - Database management

๐ŸŽ“ Grading

``` ๐Ÿ’ฏ 100% Project + Oral Defense Exam ``` See **Toledo** for detailed grading criteria and project requirements.

๐Ÿ“š Additional Resources

Official Documentation

Learning Resources


โ“ Getting Help

### Need Assistance? 1. ๐Ÿ“š **Review the chapter materials** 2. ๐Ÿ” **Search the Toledo forum** 3. ๐Ÿ’ฌ **Ask on the forum** (course/practical questions) 4. ๐Ÿ“ง **Email instructors** (private matters only) **Forum Guidelines:** - Search before posting - Include relevant code and error messages - Be specific about what you've tried - Help your classmates when you can

๐Ÿ“ Course Updates

### Latest Changes - **2026-02-09**: Chapter 12 (Testing) created with Node.js test runner - **2026-02-09**: Chapter 11 (Error Handling) created with best practices - **2026-02-09**: Chapter 10 (Authentication & Authorization) converted to markdown format - **2026-02-09**: Chapter 9 (Mongoose Modeling) converted to markdown format - **2026-02-09**: Chapter 8 (Data Validation) converted to markdown format - **2026-02-09**: Chapter 7 (MongoDB) converted to markdown format - **2026-02-09**: Chapter 6 (Async JS) converted to markdown format - **2026-02-09**: Chapter 5 (Middleware) converted to markdown format - **2026-02-09**: Chapter 4 (Express API) converted to markdown format - **2026-02-09**: Chapter 3 (NPM) converted to markdown format - **2026-02-09**: Chapter 2 (Module System) converted to markdown format - **2026-02-02**: Chapter 1 (Intro) converted to markdown format

๐Ÿค Contributing

Found an error or have a suggestion? Let us know via:


## ๐Ÿš€ Ready to Start? **Begin your Node.js journey with [Chapter 1: Introduction โ†’](/node/01-Intro/)** --- **Node.js Course** | Academic Year 2025-2026 VIVES University of Applied Sciences Dirk Hostens (dirk.hostens@vives.be) & Milan Dima (milan.dima@vives.be)