Skip to content

Nuxter vs Makerkit

Nuxter builds into one Cloudflare Worker and needs one $249 license per client; Makerkit is a React kit with Discord support from its founder.

Checked makerkit.dev

Feature check

Built in, of 14 rows

  • Nuxter: 12 of 14 rows built in.
  • Makerkit: 3 of 14 rows built in, 2 partly.

Counted from the feature check below. A row that Makerkit’s own site and docs do not mention is not counted. See the rows

01The short version

Which one to pick.

Nuxter is a Vue and Nuxt kit built for Cloudflare Workers, where the whole app deploys as one Worker with no adapter. A fresh clone runs without Docker. Background jobs with retries, a failed-payment grace period, per-plan permissions and staff refunds of one-time purchases come built, so you write none of them yourself. Client work is allowed, with one $249 single-seat license per client.

This page compares Makerkit's Next.js Supabase kit. It suits a React team that wants answers from the maker on Discord.

  • Pick Nuxter if

    • You build in Vue and Nuxt and want to deploy to Cloudflare Workers.
    • You freelance and want each client covered by its own $249 single-seat license, bought in the client's name if you like.
    • You want a fresh clone to run with Node and pnpm alone.
    • You want background jobs, a failed-payment grace period and per-plan feature gating already built.
    • You support your own customers and want plan grants, one-time refunds and an audit trail inside the app.
  • Makerkit may suit you better if

    • You build in React and want Next.js, TanStack Start or React Router.
    • You plan to host on Vercel, in Docker or on your own server.
    • You charge per seat or by metered usage and want that billing in the kit.

02Feature check

Feature by feature.

What each kit ships for the things buyers ask about most. A question mark means Makerkit’s own site and docs do not mention it.

Feature NuxterMakerkit
Runs natively on Cloudflare Workers(Makerkit: through OpenNext, plus manual steps)Built inPartly
Local development without DockerBuilt inNot included
Client work on one-developer licenses, one per clientBuilt inNot included
Background jobs and scheduled tasksBuilt inNot in its docs
Failed-payment grace periodBuilt inNot in its docs
Per-plan feature gating(Makerkit: paid-or-free check; per-plan via recipe)Built inPartly
Staff plan grants and one-time refundsBuilt inNot in its docs
Branches or sites under an organizationBuilt inNot in its docs
Audit log per organizationBuilt inNot in its docs
Active sessions, sign out any deviceBuilt inNot in its docs
Unit and component testsBuilt inNot in its docs
Deploy to Vercel, Docker or a VPSNot includedBuilt in
Per-seat and metered billingNot includedBuilt in
Support from the kit's makerBuilt inBuilt in
  • Built in
  • Partly
  • Not included
  • Not in its docs

03Why Nuxter

Why pick Nuxter over Makerkit.

What Nuxter ships on day one that Makerkit’s own pages do not describe.

  • One Worker, every service declared

    Nuxter builds into one Cloudflare Worker. Queues, file storage, cache, mail, rate limits, AI and the database connection are bindings, the handles a Worker gets to Cloudflare services, declared in one file. You learn one platform and write no adapter for any of it.

  • One $249 license per client

    The single-seat license allows client work, as long as each client holds its own license, which you can buy in the client's name. A freelancer takes client work without first buying a five-seat license.

  • Runs locally without Docker

    pnpm dev starts an embedded Postgres, migrates it and prints outgoing mail, links included, to the terminal. A fresh clone runs with no Docker, no .env file and no accounts, so a new contributor starts with Node and pnpm.

  • Background jobs with retries

    Typed jobs run on Cloudflare Queues and retry with growing delays. After its last retry the job moves to a dead letter queue, a holding queue for jobs that keep failing, and your error tracker is told. A daily cron runs six cleanup tasks, and mail that failed during a provider outage goes out on retry, on the same Worker, with no other service to add.

  • Billing rules already written

    A failed renewal keeps access for 14 days by default, with a banner that sends the customer to the provider's portal, so a customer whose card expires keeps working while they fix it. Each plan maps to the permissions it sells, so a new tier opens features without touching a route, and one setting puts the whole dashboard behind a paid plan.

  • Branches under one organization

    An organization can hold a second level, such as branches or sites, declared in config. A child uses its parent's plan and seats, and the parent's owners manage every child without joining it, so a customer with several locations pays once and runs them from the parent.

  • Plan grants and one-time refunds

    Your staff grant a plan for free, revoke it or refund a one-time purchase from the customers page, without opening the provider's dashboard. Every grant is recorded in the customer's activity log with the staff member as actor, and in the organization's audit trail.

  • 335 test files

    The kit ships 230 unit test files, 97 component test files and 8 Playwright specs. The unit tests run against a real Postgres engine, and about 50 files cover payments, including one per provider adapter. The same suites run against your copy when you change kit code or take an update.

