Web Development · WDC-64

Nuxt Advanced

Nuxt Advanced is a follow-on course to Nuxt Basic using Nuxt 4, covering scalable project structure, client and server error handling, multilingual sites with i18n, server APIs with Nitro, Prisma with PostgreSQL, Pinia, session and OAuth login, testing and deployment. It suits developers who already have Vue.js and Nuxt experience.

Updated
From 8,550 THB / person 9,500 −10% excl. VAT 7% · group rates available
PDFDownload the course outline
  • Duration18 hours · 3 days
  • FormatOnsite / live online
  • Next roundOn request
  • CertificateIncluded

Course overview

Once a Nuxt site grows to many pages and languages, with a database and user accounts, the challenge shifts from making pages render to structuring the project so a team can maintain it, handling errors systematically, protecting data on the server and keeping the site fast as traffic grows. Nuxt provides the tools for all of this in a single project.

This course builds on Nuxt Basic for Beginners with current Nuxt 4, covering large-project structure, error handling, multilingual sites, server APIs with Nitro, a PostgreSQL database through Prisma 7, state with Pinia, session and OAuth login, testing and caching, and finishes with a workshop and deployment. (3 days, 6 hours per day, 18 hours in total, Advanced level.)

What you’ll gain

  • Structure Nuxt 4 projects to scale with layers and TypeScript
  • Handle client-side and server-side errors systematically
  • Build multilingual sites with Nuxt i18n, including per-language SEO
  • Write server APIs that validate input and connect to PostgreSQL with Prisma 7
  • Manage state with Pinia and build session and OAuth login
  • Test, optimise and deploy a Nuxt app to the cloud

Who this course is for

  • Developers already building sites with Nuxt or Vue who need to build larger systems
  • Full-stack developers who want APIs, databases and user accounts in Nuxt
  • Teams maintaining Nuxt 3 projects who need to move to Nuxt 4
  • Graduates of Nuxt Basic for Beginners or people with similar experience

Prerequisites

  • Confident HTML, CSS and JavaScript
  • Vue.js with script setup
  • Some experience building sites with Nuxt, including routing, layouts and useFetch
  • A basic understanding of HTTP, REST APIs and relational databases
  • A laptop that can run the Node.js LTS release, VS Code and Docker Desktop

Curriculum

Course Details

This course is the 2026 edition of Nuxt 3 Advanced. It runs for 3 days, 6 hours per day (18 hours in total, 09:00-16:00), as lectures with labs. Advanced level. Because Nuxt 3 has reached end of life, this edition moves to Nuxt 4. It keeps the original core of large-project structure, error handling, utilities, multilingual sites with i18n, server APIs, data fetching, Prisma with PostgreSQL, Pinia, authentication and deployment, and adds Nuxt layers, lazy hydration, input validation with Zod, testing with Vitest and caching. Login uses nuxt-auth-utils for both session and OAuth sign-in instead of relying on Supabase Auth. Learners take home a lab guide and the source code of a multilingual online store.

Day 1 Structure, Errors, Performance and Languages

Section 1: Lab: Structuring Large Nuxt 4 Projects

  • The app, server and shared directories and what changed from Nuxt 3
  • Split the system with Nuxt layers and extends
  • Strict TypeScript, nuxt typecheck and @nuxt/eslint
  • Lab: set up an online store project organised by feature

Section 2: Lab: Custom Layouts, Composables and UI

  • Custom layouts and layouts that switch by user role
  • Extract logic into clearly typed composables
  • Nuxt UI with Tailwind CSS and a brand theme
  • Fonts and icons with Nuxt Fonts and Nuxt Icon
  • Lab: store and admin pages with separate layouts

Section 3: Handling Client and Server Errors

  • A global error page with error.vue, useError and clearError
  • Throw errors with createError, including status, statusText and data
  • Errors in part of a page with NuxtErrorBoundary
  • Log server errors with Nitro plugins and hooks
  • Lab: a 404 page and recoverable error cards

Section 4: Utilities and Performance

  • Optimise images with NuxtImg and modern file formats
  • useState and composables from VueUse
  • Lazy components and lazy hydration such as hydrate-on-visible
  • Force client-side rendering for part of a page with ClientOnly
  • Lab: a faster home page measured with Lighthouse

Section 5: Lab: Multilingual Sites with Nuxt i18n

  • Install @nuxtjs/i18n with translation files in i18n/locales
  • URL strategies such as prefix_except_default and a language switcher
  • Named formatting, pluralisation, and number and date formats
  • useLocalePath and per-language SEO with hreflang
  • Lab: an online store in Thai and English
Day 2 Server APIs, Database and State

Section 6: Lab: Building APIs with Nitro

  • Server routes, API routes and catch-all routes
  • Server middleware and shared server utilities
  • Validate input with readValidatedBody and Zod
  • Types shared by pages and APIs in the shared directory
  • Lab: a product API tested with a REST client

