Nuxter vs ShipAhead
Nuxter ships organizations, passkeys, 335 test files and a failed-payment grace period; ShipAhead has a $199 list price, AI pages and a Vercel guide.
Checked shipahe.ad
Feature check
Built in, of 13 rows
- Nuxter: 11 of 13 rows built in.
- ShipAhead: 2 of 13 rows built in.
Counted from the feature check below. A row that ShipAhead’s own site and docs do not mention is not counted. See the rows
01The short version
Which one to pick.
Nuxter is built for products sold to teams on subscription. It ships organizations with roles, invitations and seat limits per plan, two-factor codes and passkeys, trials on Stripe and Polar, a 14-day grace period for failed renewals, and 335 test files, with CI running the unit and component suites on every pull request. ShipAhead's docs describe none of these.
ShipAhead's maker lists it as best for solo founders and AI coding. It sells one tier at a $199 list price, ships AI chat, text and image pages, and documents deployment to Vercel as well as Workers.
Pick Nuxter if
- You sell to teams and want organizations, roles, email invitations and seat limits per plan already built.
- You want your users to have authenticator codes, passkeys and a list of their signed-in devices.
- You want a test suite and CI workflows in the repository, so your own changes are checked from the first pull request.
- You charge subscriptions and want trials, a grace period for failed renewals and features sold by plan without writing them.
- You plan to take kit updates for years and want each one as a single commit you review.
ShipAhead may suit you better if
- You deploy to Vercel and want to stay there.
- You are building an AI product and want chat, text and image pages working on the first day.
- You want one tier at a $199 list price.
02Feature check
Feature by feature.
What each kit ships for the things buyers ask about most. A question mark means ShipAhead’s own site and docs do not mention it.
- Built in
- Partly
- Not included
- Not in its docs
03Why Nuxter
Why pick Nuxter over ShipAhead.
What Nuxter ships on day one that ShipAhead’s own pages do not describe.
Organizations, roles and seats
The organization owns the data and the plan, with owner, admin and member roles, email invitations, seat limits per plan and an audit trail. If you sell to teams, the rules for who sees, invites and pays are already written and tested.
Two-factor codes and passkeys
Users add authenticator-app codes with ten recovery codes, or passkeys that sign in with the device's PIN or biometric check, and they can end any session from their device list. You install and wire nothing to offer them.
335 test files and CI
The kit ships 230 unit, 97 component and 8 Playwright test files, about 50 of them on payments, and GitHub Actions run lint, typecheck, the unit and component suites and a build on every pull request. Your first change to checkout code is checked against them.
Billing that survives failed renewals
Free trials on Stripe and Polar are limited to one per buyer, a failed renewal leaves 14 days of access by default with a banner to fix the card, and features can be sold by plan. A customer whose card expires keeps working while they fix it, and you write none of that logic.
Updates as one reviewed commit
pnpm template:update brings each kit update as one commit on a branch, and a written table says which files are the kit's and which are yours. You take updates as pull requests and keep your code in places the kit never writes to.
Sign-in guarded against abuse
Every sign-in, reset and verification route is rate limited, and a spent limit locks for 15 minutes. Cloudflare Turnstile guards sign-up and sign-in once you add two keys, and every response carries a Content-Security-Policy. A script guessing a customer's password from one IP gets ten tries before the lockout.
04Where ShipAhead is ahead
Where ShipAhead is ahead.
The trade-offs to weigh before you decide.
A $199 list price
ShipAhead sells one tier, Lifetime Access, at a $199 list price paid once, with lifetime updates.
Vercel as well as Workers
ShipAhead's docs have a deployment guide for Vercel and one for Cloudflare Workers, and both redeploy on every push to main.
Ready-made AI pages
A chat, a text generator and an image generator ship as working pages, running through OpenRouter with a default model you switch in config.
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 built for Cloudflare Workers on purpose. 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 one file, wrangler.jsonc. You learn one platform and run one account, and none of those services needs wiring in code. The Postgres database is hosted by a provider you choose and reached through Hyperdrive, Cloudflare's connection pooler for databases hosted elsewhere. The trade is that the app runs on Workers and nowhere else. The deployment docs list what you create before the first deploy.
Both kits are one Nuxt 4 project in TypeScript on Nuxt UI 4 and Tailwind CSS 4. ShipAhead's deployment docs cover Vercel and Cloudflare Workers, each with its own guide and a redeploy on every push to main.
Sign-in and accounts
Nuxter ships email and password or magic-link sign-in, GitHub and Google, authenticator-app codes with ten recovery codes as a second factor, and passkeys, which sign in with the device's PIN or biometric check. Users see the devices signed in to their account and can end any session. They read a log of their own security events, download their data, and by default have 30 days to restore an account they deleted.
If your customers ask for two-factor sign-in, you can offer it on day one, with the awkward cases handled: recovery codes, a fresh sign-in before a passkey is added or removed, and a refusal when someone tries to remove their last way in. The auth docs have the detail.
ShipAhead builds sign-in on the Better Auth library, with email and password, magic links and OAuth. Its auth docs name Google and add GitHub, Twitter or Apple through a config list and environment variables. Its docs, home page and changelog do not mention two-factor authentication or passkeys.
Organizations and permissions
In Nuxter the organization owns the data and the plan. Every account gets one at signup and can belong to several. Owner, admin and member roles ship, with email invitations, seat limits per plan, an audit trail and an optional second level for branches or sites under one parent.
Selling to teams raises questions a single-user app never meets, such as who may pay for an organization and what happens when its last owner tries to leave. Nuxter answers them in code. An admin cannot make anyone an owner, the last owner cannot leave or be demoted, and two people accepting invitations at once cannot both take the last seat.
ShipAhead's docs have no page on organizations, teams, invitations or seats, and the one role they name is admin.
Payments and billing
Nuxter handles the parts of subscription billing that go wrong after launch. Free trials set in config work on Stripe and Polar, and a buyer who has held a subscription before gets no second trial. When a renewal fails, the customer keeps access for 14 days by default and sees a banner with a button to fix their card, so an expired card does not lock out a paying customer while the provider retries. Features are sold by plan: a route checks a permission, and a customer without the plan gets a 402 Payment Required response, which your interface turns into an upgrade prompt.
| Nuxter | ShipAhead | |
|---|---|---|
| Stripe | Yes | Yes |
| Polar | Yes | Yes |
| Lemon Squeezy | Yes | Not mentioned in its docs |
| Creem | Yes | Not mentioned in its docs |
| Dodo Payments | No | Yes |
In both kits the buyer pays on the provider's checkout page and manages billing in its customer portal. Nuxter can run several providers at once. Polar, Lemon Squeezy and Creem act as merchant of record, meaning they sell to your customer and handle sales tax. On Stripe you switch on Stripe Tax with one environment variable.
ShipAhead's payments docs set up Stripe, Polar or Dodo Payments through Better Auth plugins, for one-time and subscription plans, with the provider named in one config field. They do not mention trials, a grace period or selling features by plan. On failed payments they document a redirect to a failure page and Dodo's failed-payment webhook events.
Database, jobs and files
Both kits use Postgres through Drizzle. Nuxter's pnpm dev starts PGlite, a Postgres compiled to WebAssembly, and migrates it, so a fresh clone runs with no database account and no Docker. pnpm db:seed fills it with 50 accounts, each with its organization. In production the deploy workflow applies migrations before it uploads the Worker, so a failed migration leaves the running version live.
Background work runs on Cloudflare Queues. A job is one file in server/jobs/. A failed job is retried with growing delays, and after the last retry it moves to a dead letter queue, a holding queue for messages that kept failing, where it is reported to your error log and any tracker you set up. Mail retries and subscription cancellations at the provider already run this way.
ShipAhead's docs start from a hosted Postgres on Supabase, Neon or any connection string, and describe no local database. Its cron docs expose each job at /api/cron/<name> for the outside service cron-job.org to call with a secret header, and describe no queue.
Nuxter checks every upload before storing it in Cloudflare R2. The format is read from the file's first bytes rather than taken from the browser, the size is capped, and each purpose is public or readable by its owner alone. Avatar and organization photo uploads already use these rules. ShipAhead stores files in R2 or any S3-compatible service and has a file manager in its admin panel. Its storage docs list file size limits and type validation as best practices for you to apply.
Email and notifications
In Nuxter you list the mail providers, Cloudflare Email Sending and Resend, in the order to try them. When one fails it tries the next, and when every provider is down for the moment it queues the mail and retries, so a short outage delays a reset link instead of losing it. Nine account and security mails ship in English and Serbian. Product or marketing mail you write carries a one-click unsubscribe link.
Both kits build templates with Maizzle, which compiles Tailwind-styled templates into email HTML, and both send through Resend or Cloudflare. ShipAhead picks one provider in config, and its docs list six templates. Its email docs describe no queueing or retry.
Inside the app, Nuxter has a notification bell and drawer backed by a database table, with payment notifications already written. ShipAhead's docs mention toast messages, and it ships a Crisp live chat widget behind a config flag.
AI
Nuxter ships the typed server calls a product makes: text, images, speech, transcription, embeddings and video, on Cloudflare Workers AI through the Worker's AI binding, with no API key. Models from other vendors that Cloudflare resells, such as Anthropic's, go through the same calls by way of Cloudflare's AI Gateway. Your first AI feature starts from calls that already work, and asking the image call for a text model fails type checking.
ShipAhead ships three working pages: a chat, a text generator and an image generator. They run through OpenRouter, a gateway to models from many vendors, and you switch the default model in shared/config.ts.
Content, languages and marketing pages
Nuxter's blog has tag pages, drafts, an RSS feed per language and a generated social image per post. A GitHub Actions workflow drafts a post with an AI model, translates it and opens a pull request, and nothing publishes until you merge it. The pricing page is built from the plans in config, so you never hand-edit it. English and Serbian ship across the app, the emails and the legal pages, and a test holds every language file to the same keys, so a missing translation fails a test before a customer sees it.
ShipAhead ships more marketing pages: hero, features and pricing pages with email capture, a waitlist, changelog, contact and affiliates pages, and a Markdown blog and docs section on Nuxt Content. It ships English, with Nuxt i18n set up for more.
Admin and operations
In Nuxter, your staff get a searchable customers list where they edit and suspend accounts, grant a plan for free and refund a one-time purchase. They can view the app as a customer for 30 minutes in read-only mode, so they see what the customer sees without being able to change anything. Every staff action lands in the customer's own activity log.
Sign-in routes carry the rate limits and lockout described above. Server errors are logged under a request id that the error page shows, so a customer's screenshot leads you to the log line. The same errors can go to Sentry or Better Stack with no SDK in the bundle. GET /api/health tells an uptime monitor whether the database answers.
ShipAhead's admin panel shows user counts, a paginated user list, an Active or Banned switch and a form to create a user with a role and password. Its docs describe error handling as a custom error page and do not cover rate limiting, security headers or error tracking.
Tests
Nuxter ships 335 test files: 230 unit, 97 component and 8 Playwright. The unit suite runs against PGlite with the real migrations applied, and about 50 files cover payments, so a change to checkout or webhook code is checked against them. GitHub Actions run lint, format, typecheck, both Vitest suites and a production build on every pull request.
ShipAhead's docs have no testing page and name no test runner, test command or CI workflow. The checks in its deployment checklist are lint, format and a local run.
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, and the kit's own history never enters your repository. A table of paths says which files are the kit's and which are yours, so you know where to put code the kit never writes to. Your own tables migrate in a chain of their own, so a kit update never renumbers or collides with a migration you wrote. The license grants every update, and it never expires.
ShipAhead's setup docs have you add its repository as a remote named upstream, fetch, and run git merge upstream/main. Its pricing card lists lifetime updates, and its changelog shows ten dated releases from Oct 27, 2025 to Jul 27, 2026, the latest moving the kit to Nuxt 4.5.1.
Docs and AI coding agents
Nuxter's 25 docs pages are public, so you can read how each part works before you buy. The kit ships a 330-line AGENTS.md covering setup, the checks to run before finishing, code standards and a list of known traps with their causes, and short pointer files send Claude Code, Cursor and Copilot to it. Your coding agent starts from the same rules and traps a new developer would read first.
ShipAhead publishes its docs too. Its home page says the kit includes an AGENTS.md for Cursor, Claude and other AI tools; its docs do not describe what the file contains.
Price and license
| Nuxter | ShipAhead | |
|---|---|---|
| Price | $249 for one seat, $649 for five | $199 list, one tier |
| Payment | One-time | One-time |
| Seats | One person per seat | No seat count stated |
| Projects | Any number of your own products | Projects you own or manage |
| Client work | One license per client | Not addressed by name |
On 2026-09-29 ShipAhead's pricing section showed $99 beside the struck-through $199, presented as $100 off for its first 100 customers.
Nuxter's license spells out who needs a seat: one person with one GitHub account, for everyone who reads or changes code containing the kit. AI coding tools and CI need none. Each client you build for needs its own license, and a product you built can be sold to a new owner.
ShipAhead's license is non-exclusive and non-transferable, covers personal and commercial projects you own or manage, and forbids sharing the repository outside your team without saying how many people that covers. Its home page reads "Pay once. Build unlimited SaaS." Both licenses forbid reselling the kit or building a competing starter kit from it.
Support and community
Nuxter's support is by email to Devilos LLC, the company that makes and sells it, about the kit, a purchase or a license. The public docs and the AGENTS.md in the repository, which your coding agent reads too, cover the rest.
ShipAhead's purchase includes a Discord server, where its FAQ says to report bugs, and its site gives hello@shipahe.ad as a contact address.
07Sources
Where this comes from.
Every claim about ShipAhead 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.
- ShipAhead home page, pricing and FAQshipahe.ad/
- ShipAhead docs and blog posts in one fileshipahe.ad/
llms-full.txt - ShipAhead docs: admin panelshipahe.ad/
docs/ features/ admin-panel - ShipAhead changelogshipahe.ad/
changelog - ShipAhead licenseshipahe.ad/
legal/ license - ShipAhead docs: authenticationshipahe.ad/
docs/ features/ auth - ShipAhead docs: paymentsshipahe.ad/
docs/ features/ payments - ShipAhead docs: cron jobsshipahe.ad/
docs/ features/ cron-jobs - ShipAhead docs: AIshipahe.ad/
docs/ features/ ai - ShipAhead docs: deploymentshipahe.ad/
docs/ deployment/ overview - ShipAhead docs: setup and updatesshipahe.ad/
docs/ get-started/ setup - ShipAhead docs: storageshipahe.ad/
docs/ features/ storage
ShipAhead 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.