Overview

A full-featured Nuxt 4 SaaS starter with auth, payments, email, and AI wired in.

The Nuxt template is a full-featured SaaS starter built on Nuxt 4, Vue 3, and the Nitro server. It ships with authentication, a PostgreSQL database, payments, transactional email, internationalized content, and AI features already wired together so you can focus on your product instead of plumbing.

Auth, database, email, and content/i18n are integrated end to end. A few surfaces — the newsletter and parts of the dashboard — are working examples or UI starters you'll adapt to your product before launch. The feature status table below spells out each one.

Tech stack

ConcernLibrary
FrameworkNuxt 4, Vue 3, Nitro server
LanguageTypeScript
AuthBetter Auth (email/password + GitHub/Google OAuth, admin plugin)
DatabasePostgreSQL + Drizzle ORM (node-postgres)
PaymentsMulti-provider factory — ZPay (default) + Creem
EmailResend + Vue Email (@vue-email)
i18n@nuxtjs/i18n (prefix_except_default)
Docs & blogNuxt Content v3 (Markdown collections)
AI chatVercel AI SDK (@ai-sdk/vue) via Vercel AI Gateway
AI mediaReplicate (image / video / audio)
StylingTailwind CSS v4 + shadcn-vue (new-york)
Dark mode@nuxtjs/color-mode (class-based)
SEO@nuxtjs/sitemap + @nuxtjs/robots with the shared site config
Icons & images@nuxt/icon (Lucide) + @nuxt/image
ToolingESLint, pnpm

Feature status

Throughout these docs, features are labelled consistently:

  • Integrated — connected end to end in the template.
  • Example — a working reference implementation that still needs product-specific policy, limits, or data.
  • UI starter — a designed surface backed by mock/static data or unfinished actions.
AreaStatusScope
AuthenticationIntegratedEmail/password, required verification, reset, GitHub/Google OAuth, account linking, admin plugin
Route protectionIntegratedClient app/middleware/{auth,admin}.ts guards redirect/403; the API handlers do the authoritative checks (server/middleware/auth.ts only attaches context)
DatabaseIntegratednode-postgres + Drizzle, auth and payment schemas (Postgres-only; the Prisma stub was removed)
PaymentsExampleMulti-provider factory (ZPay default + Creem), login-required create route, signed webhooks for selected events
Email / contactIntegratedResend delivery for contact, verification, and reset — all routed through Vue Email templates via sendEmail
NewsletterUI startersubscribe-newsletter.vue template only; no subscription route or persistence
AI chatExampleVercel AI Gateway streaming (gpt-5.2); auth-gated via requireAiAuth + Zod; no quotas/moderation/cost caps yet
AI mediaExampleReplicate image/video/audio create + polling; auth-gated via requireAiAuth + Zod; no quotas/cost caps yet
Content & i18nIntegratedPer-locale Nuxt Content collections and locale routing are wired; Chinese docs/blog content is not included yet
Dashboard / adminUI starterStatic dashboard data and placeholder order/billing/security pages; admin users, subscription read, and profile update are connected
StorageExampleAuthenticated, size-limited image upload to local public/uploads; declared MIME is trusted, so add signature validation and durable storage

Application surfaces

  • Marketing — landing page, blog, legal, contact, and about pages under the (marketing) route group.
  • Authentication — login, register, forgot/reset password under app/pages/auth/, using the auth layout.
  • Dashboard — authenticated dashboard, account, settings, and admin pages under (dashboard), using the user layout.
  • Content — Nuxt Content–powered docs (you are reading them now), blog, and legal collections, split per locale.
  • Payments — pricing CTAs, a ZPay/Creem checkout flow, and payment/ subscription tables.
  • Email — verification, password reset, and contact delivery via Resend + Vue Email.
  • AI — a streaming chat assistant plus image, video, and audio generation pages.

Start here

Follow this path for the fastest route from clone to a running, deployable app:

On this page