Section 7: Lab: Data Fetching and HTTP Requests

  • Read path and query parameters on the server
  • useFetch and useAsyncData with key, lazy, watch and transform
  • A custom $fetch with headers and interceptors
  • Handle API errors and show loading states to users
  • Lab: a product list with search, filters and pagination

Section 8: Lab: Prisma 7 with PostgreSQL

  • Run PostgreSQL with Docker or a cloud database
  • prisma.config.ts, schema.prisma and the prisma-client generator
  • The PostgreSQL driver adapter and PrismaClient in server/utils
  • Migrations, relations and seed data
  • Lab: product, category and order models

Section 9: Lab: CRUD and Transactions

  • GET, POST, PUT and DELETE APIs using Prisma
  • Pagination, search and selecting only the fields you need
  • Transactions for work that must succeed together
  • Turn database errors into safe messages
  • Lab: an order system that updates stock in one step

Section 10: Lab: State Management with Pinia

  • When useState is enough and when to use Pinia
  • Install @pinia/nuxt and write setup stores
  • SSR-safe state and skipHydrate
  • Inspect state with Vue DevTools
  • Lab: a cart store connected to the API
Day 3 Authentication, Testing, Caching and Deployment

Section 11: Lab: Session Authentication with nuxt-auth-utils

  • Install the module and set NUXT_SESSION_PASSWORD
  • Sign-up and login with hashPassword and verifyPassword
  • setUserSession and useUserSession in pages
  • Protect APIs with requireUserSession and log out
  • Lab: session-based member accounts for the store

Section 12: Lab: OAuth Login and Middleware

  • Create an OAuth client in Google Cloud and set the callback URL
  • Sign in with Google through defineOAuthGoogleEventHandler
  • Inline, named and global route middleware
  • Role-based access in both pages and APIs
  • How this approach compares with Supabase Auth

Section 13: Lab: Testing Nuxt Apps

  • Install Vitest and @nuxt/test-utils
  • Unit test composables and utilities
  • Test components with mountSuspended
  • Test server APIs with mock data
  • Lab: a test suite for the cart and order API

Section 14: Caching and Hybrid Rendering

  • Set the rendering mode per route with routeRules
  • Prerendering, SWR and ISR for pages that rarely change
  • Cache API results with defineCachedEventHandler
  • Lab: SWR product pages and a cached API

Section 15: Workshop: Deploying a Full-Stack System

  • Handle environment variables and runtimeConfig safely
  • Build and choose the Nitro preset for your provider
  • Deploy to Vercel, Netlify or Render with a cloud database
  • A security and performance checklist before launch
  • Workshop: a working multilingual store with login

Schedule & training options

For individuals — public rounds

No public rounds are open right now. Join the waiting list and we will contact you first when the next round opens, or ask us on LINE. Or call 02-570-8449 or 088-807-9770

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

How do you build an API with Nuxt?

Nuxt uses Nitro as its built-in server. Create a file in server/api that exports a defineEventHandler and you get an endpoint named after the file, so server/api/products.post.ts becomes POST /api/products. Read and validate the body with readValidatedBody and Zod, return errors with createError, keep shared code such as PrismaClient in server/utils, and put types used by both pages and APIs in the shared directory.

How do you handle errors in Nuxt on both client and server?

On the server, use createError with status and statusText to return meaningful errors. In the app, fatal errors show the error.vue page, which reads the error with useError and resets it with clearError. Wrap parts of a page that may fail in NuxtErrorBoundary so only that part shows a message instead of breaking the whole page, and log server errors through a Nitro plugin so you can review them later.

What are the steps to build a multilingual site with Nuxt i18n?

Install the @nuxtjs/i18n module, configure locales in nuxt.config.ts and add a translation file per language in i18n/locales. Choose a URL strategy such as prefix_except_default so the main language has no prefix, show text with $t or useI18n, build language-aware links with useLocalePath, and set language and baseUrl so the module adds hreflang tags for per-language SEO.

Why does this course use Prisma 7 rather than Prisma 8?

When this course was updated, Prisma ORM 7 was the generally available release, while Prisma 8 was still a release candidate and the latest tag on npm could point to it. The course therefore pins version 7 and uses current Prisma 7 practice: prisma.config.ts, the prisma-client generator and the PostgreSQL driver adapter. If a newer version is released, the instructor explains the differences as they stand on the training day.

Who is the Nuxt Advanced course for, and what should I know beforehand?

It suits developers already using Nuxt or Vue who need to build larger systems, full-stack developers who want APIs, databases and user accounts in Nuxt, and teams moving projects from Nuxt 3 to Nuxt 4. You should write Vue with script setup, have used Nuxt for routing, layouts and useFetch, and understand REST APIs and databases at a basic level. If you are new to Nuxt, start with Nuxt Basic for Beginners.

What can I do after completing Nuxt Advanced?

You can structure Nuxt 4 projects a team can maintain, handle errors systematically, build SEO-friendly multilingual sites, write server APIs that validate input, connect to PostgreSQL with Prisma, manage state with Pinia, build session and OAuth login, write test suites, use caching to speed up the site and deploy a full-stack system to the cloud yourself.