Nuxter vs Nuxt UI SaaS template
Nuxter ships the sign-in, payments, Postgres and organizations behind your pages; the Nuxt UI SaaS template gives you free MIT landing, docs and blog pages.
Checked github.com
Feature check
Built in, of 13 rows
- Nuxter: 10 of 13 rows built in.
- Nuxt UI SaaS template: 3 of 13 rows built in.
Counted from the feature check below. A row that Nuxt UI SaaS template’s own site and docs do not mention is not counted. See the rows
01The short version
Which one to pick.
Nuxter ships the server side of a SaaS: sign-in with passkeys and two-factor codes, checkout and webhooks for Stripe, Polar, Lemon Squeezy and Creem, Postgres with migrations, and organizations with roles and invitations. You start on your product's first feature with accounts, billing and teams already working. It uses Nuxt UI, like the template, and ships a test suite and a command for taking kit updates.
The template suits a developer who wants free, MIT-licensed public pages (landing, pricing, docs and a blog) and plans to choose and connect sign-in, a database and payments themselves.
Pick Nuxter if
- You need people to sign in, pay and manage a subscription from the first deploy.
- You sell to teams and need organizations, roles, invitations and seat limits checked on the server.
- You want a Postgres schema, migrations and background jobs in place before you write your first feature.
- You will support paying customers and need to find an account, view the app as that customer, grant a plan or refund a one-time purchase.
- You plan to build on the code for years and want 335 test files and one command to take later kit updates.
Nuxt UI SaaS template may suit you better if
- You need landing, pricing, docs and blog pages with no sign-in or billing behind them.
- You want free, MIT-licensed code you can publish in a public repository.
- You already have a backend, or want to pick your own auth library and payment provider.
02Feature check
Feature by feature.
What each kit ships for the things buyers ask about most. A question mark means Nuxt UI SaaS template’s own site and docs do not mention it.
- Built in
- Partly
- Not included
- Not in its docs
03Why Nuxter
Why pick Nuxter over Nuxt UI SaaS template.
What Nuxter ships on day one that Nuxt UI SaaS template’s own pages do not describe.
Sign-in, ready on day one
Email and password or magic links, passkeys, authenticator codes with recovery codes, and GitHub and Google sign-in are chosen in one config block, with password reset and email verification included. Authenticator codes and passkey sign-in are switched on by default. Sessions are database rows, so users see their devices and sign one out.
Payments from checkout to webhook
Stripe, Polar, Lemon Squeezy and Creem ship as adapters for subscriptions and one-time purchases, with coupon links, trials on Stripe and Polar, and the provider's hosted customer portal opened from a billing page. Every webhook is signature-checked and applied once, so a delivery the provider repeats changes nothing. A failed renewal gets a grace period, 14 days by default, with a banner, so a customer whose card expires keeps access while they fix it.
A database with its migrations
Postgres through Drizzle, hosted by a provider you choose and reached through Cloudflare Hyperdrive, ships with 24 tables, seed scripts and separate migration chains for the kit and your app, so a kit update never collides with a migration you wrote. You write your first feature against a schema that already holds users, organizations and payments.
Organizations that own the billing
Every account gets an organization that holds the plan, the members and the seats, with roles built from permissions, email invitations, a member cap per plan and an audit trail. You sell to a company without designing the team model first.
Mail, jobs and files wired
Account mail goes out through Cloudflare Email Sending or Resend with fallback and queued retry, background jobs retry on Cloudflare Queues, and uploads go to R2 under rules per purpose. The queue, the bucket and the default mail sender are Cloudflare bindings declared in one file, so they run on one Cloudflare account.
Staff tools for support
Staff search customers, edit or suspend an account, grant a plan and refund a one-time purchase, and each action lands in the customer's activity log. Viewing the app as that customer, read-only, shows you what they see without asking for screenshots.
Tests and an update command
The kit ships 335 test files, 230 unit, 97 component and 8 Playwright, with about 50 covering payments.
pnpm template:updatebrings each kit update into your app as one commit you review, and the suite tells you what moved.
04Where Nuxt UI SaaS template is ahead
Where Nuxt UI SaaS template is ahead.
The trade-offs to weigh before you decide.
Free under the MIT license
The template costs nothing, and MIT lets you use, copy, modify, publish, sublicense and sell it as long as the copyright and permission notice stays in copies.
Vercel and other Nuxt hosts
Its config names no host, the README has a Deploy with Vercel button, and the Nuxt deployment docs it links cover a Node.js server, static hosting and serverless or edge platforms. Nuxter is built for Cloudflare Workers, with its queue, storage, mail and database connection declared in one file, so there is one platform to learn and set up.
Marketing pages ready to fill
The landing page has hero, feature, testimonial and call-to-action sections, the pricing page adds a logo strip and an FAQ, and a docs section with search, a blog and a changelog page ship too, all filled from Markdown and YAML files.
05Side by side
Every row, side by side.
The same nineteen rows on every comparison, so you can read two pages against each other.
06In detail
Part by part.
Stack and hosting
Nuxter is a Nuxt 4 app on Vue 3, Nuxt UI 4 and Tailwind CSS 4, written in TypeScript, and it builds into one Cloudflare Worker. Its queue, file storage, cache, mail, rate limiting, AI and database connection are bindings, services Cloudflare attaches to the Worker by name, all declared in wrangler.jsonc. You learn one platform and run one Cloudflare account, and the parts arrive wired to each other. The trade is that the app runs on Cloudflare Workers and nowhere else.
A shipped GitHub Actions workflow deploys main after CI passes. It builds, applies database migrations, then uploads the Worker, so a schema change and the code that needs it go out together. The deployment docs list the command that creates each resource.
The template is built on the same stack: on 29 September 2026 its package.json declared nuxt ^4.5.2 and @nuxt/ui ^4.11.2, the same versions Nuxter uses, so what you learn about Nuxt UI's components carries over.
The template ships no server code of its own: its repository has no server/ directory, and package.json lists no auth, database, payment or mail library. Its nuxt.config.ts sets no host and builds the pages to static HTML ahead of time, following links from the home page.
Sign-in and accounts
You choose Nuxter's sign-in methods in one block of starter.config.ts: email and password or magic links as the primary method, then passkeys, authenticator codes with recovery codes, and GitHub and Google sign-in. Password reset and email verification come with it, and a method you switch off has no route at all. The auth docs cover each one.
Sessions are rows in the database, checked on every request, so a user sees each signed-in device and can sign one out, and suspending an account takes effect at once. Users can also change their email address, download their data as JSON and delete their account, with 30 days to restore it by default.
The template ships login and signup pages, with Google and GitHub buttons. Its landing copy says they are ready for you to "connect your backend", and its package.json names no auth library. An unmerged auth branch adds email and password sign-in with Better Auth on NuxtHub; the create command delivers main. On main you choose a library and build sessions, password reset and verification mail yourself, which is the part Nuxter ships.
Organizations and permissions
In Nuxter the organization owns the plan, the members and the seats. Owners, admins and members hold roles built from named permissions, invitations go out by email with a chosen role, each plan caps how many members an organization may hold, and an audit trail records joins, removals, role changes and plan changes. An optional second level puts branches or sites under a company.
Nuxter settles the cases a team product hits early: an admin cannot make anyone an owner, the last owner cannot leave, and two people cannot take the last seat at once. Your own routes check named permissions that come from a role or from the organization's plan. When a better plan would allow the request, the route answers 402 (payment required), so your screen can offer the upgrade.
A search of the SaaS template's repository finds no code for teams. Nuxt UI publishes a separate Dashboard template, listed as working with the SaaS template, whose team switcher, members list and role select run on sample data.
Payments and billing
Nuxter's pricing page is built from the plans in starter.config.ts, and its buttons open a hosted checkout at Stripe, Polar, Lemon Squeezy or Creem, each covering subscriptions and one-time purchases. Around the checkout it handles what a subscription business meets in its first months, as the payments docs describe:
| When | Nuxter |
|---|---|
| A buyer wants to try first | Free trials set in config on Stripe and Polar, one per buyer |
| You run a promotion | A ?coupon=CODE link carries the code to checkout |
| A renewal fails | Access continues for a grace period, 14 days by default, with a banner that opens the provider's portal |
| A provider repeats a webhook | The event is signature-checked, stored once and applied once |
| A webhook never arrives | The return page asks Stripe or Polar whether the checkout was paid and grants access |
| A customer changes plan or card | The provider's hosted portal, opened from the billing page |
| Sales tax is due | Polar, Lemon Squeezy and Creem handle it as merchant of record; on Stripe you switch on Stripe Tax |
A merchant of record is the provider that sells to your customer in its own name and files the tax.
The template's pricing page shows three plan cards with a monthly and yearly toggle, a logo strip and an FAQ, read from content/2.pricing.yml. You replace the plans in that file with your own and connect the buttons to a provider, since the repository contains no payment code. The webhooks, trials and failed-renewal handling in the table above are then yours to write.
Database, jobs and files
Nuxter stores app data in Postgres through Drizzle ORM, with 24 tables and migrations in two chains, one for the kit's tables and one for yours, so a kit update never collides with a migration you wrote. You host the database at a provider you choose, such as Neon or Supabase, and the Worker reaches it through Hyperdrive, Cloudflare's connector to outside databases. pnpm dev starts an embedded Postgres, so a fresh clone runs with no database server to install.
Background jobs run on Cloudflare Queues. A job is one typed file, and a failed one retries with growing delays. After its last retry it moves to a dead letter queue, a holding queue for jobs that keep failing, where the Worker reports it. A daily cron runs cleanup tasks, and uploads go to Cloudflare R2 under rules per purpose for format, size and access, with avatar and organization photo uploads wired.
The template's one database setting belongs to Nuxt Content, which keeps the site's pages in its own SQLite store. Its package.json lists no ORM or database driver, and a search of its repository finds no jobs, queues, cron or upload code, so each is yours to pick when the product needs it.
Email and notifications
Nuxter sends mail through Cloudflare Email Sending or Resend, falls through to the next provider when one fails, and queues the mail for retry when the failure looks temporary. Nine account mails ship, built from templates compiled at build time, in English and Serbian, among them sign-in links, password reset, verification, invitations and security notices. Product and marketing mail carries a one-click unsubscribe link.
Inside the app, a notification bell and drawer read from a database table, with payment notifications already wired.
The template's package.json lists no mail provider, and its repository contains no email templates.
AI
Nuxter ships a typed server module for the model calls a product makes: text, image, speech, transcription, embeddings and video. Cloudflare Workers AI, Cloudflare's hosted models, is wired through a binding and needs no API key. In config you pick a model for each job (one for copy, one for images, and so on), swap one per deploy with an environment variable, and add another provider as one file.
The template's package.json lists no AI SDK.
Content, languages and marketing pages
Nuxter's blog posts are Markdown files per language, with tags, drafts, RSS and a generated social image for each post. A GitHub Actions workflow drafts a post with an AI model, translates it and opens a pull request for you to review. Nuxter also generates a sitemap and robots.txt and keeps private pages out of search results.
The whole app ships in English and Serbian, with a language prefix in the URL (/sr/pricing), a language switcher, translated emails and hreflang tags, which tell search engines which page is which language. Each language you add gets the same routing, switcher and hreflang tags. The template sets the page language to English and has no i18n module or locale files.
The template leads on marketing pages: its landing, pricing and docs sections come ready to fill from Markdown and YAML. Both projects are built on Nuxt UI 4 and Nuxt Content 3, and MIT lets you copy those sections into a Nuxter app as long as the template's notice stays with them.
Admin and operations
Nuxter gives staff a customers list with search and filters. From it they edit or suspend an account, view the app as that customer read-only, send a reset or verification mail, clear a sign-in lockout, grant a plan and refund a one-time purchase, and each action is written to the customer's activity log.
Nuxter rate limits its sign-in, registration, email and checkout routes, and after too many failed sign-ins it locks the caller out for 15 minutes, so a password-guessing script stops without any code from you. Every response carries a Content-Security-Policy, a header that limits where a page may load scripts from, plus the usual hardening headers. Cloudflare Turnstile, Cloudflare's bot check, guards sign-in and registration once its two keys are set. A search of the template's repository finds no rate limiting or security headers.
Nuxter's dashboard reads the database: the overview chart is drawn from real activity, and the members, billing and customers pages show live rows. The SaaS template's own pages are its public pages plus login and signup. Nuxt UI's separate Dashboard template, built from the same components, runs on sample data.
Nuxter records product analytics on the server and sends them to Cloudflare Analytics Engine, PostHog or Umami, with no vendor script or tracking cookie in the browser, and each visitor's privacy choices decide whether events are sent. A server error carries a request id that the error page shows, so a customer's screenshot leads you to the log line. Errors can be forwarded to Sentry or Better Stack, and /api/health tells an uptime monitor whether the database answers. Typed feature flags with percentage rollouts ship ready to switch on. A search of the template's repository finds no analytics, feature flags, error tracking or health check.
Tests
Nuxter ships 335 test files: 230 unit, 97 component and 8 Playwright specs. Unit tests run against an embedded Postgres with the real migrations applied, and about 50 files cover payments. The included GitHub Actions workflow runs lint, a format check, typecheck, the unit and component suites and a production build, as the testing docs explain, so a changed billing rule or a kit update shows its effects in CI.
The template's one workflow runs lint and typecheck on every push. A search of its repository finds no test files, so its test suite starts with the tests you write.
Updates
Your app keeps the kit as a git remote named template. pnpm template:update brings everything the kit changed since your last update as one commit you review, so the kit's later fixes reach an app you keep building for years. A written table marks which files are the kit's and which are yours, so you know where to put code that an update will not touch.
You start from the template by copying it: the README gives npm create nuxt@latest -- -t ui/saas, and the installation docs add GitHub's Use this template button. Both projects ship a renovate.json that extends github>nuxt/renovate-config-nuxt for dependency updates, and the template's README tells you to install the Renovate GitHub app. Neither its README nor its docs mention how to bring later template changes into a project already started from it.
Docs and AI coding agents
Nuxter's docs are public before you buy, at nuxter.app/docs: 25 pages with search. The kit ships AGENTS.md, a 330-line brief with setup commands, code standards and known traps with their causes, plus short files that point Claude Code, Cursor and GitHub Copilot to it, so all three read the same instructions.
The template's own docs are seven pages: three on installing and using it, and four on writing Markdown. Its README's Documentation link points to the Nuxt UI docs.
Nuxt UI, the component library, hosts an MCP server that coding agents can query and an llms.txt index of its components. Both serve any project built with Nuxt UI, Nuxter included. The template's repository contains no instruction files for coding agents.
Price and license
Nuxter is sold as two licenses, paid once: Individual at $249 with one seat and Team at $649 with five. Both include the same code and every update, with no subscription, and the license never expires. A seat is one person, a license covers any number of your own products, and each client you build for needs its own license. The pricing page sets out the terms.
| Nuxter | Nuxt UI SaaS template | |
|---|---|---|
| Price | $249 or $649, one-time | Free |
| Who it covers | 1 seat or 5 seats | Any person who obtains a copy |
| Your own products | Any number | No limit stated |
| Client work | One license per client | No limit stated |
| Publishing the source | Not allowed | Allowed, keeping the MIT notice |
The template's license is the standard MIT text, copyright Nuxt UI Templates, and its one condition is that the copyright and permission notice stay in copies.
Support and community
Nuxter's support is by email to Devilos LLC, the company that makes it, about the kit, a purchase or a license. The public docs, which you can read before buying, and AGENTS.md, which gives your coding agent the kit's setup, standards and known traps, cover the rest.
No support channel or response time is stated for the template. Its footer links to the general Nuxt Discord, and its repository has GitHub Issues switched on.
07Sources
Where this comes from.
Every claim about Nuxt UI SaaS template was read from its own pages on . The main ones are below, and the rest are linked where they are used. Nuxter’s side comes from its own docs and code.
- Nuxt UI: llms.txtui.nuxt.com/
llms.txt - Nuxt UI SaaS template READMEgithub.com/
nuxt-ui-templates/ saas/ blob/ main/ README.md - Nuxt UI SaaS template licensegithub.com/
nuxt-ui-templates/ saas/ blob/ main/ LICENSE - Nuxt UI SaaS template package.jsongithub.com/
nuxt-ui-templates/ saas/ blob/ main/ package.json - Nuxt UI SaaS template nuxt.config.tsgithub.com/
nuxt-ui-templates/ saas/ blob/ main/ nuxt.config.ts - Nuxt docs: deploymentnuxt.com/
docs/ getting-started/ deployment - Nuxt UI SaaS template CI workflowgithub.com/
nuxt-ui-templates/ saas/ blob/ main/ .github/ workflows/ ci.yml - Nuxt UI SaaS template live demosaas-template.nuxt.dev/
- Nuxt UI SaaS template docs: installationsaas-template.nuxt.dev/
docs/ getting-started/ installation - Nuxt UI SaaS template README on the auth branchgithub.com/
nuxt-ui-templates/ saas/ blob/ auth/ README.md - Nuxt UI templates listingui.nuxt.com/
templates - Nuxt UI Dashboard template repositorygithub.com/
nuxt-ui-templates/ dashboard
Nuxt UI SaaS template is a trademark of its owner, and Nuxter is not affiliated with it. Found something out of date? Tell us.
More comparisons
Docs
Read the docs before you decide.
Every page of the docs is public, so you can see how each part works before you buy. From $249, one-time.