Courses / Node.js Backend / NODE-301

Server-Side Rendering with Express, EJS & Handlebars

Build full MVC web applications with server-rendered HTML using EJS, Handlebars, and Express.js

Before React and SPAs dominated the frontend, server-side rendering powered most of the web. It still powers a huge amount of production sites today, and is experiencing a renaissance through frameworks like Next.js (SSR) and Remix. This course teaches you SSR from first principles using Express.js, EJS, and Handlebars — building real MVC web applications with authentication, dynamic views, and database-driven content.

$99 $19 81% OFF
2.2 CEU Credits
22 Study Hours (3 Weeks)
Intermediate
5 Modules
22 Hands-on Labs
Course Tuition
$99 $19 81% OFF
CEU Credits 2.2 CEUs
Study Workload Breakdown (22 Hours):
Architectural Reading & Theory: 7.1 hrs
Hands-on Labs & Coding Drills: 15.6 hrs
Live Mentorship Cohort $150

Prefer live accountability? Join a guided 4–6 week cohort with weekly live faculty calls, 1-on-1 code reviews & capstone grading. Subsidized by Savadub Limited CSR.

Join Cohort ($150)
Subsidized Tuition: This course is made accessible at $19 through the Corporate Social Responsibility (CSR) endowment from Savadub Limited and partner sponsors.

Course Prerequisites

Part of Academy Track:
Node.js Backend & Server-Side Engineering Stage 4 of 5 Courses in this track progression.
Access Lab Materials on LMS
Competency Matrix

What You Will Master

Understand the full request-response MVC cycle in a server-rendered Express application
Build dynamic HTML views with EJS — embedding JavaScript logic directly in templates
Design logic-less, reusable component templates with Handlebars and partials
Implement session-based authentication with express-session and bcrypt
Structure a complete MVC application: Models, Views, Controllers, routes, and middleware
Serve static assets, handle form submissions, flash messages, and redirects
Detailed Syllabus

Curriculum Modules (5 Modules)

Explore the structured module breakdown, lesson outcomes, and practical lab exercises.

01

Module 1: SSR Fundamentals & Express View Engines

4 Lessons • ~3.5 Study Hours (0.35 CEUs)
~3.5 hrs 0.35 CEUs

Module 1: SSR Fundamentals & Express View Engines. Understand the SSR vs SPA trade-offs, where server-rendered HTML still wins, and how EJS and Handlebars fit into the Node.js ecosystem.. Trace a complete SSR request from browser to Node.js Express server, template engine rendering, and HTML response — understanding what makes it different from a JSON REST API.

00
Course Introduction — Server-Side Rendering in the Modern Web

Understand the SSR vs SPA trade-offs, where server-rendered HTML still wins, and how EJS and Handlebars fit into the Node.js ecosystem.

~40 min Lab Exercise
01
How SSR Works — The Request-Response-HTML Cycle

Trace a complete SSR request from browser to Node.js Express server, template engine rendering, and HTML response — understanding what makes it different from a JSON REST API.

~55 min Lab Exercise
02
Configuring Express View Engines

Set up Express with a view engine (EJS or Handlebars), configure the views directory, pass dynamic data with res.render(), and serve static files with express.static.

~55 min Lab Exercise
03
Layouts, Partials & Template Inheritance

Avoid duplicating HTML across pages by implementing layout templates, shared partials (header, footer, nav), and template inheritance patterns.

~60 min Lab Exercise
Automated Code Evaluations & Lab Grading in LMS Launch in LMS Playground

Module 2: EJS: Embedded JavaScript Templates. Learn all five EJS tag types: <%= output %>, <% scriptlet %>, <%- unescaped %>, <%# comment %>, and <%_ whitespace-consuming variants.. Render dynamic lists with forEach loops, conditionally show elements with if/else, iterate over objects, and implement pagination controls in EJS templates.

01
EJS Syntax — Tags, Expressions & Scriptlets

Learn all five EJS tag types: <%= output %>, <% scriptlet %>, <%- unescaped %>, <%# comment %>, and <%_ whitespace-consuming variants.

~55 min Lab Exercise
02
Loops, Conditionals & Iteration in EJS

Render dynamic lists with forEach loops, conditionally show elements with if/else, iterate over objects, and implement pagination controls in EJS templates.

~60 min Lab Exercise
03
EJS Includes & Layouts with express-ejs-layouts

Modularise EJS templates using <%- include() %> for partials and implement full layout inheritance with the express-ejs-layouts package.

