Web Development · WDC-114

Full-Stack Web Application with Next.js 16 and Prisma

Full-Stack Web Application with Next.js 16 and Prisma is a course in full-stack development with the App Router, Server Components, Route Handlers and Server Actions, alongside Prisma ORM 7 on PostgreSQL and MariaDB, plus authentication and testing. It suits React developers moving to full-stack work, backend developers and tech leads setting project standards.

Updated
From 8,550 THB / person 9,500 −10% excl. VAT 7% · group rates available
PDFDownload the course outline
  • Duration30 hours · 5 days
  • FormatOnsite / live online
  • Next round14–18 Dec 26
  • CertificateIncluded

Course overview

Next.js has become the standard framework for building enterprise React web applications, and in 2026 it reached version 16 - its biggest change since the arrival of the App Router. Turbopack is now the default bundler for both development and build, Cache Components reshape the entire caching model into something explicit and controllable, middleware.ts becomes proxy.ts, and all Request APIs are now asynchronous. At the same time Prisma ORM reached version 7, dropping the Rust query engine in favor of a WebAssembly query compiler, requiring a driver adapter at all times, and moving configuration into prisma.config.ts. This course is designed for developers who already know React but have never used Next.js.

Day 1 builds a solid foundation of the App Router and React Server Components; the course then dives into its core - designing and building the API layer that connects to the database with Prisma: Route Handlers, Server Actions, schema design, migrations, transactions, performance tuning, and a real comparison between PostgreSQL and MariaDB. It finishes with production-grade topics: authentication and RBAC, testing with Vitest and Playwright, Cache Components and Partial Prerendering, Docker deployment and CI/CD, and a capstone project that builds a real system end to end. (Live online training via Zoom, 5 days, 6 hours per day, 30 hours in total, based on Next.js 16.3 and Prisma ORM 7.9.)

What you’ll gain

  • Understand the architecture of Next.js 16, the difference between App Router and Pages Router, and React Server Components, Client Components and Streaming
  • Design routing, layouts, loading states and error handling with the App Router
  • Build the API layer with Route Handlers and Server Actions correctly and securely
  • Design database schemas with Prisma Schema Language and use Prisma ORM 7 with driver adapters for PostgreSQL and MariaDB
  • Manage the database structure with Prisma Migrate across development and production, and write complex queries with relations, aggregation, transactions and raw SQL
  • Understand the practical differences between PostgreSQL and MariaDB through Prisma with their caveats, and tune performance, fix N+1 and manage the connection pool
  • Build secure authentication and RBAC authorization, and write tests covering unit, integration and E2E with Vitest and Playwright
  • Use the Next.js 16 caching system - Cache Components, use cache, cacheTag and Partial Prerendering - and deploy self-hosted with Docker and a CI/CD pipeline
  • Combine everything into a complete real-world system through a capstone project

Who this course is for

  • Frontend developers with React experience who want to move into full-stack development
  • Full-stack developers who want to update their Next.js knowledge to version 16 and Prisma 7
  • Backend developers who want to understand API layer design on Next.js
  • Technical leads and solution architects who want to set a standard Next.js project structure in their organization
  • Students and enthusiasts with a React background who want to build production-grade web applications

Prerequisites

  • Prior React development experience (components, props, state, hooks) - important
  • Modern JavaScript (ES2020+) such as async/await, destructuring, modules and array methods, and working-level TypeScript (types, interfaces, basic generics)
  • Understanding of HTTP, REST API, JSON and relational databases with basic SQL (SELECT, INSERT, UPDATE, DELETE, JOIN)
  • Basic use of the command line, Git and npm/pnpm (prior Docker experience helps on Day 5 but is not required)

Curriculum

Course Details

A live online hands-on workshop via Zoom, 5 days, 6 hours per day (30 hours in total), with lecture and practice throughout. Learners build the same continuous project across all five days. The content is based on Next.js 16.3 and Prisma ORM 7.9, the latest stable versions as of August 2026. Prior React and TypeScript experience is expected.

Day 1 Next.js 16 Fundamentals, App Router and React Server Components

Section 1: Getting to Know Next.js and the Version 16 Overview

  • What Next.js is, the problems it solves for React developers, and the difference between CSR, SSR, SSG, ISR and Streaming SSR
  • The evolution from Pages Router to App Router and key changes in v16: Turbopack by default, Cache Components, proxy.ts, async Request APIs
  • System requirements and what was removed in Next.js 16 (AMP, next lint, serverRuntimeConfig, sync params) and the impact on existing projects