04Where Makerkit is ahead

Where Makerkit is ahead.

The trade-offs to weigh before you decide.

  • React, in three frameworks

    One license for the Supabase stack includes the Next.js 16, React Router 8 and TanStack Start editions of the kit.

  • Hosting on Vercel, Docker or a VPS

    Makerkit recommends Vercel and has deployment guides for Cloudflare, Docker and a VPS. It sells the kit as running on serverless platforms or on a long-lived Node server.

  • Discord support from the founder

    The founder and the community answer on Discord, with a reply to a support ticket expected within 48 hours. The Team license adds a private channel.

  • Per-seat and metered billing

    Per-seat billing updates the subscription quantity as members join or leave, and metered usage works on Stripe and Lemon Squeezy.

05Side by side

Every row, side by side.

The same nineteen rows on every comparison, so you can read two pages against each other.

Topic Nuxter Makerkit
Stack
FrameworkNuxt 4 and Vue 3, with Nuxt UI 4 and Tailwind 4, in one appNext.js 16 and React 19, with Shadcn UI on Base UI and Tailwind 4, as a Turborepo monorepo
HostingCloudflare Workers, with queues, storage, cache, mail and AI as native bindingsGuides for Vercel, Cloudflare, Docker and a VPS; Vercel recommended
DatabasePostgres with Drizzle through Cloudflare Hyperdrive; runs locally with nothing to installSupabase Postgres with Row Level Security and the Supabase client; Docker locally
What ships
Sign-inPassword or magic link, passkeys, authenticator codes with recovery codes, GitHub and GooglePassword, magic link, email code, passkeys, TOTP and any Supabase OAuth provider
OrganizationsOrganizations with a second level for branches or sites, roles, invitations and seat caps per planPersonal and team accounts with roles, invitations and ownership transfer
PaymentsStripe, Polar, Lemon Squeezy and Creem: subscriptions, one-time, coupons, failed-payment grace, refunds; trials on Stripe and PolarStripe, Lemon Squeezy and Paddle (plugin); flat, per-seat, metered and one-off; trials, coupon field
EmailCloudflare Email Sending and Resend, with fallback between them, queued retry and one-click unsubscribeNodemailer over SMTP or Resend; React Email templates; sign-in mail sent by Supabase Auth
Background jobsCloudflare Queues with retries and a dead letter queue, plus scheduled cleanup tasksNo job runner or queue in its docs; they point to Trigger.dev, Inngest, BullMQ or pg_cron
File storageCloudflare R2 with type, size and access rules per purpose; avatar and organization photo uploads built inSupabase Storage
AITyped server calls for text, image, speech, transcription, embeddings and video on Workers AINone; its site says you add the AI SDK you prefer
LanguagesEnglish and Serbian, with localized routes, emails and legal pagesShipped languages not stated in its docs; locale-prefixed URLs with next-intl
AdminCustomers list: edit, suspend, view as a customer, send resets; plan grants, one-time refunds and an audit trailSuper admin with impersonation, ban, delete, user creation and password reset
Blog and docsBlog with RSS and an AI drafting workflow, pricing page, legal page templates, sitemap and social imagesBlog, docs and changelog through Keystatic or WordPress; FAQ and contact pages
Working on it
Tests335 test files: 230 unit, 97 component and 8 PlaywrightPlaywright end-to-end tests and pgTAP tests for its Row Level Security policies
Updatespnpm template:update brings each kit update as one commit you reviewMerge from an upstream remote, with git or the Makerkit CLI
AI coding agentsAGENTS.md, read by Claude Code, Cursor and CopilotAGENTS.md and CLAUDE.md per package, nine skills, a local MCP server, rules for six tools
Buying
Price$249 for one seat or $649 for five, one-time$349 for one user or $649 for up to 5 members, one-time, per data stack
LicenseAny number of your own products; one license per clientUnlimited own products; client work needs a Team license, plus one per client given the code or an instance
SupportEmail support from Devilos LLC; public docsDiscord support from the maker and community; private channel on the Team license