~60 min Lab Exercise
04
Form Handling & POST Data with EJS

Build HTML forms in EJS, handle POST submissions with express.urlencoded, validate input, display validation errors inline in the form template.

~60 min Lab Exercise
05
EJS Project: Build a Server-Rendered Blog Engine

Apply all EJS concepts in a mini-project: a blog engine with an article list, individual article view, create/edit forms, and a shared layout.

~70 min Lab Exercise
Automated Code Evaluations & Lab Grading in LMS Launch in LMS Playground

Module 3: Handlebars: Logic-less Templates. Understand why Handlebars enforces logic-less templates, learn the {{}} Mustache syntax, HTML escaping, and triple-stash {{{unescaped}}} output.. Master Handlebars' built-in block helpers: #if, #unless, #each (with @index, @key), #with scope binding, and the {{else}} fallback block.

01
Handlebars Philosophy & Mustache Syntax

Understand why Handlebars enforces logic-less templates, learn the {{}} Mustache syntax, HTML escaping, and triple-stash {{{unescaped}}} output.

~55 min Lab Exercise
02
Built-in Helpers: #if, #unless, #each, #with

Master Handlebars' built-in block helpers: #if, #unless, #each (with @index, @key), #with scope binding, and the {{else}} fallback block.

~60 min Lab Exercise
03
Partials & Layouts with express-handlebars

Register and use Handlebars partials for shared components, implement multi-level layouts with express-handlebars, and pass data into partials.

~60 min Lab Exercise
04
Custom Helpers — Formatting & Business Logic

Write custom Handlebars helpers for date formatting, currency display, string manipulation, and conditional logic — keeping templates clean and logic in helpers.

~60 min Lab Exercise
05
Handlebars Project: Product Catalogue with Filtering

Build a server-rendered product catalogue with category filtering, product detail pages, and a custom currency formatting helper.

~70 min Lab Exercise
Automated Code Evaluations & Lab Grading in LMS Launch in LMS Playground

Module 4: MVC Architecture & Database Integration. Implement the Model-View-Controller pattern in an Express application: route handlers delegate to controllers, controllers call models, models interact with the database, views render the result.. Integrate Mongoose (MongoDB) or Prisma (PostgreSQL) models into an MVC Express application, write CRUD controller methods, and render database results into EJS/Handlebars views.

01
The MVC Pattern in Express — Models, Views, Controllers

Implement the Model-View-Controller pattern in an Express application: route handlers delegate to controllers, controllers call models, models interact with the database, views render the result.

~65 min Lab Exercise
02
Database Models: Mongoose & Prisma in an MVC App

Integrate Mongoose (MongoDB) or Prisma (PostgreSQL) models into an MVC Express application, write CRUD controller methods, and render database results into EJS/Handlebars views.

~70 min Lab Exercise
03
Pagination, Search & Server-Side Filtering

Implement server-side pagination (page/limit query params), keyword search with database queries, and category/tag filtering — all rendered as HTML without JavaScript.

~65 min Lab Exercise
04
File Uploads in SSR Applications

Handle multipart/form-data file uploads with Multer, store files locally or to cloud storage (S3/Cloudinary), and display uploaded images in server-rendered templates.

~65 min Lab Exercise
Automated Code Evaluations & Lab Grading in LMS Launch in LMS Playground

Module 5: Authentication & Full MVC Project. Implement session-based authentication: user registration, bcrypt password hashing, login, session storage (Redis or MemoryStore), and logout flows.. Use connect-flash to pass one-time messages between redirects: success confirmations, validation errors, and authentication failure messages displayed in EJS/Handlebars templates.

01
Session-Based Authentication with express-session

Implement session-based authentication: user registration, bcrypt password hashing, login, session storage (Redis or MemoryStore), and logout flows.

~70 min Lab Exercise
02
Flash Messages & Form Feedback with connect-flash

Use connect-flash to pass one-time messages between redirects: success confirmations, validation errors, and authentication failure messages displayed in EJS/Handlebars templates.

~55 min Lab Exercise
03
Route Protection & Middleware Guards

Protect views and routes with authentication middleware, implement role-based view rendering, redirect unauthenticated users, and prevent access to admin pages.

~60 min Lab Exercise
04
Full MVC Project: Task Manager with Auth & Dashboard

Build a complete, production-structured MVC task manager application with session auth, EJS views, MongoDB models, CRUD operations, pagination, file uploads, and a protected dashboard.

~90 min Lab Exercise
Automated Code Evaluations & Lab Grading in LMS Launch in LMS Playground