Section 2: Creating a Project and Understanding Its Structure

  • Creating a project with create-next-app, the standard directory structure, and configuring TypeScript, path aliases and ESLint Flat Config
  • Turbopack and its speed difference, and using Next.js DevTools
  • Workshop: create the nextjs-training project used throughout the course

Section 3: App Router Routing

  • File-system routing and special files page.tsx, layout.tsx, template.tsx, with nested and dynamic routes
  • params and searchParams are now Promises in Next.js 16 (must await), plus route groups and private folders
  • Parallel Routes, Intercepting Routes and navigation with Link, useRouter, redirect() and notFound()

Section 4: React Server Components and Client Components

  • The RSC concept and why it changes how you think; Server Components by default and their bundle-size and security benefits
  • When to use use client, the component boundary, and passing a Server Component as children into a Client Component
  • Key limitations and using server-only and client-only to prevent code leaking to the wrong side

Section 5: Loading, Error, Streaming and Metadata

  • loading.tsx, Suspense for component-level streaming, and error.tsx, global-error.tsx, not-found.tsx
  • Static and dynamic Metadata API for SEO, plus font and image handling with next/font and next/image
  • Workshop: build the page structure with layouts, loading, error and metadata at every level
Day 2 Data Fetching, Route Handlers, Server Actions and First Steps with Prisma + PostgreSQL

Section 6: Data Fetching in the App Router

  • Fetching in Server Components with async/await and the behavior of fetch in v16 with its changed caching defaults
  • Request memoization with React.cache() and sequential vs parallel data fetching
  • Client-side fetching when needed and choosing SWR or TanStack Query

Section 7: Route Handlers - Building a REST API in Next.js

  • The route.ts file and exporting by HTTP method, plus NextRequest and NextResponse
  • Reading query strings, path params (now Promises), request body, headers, cookies and Route Segment Config
  • Node.js vs Edge runtime, streaming responses and correct practices

Section 8: Server Actions and Writing Data

  • The Server Actions concept and use server, using them with forms via progressive enhancement, plus useActionState, useFormStatus, useOptimistic
  • Revalidation with revalidatePath and revalidateTag
  • Security: a Server Action is a public endpoint and must check permissions internally every time, and when to use a Server Action vs a Route Handler

Section 9: Getting to Know Prisma ORM 7 and Its Major Changes

  • The parts of Prisma and what changed in Prisma 7: dropping the Rust engine for a WebAssembly query compiler
  • The new prisma-client generator and the now-mandatory driver adapter (you can no longer call new PrismaClient() alone)
  • The prisma.config.ts file, moving url out of schema.prisma, and new requirements Node.js 20.19+, TypeScript 5.4+

Section 10: Installing PostgreSQL and Connecting Prisma for the First Time

  • Preparing PostgreSQL 17 with Docker Compose, installing Prisma and @prisma/adapter-pg, and configuring prisma.config.ts correctly
  • The singleton PrismaClient pattern for Next.js and the postinstall: prisma generate setup
  • Workshop: connect the project to PostgreSQL, create the first table and build a full CRUD API with Route Handlers and Server Actions
Day 3 Deep Prisma - Schema Design, Migration, Query, Transaction and MariaDB Comparison

Section 11: Designing a Schema with Prisma Schema Language

  • The multi-file schema.prisma structure, scalar types and common attributes (@id, @unique, @default, @@index)
  • Default functions autoincrement(), uuid(7), cuid(2), ulid(), noting that uuid()/cuid() run only on the client side
  • PostgreSQL native types (@db.Uuid, @db.JsonB, @db.Timestamptz) and designing indexes for query patterns

Section 12: Relations Between Tables

  • One-to-one, one-to-many, many-to-many (implicit and explicit join tables) and self-relations
  • onDelete and onUpdate (Cascade, Restrict, SetNull), composite keys and relationMode (foreignKeys vs prisma)
  • Workshop: design a complete example schema (User, Role, Product, Category, Order, OrderItem, Payment)

Section 13: Prisma Migrate Across the Development Lifecycle

  • The difference between migrate dev, migrate deploy, db push and the shadow database
  • Handling drift (migrate status, resolve, diff), baselining and seed data with prisma db seed
  • Common error codes (P3005, P3006, P3009, P3014, P3018) and safe production migration practices