06In detail

Part by part.

Stack and hosting

Nuxter is one Nuxt 4 app on Vue 3, with Nuxt UI 4 and Tailwind 4, built for Cloudflare Workers on purpose. Queues, file storage, cache, mail, rate limiting, AI and the database connection are bindings declared in one file. You have one platform to learn and one Cloudflare account to run, and the code needs no adapter for any of it. The trade is that the app runs nowhere else.

A shipped GitHub workflow deploys main after CI passes: it checks the config, builds, runs the migrations and then uploads the Worker, so a failed migration leaves the old Worker live. See deployment.

Makerkit's Next.js Supabase kit is a Turborepo monorepo on Next.js 16 and React 19. Makerkit recommends Vercel and also documents Cloudflare, Docker and a VPS. On Cloudflare, its guide deploys the kit with OpenNext: a generator writes the config, then the guide lists manual steps, among them an edit to the Stripe client and renaming proxy.ts to middleware.ts.

Sign-in and accounts

Nuxter's sign-in runs in your Worker and keeps sessions in your Postgres, with no separate auth service. You choose password or magic-link sign-in, then add passkeys, authenticator-app codes (TOTP) with recovery codes, and GitHub and Google sign-in. Every session is a database row checked on each request, so users see their devices and can end any session. Self-service account deletion is on by default and holds the account for 30 days with a mailed restore link, so a user who deletes by mistake can come back. See auth.

Makerkit uses Supabase Auth. Password, magic link, emailed one-time code and passkey sign-in are separate switches, so several can be offered at once, and its docs list 21 Supabase OAuth providers. Makerkit offers more sign-in methods. A user-facing session list is not in its docs, and self-service deletion is off by default, with no restore window described.

Organizations and permissions

A Nuxter organization can have a second level, such as branches or sites. The parent's owners and admins manage every child without joining it, and a child uses its parent's plan and seats, so a customer with several locations pays once. An owner can see when a member left or the plan changed, because each organization keeps an audit trail of membership, invitation and plan changes.

Every account gets an organization at signup, with owner, admin and member roles, invitations that carry a role and expire, and a member cap per plan. Roles are declared in config and type-checked, and the caller's role is read from the database on every request, so a removed member loses access on their next one. See tenancy.

Makerkit gives each user a personal account beside their teams, flags switch to teams only or personal accounts only, and its members page can transfer ownership. Roles and permissions live in database tables, and Row Level Security, rules Postgres applies to every query, protects account data at the database level, with pgTAP database tests for the policies. A projects layer inside a team is a recipe you build, and its docs describe no audit log feature; they suggest turning on Supabase's own audit logging.

Payments and billing

When a renewal fails, Nuxter keeps the customer's access for 14 days by default and shows everyone who can bill the organization a banner with the end date and a button to the provider's portal. A customer whose card expires keeps working while they fix it. On Stripe and Polar, when the provider's payment notification (the webhook) never arrives, the page the buyer returns to asks the provider and grants access. See payments.

Each plan maps to the permissions it sells. Guard a route with one of those permissions, and it answers 402 upgrade-required until the organization buys a plan that includes it, so a new tier opens features without a change to the route. Setting payments.gate to 'plan' locks the whole dashboard until the organization pays.

NuxterMakerkit
ProvidersStripe, Polar, Lemon Squeezy, CreemStripe, Lemon Squeezy, Paddle as a plugin
Billing modelsSubscriptions, one-time, repeat purchases such as credit packsFlat, per-seat, metered, one-off
Failed renewal14 days of access and a banner, by defaultNo configurable grace period in its docs
Per-plan featuresPlans map to permissions in configA recipe to build; a paid-versus-free check ships
CouponsCoupon links, checked with Stripe, Polar or Creem before checkoutA coupon field at checkout, enabled per product

Makerkit's webhook handler verifies signatures, syncs subscriptions and orders, and calls callbacks you write. Its docs list a past_due status for your code to handle. For per-plan features its docs give a recipe to build on, and its has_active_subscription function covers paid-versus-free checks. Makerkit covers more billing models.

