Skip to content

DevBlog

Build DevBlog, a headless CMS and public blog, from an empty repo to a running Docker Compose stack. Along the way you'll work with Node/NestJS, MongoDB, code-first GraphQL, and Next.js (App Router) with SSR/ISR.

Introduction

Why DevBlog, how the course is structured, and what you’ll have built by the end. Open →

Setup & Tooling

Install Node, Docker, and the rest of the toolchain, and scaffold the project. Open →

Data Modeling

Model posts, tags, comments, and users in MongoDB with Mongoose schemas. Open →

Backend Foundations

Stand up the NestJS server, modules, config, and error handling. Open →

Authentication

Add password hashing, login, and JWT sessions so the admin belongs to real users. Open →

GraphQL API

Serve posts and tags through a code-first GraphQL API with resolvers and DTOs. Open →

Content Workflow

Turn Markdown into published posts with slugs, validation, and draft states. Open →

Comments

Let readers comment, and give the admin moderation over what goes live. Open →

Frontend Foundations

Set up the Next.js App Router, layout, and GraphQL data layer for the blog. Open →

Public Blog

Render the home list, post pages, and tag pages with SSR and ISR. Open →

Admin Dashboard

Build the authenticated admin UI to write, publish, and moderate content. Open →

Testing

Cover the backend and frontend with automated tests you can trust. Open →

Docker & Compose

Containerize every service and bring the whole stack up with one command. Open →

Wrap-up

Review what you built and where to take DevBlog next. Open →

This course pins its examples to a specific, verified toolchain rather than “whatever npm install resolves today”: Node 24, NestJS 11+ (code-first @nestjs/graphql 13+ with the Apollo driver, @nestjs/mongoose 11+, @nestjs/config 4+ with Standard Schema validation via Zod), Mongoose 8+ against MongoDB 8, GraphQL 16, Next.js 16 (App Router, React 19), and Jest 30 on the backend with Vitest 3 on the frontend. nest new and create-next-app install newer majors as the ecosystem moves — this course’s setup lessons call out the one deliberate deviation from a fresh scaffold’s defaults (switching the API from ESM back to CommonJS) and pin dev-only versions explicitly where a scaffold no longer includes them by default (Jest, since current nest new ships Vitest instead).

Real, copy-pasteable code

Every snippet is real, runnable code you can copy straight into your project — no pseudo-code.

Adapts the Learn Hub courses

Built on patterns from the Learn Hub NestJS and Next.js courses, applied to one real project end to end.

Bilingual EN / ไทย

Available in English and ไทย — switch anytime from the top bar.

You build it by following along

This is a build-along guide: you write the code yourself, step by step, not just read about it.