๐ 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
๐ฆ Recommended VS Code Extensions
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:
- Toledo forum
- Email to instructors
- Pull request (if course is on GitHub)
## ๐ 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)