Database, jobs and files

Nuxter uses Drizzle on Postgres. You host the database with a provider you choose, such as Neon or Supabase, and the Worker reaches it through Hyperdrive, Cloudflare's connection service for outside databases. In development, pnpm dev starts an embedded Postgres (PGlite, Postgres compiled to WebAssembly) and migrates it, so a fresh clone runs with no Docker and no accounts. The kit's migrations and yours run in separate chains, so a kit update never collides with a migration you wrote. See database.

Background jobs run on Cloudflare Queues, one typed file per job. A failed job is retried with growing delays. One that keeps failing moves to a dead letter queue and is reported to your error tracker. A daily cron declared in the Worker's config runs six cleanup tasks, for sessions, activity, notifications, invitations, checkouts and deleted accounts. Files go to Cloudflare R2 under rules per purpose for format, size and access.

Makerkit uses Supabase Postgres and the Supabase client, with migrations diffed from SQL schema files by the Supabase CLI. Local development needs Docker, because Supabase runs in containers. Makerkit's docs describe no job runner, queue or scheduler of the kit's own and point to Trigger.dev, Inngest, BullMQ and pg_cron, so work that must retry needs one of those tools or code of your own. Files go to Supabase Storage.

Email and notifications

Nuxter sends mail through Cloudflare Email Sending or Resend. When one provider fails the next is tried, and when every provider is down the mail is queued and retried, so an invitation sent during a provider outage goes out once a provider answers. Product and marketing mail respects each user's opt-out and carries one-click unsubscribe headers. See email.

Makerkit's mailer works with Nodemailer over any SMTP server, its default, and Resend, with templates in React Email. Its email docs do not mention a built-in queue or retry, and suggest an external queue for bulk sends.

Both kits ship an in-app notification bell. Nuxter writes payment notifications out of the box, for purchases, refunds and subscription changes. Makerkit can deliver notifications live over Supabase Realtime.

AI

Nuxter ships the typed server calls a product makes: text, image, speech, transcription, embeddings and video. Cloudflare Workers AI is wired through the Worker's AI binding, so no API key is needed, and a model is named by its role in config and swapped per deploy with an environment variable. See AI.

Makerkit's AI starter page says the kit includes no LLM provider integration or embeddings, and that you add the SDK you prefer.

Content, languages and marketing pages

Nuxter ships a Markdown blog in git with tags, drafts, per-language RSS feeds and a generated share image per post. A GitHub workflow drafts a post with an AI model, translates it and opens a pull request for you to review, so each post arrives in every configured language; a second workflow rewrites a draft on request. The pricing page reads your plan config, which holds the plans and prices it shows. English and Serbian ship with localized routes, emails and legal pages. See blog.

Makerkit ships home, pricing, FAQ, contact-form, blog, documentation and changelog pages, with content going through a CMS layer that has Keystatic and WordPress built in. Makerkit's kit ships more marketing pages out of the box. It uses next-intl with locale-prefixed URLs, and its docs do not say which languages ship.

Admin and operations

Your staff get a customers list where they can edit or suspend an account, mail a reset link, and view the app as that customer without being able to change anything. They can grant an organization a plan for free, revoke it and refund a one-time purchase through the provider, and every staff action lands in the affected account's activity log.

Password sign-in allows 10 attempts per 15 minutes for an address and IP, then locks for 15 minutes, and registration, invitations and checkout have limits of their own. Page views and events are counted on the server with no tracking cookie, and the consent banner honours the browser's Global Privacy Control. /api/health tells an uptime monitor whether the database answers. See observability.

Makerkit's super admin lists accounts, shows members and billing, and can impersonate, ban and delete users, create new ones and reset a password. Its admin docs do not mention a refund or plan-grant action. Makerkit has Sentry built in, with PostHog, SigNoz and Honeybadger as plugins, and for sign-in limits its docs point to Supabase's rate limiting.

Tests

Nuxter ships 335 test files: 230 unit, 97 component and 8 Playwright specs. The unit tests run against PGlite, a Postgres engine, with the real migration chain applied, and about 50 files cover payments, including one per provider adapter. CI runs lint, typecheck and the unit and component suites on every pull request. See testing.