Section 14: Deep Prisma Client Queries

  • Full CRUD and batch operations, advanced filtering (AND, OR, NOT, in, contains, mode: insensitive)
  • Loading relations (include, select, nested write), pagination (offset vs cursor) and aggregation (count, groupBy, _sum)
  • JSON fields, full-text search, raw queries ($queryRaw, $executeRaw), preventing SQL injection and TypedSQL (Preview)

Section 15: Transactions, Performance and the Connection Pool

  • Sequential vs interactive transactions, the maxWait, timeout and isolation level options, and handling write conflicts (P2034)
  • The N+1 problem in Prisma and how to detect it, relationLoadStrategy (Preview) and enabling query logging to see the real SQL
  • The connection pool in Prisma 7 (set at the driver adapter), PgBouncer/Supavisor, and Prisma Client Extensions replacing $use

Section 16: MariaDB with Prisma - Real Usage and Caveats

  • MariaDB uses the same mysql provider as MySQL, installing @prisma/adapter-mariadb, and a type-mapping comparison with PostgreSQL
  • Features unavailable on MariaDB (scalar list, multiSchema, mode: insensitive, createManyAndReturn) and its advantages (full-text index)
  • Key caveats: open Prisma 7 issues with MariaDB around JSON, migration drift, timezone and collation, plus a workshop moving the schema to MariaDB
Day 4 Production-Grade API - Validation, Security, Authentication, RBAC and Testing

Section 17: Systematic Validation and Error Handling

  • Using Zod to validate input in both Route Handlers and Server Actions, with a schema shared between the client form and the server
  • Designing a standard API response shape and handling Prisma errors (P2002, P2003, P2025)
  • A centralized error handler, logging, and instrumentation.ts with onRequestError

Section 18: Data Access Layer and Data Security

  • The Data Access Layer (DAL) concept, separating business logic from routes, and DTOs to control what data is sent out
  • Using server-only to prevent secret leaks and handling environment variables safely
  • Common vulnerabilities and how to prevent them: Mass Assignment, IDOR and over-exposure of data

Section 19: Authentication with Better Auth

  • An overview of session- and token-based authentication, installing and configuring Better Auth and connecting the Prisma adapter
  • Email & password, social providers (Google, GitHub), the nextCookies() plugin and reading sessions with auth.api.getSession()
  • Configuring secure cookies, rate limiting and common plugins (2FA, Passkey, Magic Link)

Section 20: Authorization and Role-Based Access Control (RBAC)

  • Designing role and permission schemas with Prisma and the Better Auth Access Control API
  • proxy.ts replacing middleware.ts in Next.js 16 and route protection (runs on the Node.js runtime only)
  • Workshop: add login and 3-tier RBAC (Admin, Staff, Customer) to the example system

Section 21: File Upload and Background Work

  • Receiving file uploads via Server Actions and Route Handlers, validating type/size and storing metadata in the database
  • Storage approaches: local storage, S3-compatible storage and presigned URLs
  • Using after() for background work after the response, and approaches to background jobs and scheduled tasks

Section 22: Testing - Vitest and Playwright

  • A testing strategy (the testing pyramid), configuring Vitest with Next.js, unit tests and component tests with Testing Library
  • Integration tests for APIs hitting a real database, using a test database and mocking the Prisma Client (and when not to)
  • E2E testing with Playwright, managing authentication state and running tests automatically in CI
Day 5 Caching, Performance, Deployment, CI/CD and the Capstone Project

Section 23: The Next.js 16 Caching System and Cache Components

  • An overview of the caching layers and Cache Components (cacheComponents: true), the Dynamic by Default concept and the use cache directive
  • use cache: private/remote, setting lifetime with cacheLife, tagging with cacheTag and invalidation with revalidateTag, updateTag, refresh
  • The limitations inside use cache and patterns for reducing database load by caching Prisma query results

Section 24: Partial Prerendering and Performance Optimization

  • The Partial Prerendering (PPR) concept, partial prefetching and instant navigations in v16.3
  • Bundle-size analysis, dynamic import, code splitting, image optimization and the React Compiler
  • Measuring with Core Web Vitals and Lighthouse and tuning the database side with EXPLAIN and indexes