Makerkit's testing docs describe Playwright end-to-end tests, and its security docs describe pgTAP tests for the database's Row Level Security policies. Its CI workflow type-checks and can run the Playwright suite. No shipped unit or component tests appear in its docs.

Updates

Nuxter's pnpm template:update brings everything the kit changed since your last update as one commit on a branch, which you review as a pull request. Your history stays linear and holds none of the kit's commits. See template.

Makerkit keeps its repository as an upstream remote, and its guide has you run git pull upstream main and choose a merge. The Makerkit CLI runs the same fetch and merge, and its MCP server can hand merge conflicts to an AI agent.

Makerkit says it has shipped kits since 2022, and its v4 upgrade came as nine tagged steps, each leaving a working app.

Docs and AI coding agents

Nuxter's documentation is public, 25 pages you can read before you buy. The kit's AGENTS.md is a 330-line brief covering setup, the checks to run, code standards, where each kind of code goes and a list of traps with their causes, and pointer files make Claude Code, Cursor and Copilot read it. See getting started.

Makerkit's docs are public too. For coding agents it ships an MCP server and skills on top of instruction files. AGENTS.md and CLAUDE.md sit at the root and inside packages, and its agent docs list nine skills, a review agent and rules for six tools. The MCP server, which gives a coding agent tools to call in your project, is built and run locally from the repository.

Price and license

NuxterMakerkit
One developer$249, one seat$349, one user
Team$649, five seats$649, up to 5 members
PaymentOne-timeOne-time
CoversThe whole kit, all 18 subsystemsOne data stack: Next.js and TanStack Start editions, plus React Router on Supabase
Client workEither license, one license per clientTeam license, one license per client

Nuxter allows client work on a $249 single-seat license, one for each client, which you can buy in the client's name. Makerkit's license text names a Developer License for one person, which does not permit client work. Client work needs its Team license, sold at $649, and each client that receives the code, or a separate instance run for it, needs its own license too.

Both licenses allow any number of your own products, keep the source private and permit AI coding tools. Makerkit's Team License lets all of the licensee's employees and contractors use the code, and its pricing table gives repository access to "Up to 5 members (contact us for more)". A Nuxter seat is one person who works on code containing the kit; hosting, CI, bots and AI coding tools need none. See pricing.

Nuxter's license gives 14 days to put most breaches right. Makerkit's ends automatically on any breach and allows a compliance audit at most once a year. Makerkit's Drizzle and Prisma kits are separate licenses at the same prices, on Better Auth with Stripe or Polar.

Support and community

Nuxter's support is by email to Devilos LLC, the company that makes it. The public documentation, which has a search dialog, and the kit's AGENTS.md, which gives your coding agent a list of traps with their causes, cover the rest.

Makerkit's site says the founder and the community answer on Discord. Its contact page sends technical questions to tickets there, with a reply expected within 48 hours, and administrative or other questions to email. The Team license adds a private channel, and the license includes lifetime support for the kit you bought, excluding custom development and consulting.

07Sources

Where this comes from.

Every claim about Makerkit 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.

  1. Makerkit home page and pricingmakerkit.dev/
  2. Makerkit licensemakerkit.dev/license
  3. Makerkit AI SaaS starter pagemakerkit.dev/ai-saas-starter
  4. Makerkit docs: AI agentsmakerkit.dev/docs/next-supabase-turbo/installation/ai-agents
  5. Makerkit docs: running the projectmakerkit.dev/docs/next-supabase-turbo/installation/running-project
  6. Makerkit docs: Cloudflare deploymentmakerkit.dev/docs/next-supabase-turbo/going-to-production/cloudflare
  7. Makerkit docs: production checklistmakerkit.dev/docs/next-supabase-turbo/going-to-production/checklist
  8. Makerkit docs: authentication configurationmakerkit.dev/docs/next-supabase-turbo/configuration/authentication-configuration
  9. Makerkit docs: billing overviewmakerkit.dev/docs/next-supabase-turbo/billing/overview
  10. Makerkit docs: updating the codebasemakerkit.dev/docs/next-supabase-turbo/installation/updating-codebase
  11. Makerkit changelogmakerkit.dev/changelog
  12. Makerkit contact pagemakerkit.dev/contact

Makerkit is a trademark of its owner, and Nuxter is not affiliated with it. Found something out of date? Tell us.

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.