Section 25: Self-hosted Deployment with Docker

  • output: standalone and a multi-stage Dockerfile, and handling environment variables so one image serves multiple environments
  • Running prisma migrate deploy safely, a full Docker Compose stack (Next.js + PostgreSQL + reverse proxy) and Nginx
  • Multi-instance deployment, a custom cache handler with Redis and an overview of the Adapter API and Vercel

Section 26: CI/CD and Post-Deployment Operations

  • Designing a pipeline with GitHub Actions: lint, type check, test, build, deploy, and handling migrations in the pipeline
  • Managing secrets, health checks, graceful shutdown, and monitoring and logging at production level
  • Planning Next.js and Prisma version upgrades systematically with codemods

Section 27: Capstone Project

  • Brief: build a complete Product & Order Management system - from schema design and migration to a REST API with validation
  • Build the UI with Server Components and Server Actions, add authentication and RBAC at every layer, and add caching with use cache
  • Write unit, integration and E2E tests, create a Dockerfile, deploy to a test environment, then present and review the code together

Section 28: Summary and Next Steps

  • A summary of the architecture across the five days and a pre-production checklist
  • Where to go next: Monorepo (Turborepo), tRPC, GraphQL, microservices, and on the database side read replicas, sharding and Redis
  • Keeping up with changes in Next.js and Prisma, plus Q&A and project-specific guidance

Schedule & training options

For individuals — public rounds

14–18December
Classroom14–18 Dec 26
18 seats left
4–8January
Classroom4–8 Jan 27
20 seats left
22–26March
Classroom22–26 Mar 27
20 seats left
24–28May
Classroom24–28 May 27
20 seats left
12–16July
Classroom12–16 Jul 27
20 seats left
20–24September
Classroom20–24 Sep 27
20 seats left
1–5November
Classroom1–5 Nov 27
20 seats left

For organisations — in-house / private

  • Tailor the content to your team’s tools and projects
  • Your dates, at your office or live online
  • Quotation with tax ID for procurement
Corporate training quote

Instructors

Frequently asked questions

What is the difference between Server Components and Client Components in Next.js?

In the App Router every component is a Server Component by default: it runs on the server, can query the database directly and sends none of its own code to the browser, which keeps bundles small and secrets safe. A Client Component needs the use client directive at the top of the file and is used when you need state, effects or event handlers such as clicks. The usual approach is to keep most of the tree on the server and split out only the interactive parts.

How do Server Actions and Route Handlers differ, and when should you use each?

Server Actions are functions marked with use server that you call directly from forms or components, which makes them a good fit for creating, updating or deleting data from your own app's pages. Route Handlers are route.ts files that expose HTTP endpoints such as GET and POST, suited to APIs consumed by mobile apps, external systems or webhooks. Both run on the server, so each must check the user's permissions and validate incoming data.

What are the steps to start using Prisma with a PostgreSQL database?

Install the Prisma packages and run prisma init to create the schema file and set DATABASE_URL. Define your models and relations in schema.prisma, then run prisma migrate dev to create the tables and generate Prisma Client. In Prisma ORM 7 you also install the driver adapter for your database, such as the PostgreSQL adapter, and pass it to PrismaClient before running queries.

Who is the Full-Stack Web Application with Next.js 16 and Prisma course for, and what should I know beforehand?

It suits frontend developers who already use React and want to work full-stack, developers updating to Next.js 16 and Prisma 7, backend developers and tech leads setting project standards. You need React, modern JavaScript and working TypeScript, a grasp of HTTP, REST and basic SQL, and the ability to use the command line, Git and npm. Docker experience helps but is not required.

What will I be able to do after the Full-Stack Web Application with Next.js 16 and Prisma course?

You will be able to design routing, layouts and error handling with the App Router, build APIs with Route Handlers and Server Actions, model schemas and manage migrations with Prisma on PostgreSQL or MariaDB, add login and role-based access, write tests with Vitest and Playwright, use the Next.js 16 caching features, and deploy with Docker and CI/CD. Participants who complete the training receive a Certificate of Completion with its own number, which can be verified online.

Can the Next.js 16 and Prisma course be run in-house for our team?

Yes. It can be run in-house for your development team, with examples adapted to your own work, such as the database your team already uses or the standard project structure you plan to adopt. You can request a quotation from this page, or contact us on LINE @itgenius or by phone on 02-570-8449.