Early access — a SaaS starter kit
Three weeks of plumbing,
already done.
A SaaS starter kit built on Laravel 13 and Nuxt 4 SSR — the codebase you clone and own. Teams, Stripe and Paddle billing, an AI assistant with credit metering, and an admin panel. $149, lifetime updates.
One payment. Unlimited projects. 167 backend tests, 33 frontend.
MRR
$5,608
Active subscriptions
24
Churn
4.0%
AI assistant
live412 / 500 credits
Streaming over SSE, metered per team. Balance updates across every open tab over Reverb.
Impersonating
02:14ana@example.com
Banner stays pinned until you exit.
Your admin panel, one command after install. A demo seeder fills it with a plausible customer base, so you're building against something that looks alive instead of a screen of zeros.
You already know how the first month goes.
None of it is hard, exactly. It is just long, and none of it is the thing you actually want to build. Rough but honest estimates for assembling it yourself:
- 2–4d
Sanctum cookie auth against a decoupled Nuxt SSR frontend
Cookie forwarding during server rendering. This is the one that eats a weekend.
- 2d
OAuth, magic links, email verification
Google and GitHub, plus the token flows around them.
- 1–2d
2FA with TOTP, QR codes, single-use recovery codes
- 3d
Teams, per-team roles, invitations
Acceptance by token, without leaking whether an address is registered.
- 4–5d
Stripe subscriptions
Plans, trials, proration, per-seat quantity sync, customer portal, feature gates.
- 2d
Webhooks you actually trust
The part everyone ships without verifying. See below.
- 4d
Admin panel — CRUD, user management, revenue metrics
- 2d
Localisation, including queued email in the recipient’s language
- 2d
Docker, CI, a test suite worth running
Call it 22–26 working days — a month, give or take, before you write the first line of the thing that makes the product yours.
You could build all of it. That is not in question — you have built most of it before. The question is whether you want to spend the first month of this project doing it again.
Nuxavel is $149 — roughly what two hours of contract work bills for.
What's included
A real Laravel app and a real Nuxt app. You clone them and they are yours — no vendor package, no licence key phoning home.
Auth
- Sanctum SPA cookie auth working with a decoupled Nuxt SSR frontend, including cookie forwarding during server rendering
- Email/password, magic links, Google and GitHub OAuth, email verification
- 2FA (TOTP) with QR codes and single-use recovery codes
- Admin user impersonation with a persistent banner
- Account suspension that drops a signed-in user on their next request
Teams
- Personal team on signup; every user always operates inside a team
- Roles per team — owner, admin, member — distinct from global admin roles
- Email invitations with token acceptance, no user enumeration
- Billing belongs to the team, not the user — built for per-seat from day one
Billing
- Stripe via Laravel Cashier: multi-plan, trials, proration, per-seat quantity sync, customer portal, feature gates
- Paddle as merchant of record, verified against a real sandbox purchase
- Stripe Managed Payments — one config flag. Built and tested, but never run against a live transaction, so it ships marked experimental
- Config-driven plan catalogue: one file defines plans, prices, features, limits
AI assistant
- Streaming (SSE) chat, metered by per-team credits
- Monthly plan allowance plus purchasable credit packs that never expire
- Anthropic driver plus an offline fake driver — the kit runs with no API key
- 402 before streaming when out of credits; failed generations cost nothing
Admin panel
- Generic resource builder: one config class per resource gives a full CRUD screen, no new frontend code
- Revenue metrics — MRR, ARR, churn, per-plan breakdown — computed locally, no Stripe API calls
- Hand-rolled SVG charts, zero charting dependencies
- Activity log, user management, per-tenant drill-down
Type safety
- PHP Data classes generate TypeScript types automatically
- Change a field on the backend, run one command, and the frontend typecheck tells you every broken usage
Localisation
- English, Portuguese (BR), Spanish — UI, transactional emails, API errors, validation messages
- Locale-prefixed routes with hreflang, so each language is its own indexed page
- Queued emails render in the recipient’s language, not the worker’s
Realtime
- Laravel Reverb — self-hosted WebSockets, no Pusher bill
- Private per-team channels; credit balances update live across tabs
Developer experience
- docker compose up — API, MySQL, queue worker, Reverb, Mailhog, Nuxt dev server
- 167 backend tests, 33 frontend tests
- Design tokens in one file — rebrand by editing CSS variables, no rebuild
Billing
Billing that has actually charged a card.
Most starter kits ship a Stripe integration that has never been run against real money. It looks fine — checkout redirects to a success page whether or not your app learned about the payment.
Every billing path here was driven against live Stripe and Paddle sandboxes, then checked in the database rather than the UI. It caught three bugs that would otherwise have shipped to you:
- 01
Checkout redirected to the success page. The database stayed empty.
The webhook listener had stopped, and nothing anywhere said so.
- 02
The admin panel reported 24 paying subscriptions and $0 MRR, at the same time.
A rotated Stripe Price ID had silently stopped mapping to a plan.
- 03
A provider migration downgraded every paying customer to the free plan.
Plan lookup only knew the new provider's price IDs — while their cards kept being charged.
All three are fixed, and each has a regression test. Your billing starts where most people's ends.
Merchant of record
You probably owe VAT you don't know about.
Selling only inside your own country? This may not apply yet — skip ahead. The moment you take a customer abroad, it does.
Sell a subscription to a customer in Germany and you owe German VAT — from the first sale, no threshold. Same story across the EU, the UK, and a growing list of US states. Stripe collects your money; it does not become the seller.
A merchant of record does. Paddle becomes the legal seller of your product and handles registration, collection and remittance worldwide. Nuxavel ships it as a config flag:
# .env
BILLING_PROVIDER=paddleStripe's own merchant-of-record product is supported too — and the kit watches it.
Stripe applies it per transaction. When a sale misses an eligibility check it silently falls back, leaving you as the legal seller, holding the tax liability you thought you had handed over. Nuxavel detects that and tells you.
Stripe sells the capability. Nobody else ships the alarm.
Marked experimental, and here's why. Stripe Managed Payments is built and covered by tests, but it has never processed a live transaction: Stripe doesn't offer it to sellers in Brazil, where Nuxavel is built. If you want a merchant of record today, use Paddle — that's the path verified against a real sandbox purchase.
Only need Stripe? Stripe is the default. Merchant of record is a flag you can ignore entirely.
Type safety
Your API contract can't drift.
Rename a field in PHP and the TypeScript types regenerate from it. The frontend then refuses to compile until every use is fixed — instead of shipping and reading undefined in production.
1 — change the backend
class UserData extends Data
{
public function __construct(
public int $id,
public string $name,
- public string $email,
+ public string $email_address,
) {}
}2 — regenerate, then typecheck
$ composer types
$ npm run typecheck
error TS2339: Property 'email' does not
exist on type 'UserData'.
app/pages/settings.vue:42
app/components/TeamSwitcher.vue:19Two files you'd have forgotten, found in four seconds, before anyone deployed anything.
Pricing
Buy once. Ship forever.
Roughly what two hours of contract work bills for — against weeks of building the same plumbing again.
Solo
Most developers$149once
Unlimited projects, yours and your clients'.
Get Nuxavel — $149- The full Laravel 13 + Nuxt 4 source, yours to own
- Sanctum SSR auth, teams, roles and invitations
- Stripe and Paddle billing, merchant-of-record ready
- AI assistant with credit metering
- Admin panel, resource builder and revenue metrics
- English, Portuguese and Spanish throughout
- 200 tests and the Docker setup that runs them
- Lifetime updates over Git
Team
$349once
Up to 10 developers at one company.
Get the team licenceEverything in Solo, licensed for your whole team. Same code, same updates — the difference is who's allowed to use it.
The only thing you may not do is resell Nuxavel itself as a starter kit.
FAQ
The things people ask first.
- Is this a template or a framework?
- Neither. It is a real Laravel app and a real Nuxt app that you clone and own. No vendor package, no licence key phoning home, nothing to strip out later.
- Can I use it for client work?
- Yes — unlimited projects, yours and your clients'. The only restriction is that you may not resell Nuxavel itself as a starter kit.
- Do I need Stripe, Paddle or Anthropic accounts to try it?
- No. It runs with zero API keys: the AI assistant answers from an offline driver, email lands in a local inbox, and paid plans render as non-purchasable. Add keys when you want the real thing.
- What if I only need Stripe and not the tax handling?
- Stripe is the default. Merchant of record is one config value you can ignore completely.
- How is this different from a free starter on GitHub?
- Free starters give you auth and a dashboard. The weeks go into the parts they stop at — Sanctum working through Nuxt SSR, per-seat billing that survives a plan change, webhooks that actually update your database, emails that arrive in the recipient's language.
- Why Laravel 13 and Nuxt 4 specifically?
- Because a decoupled SSR frontend is the part people get stuck on. If you wanted Blade or Inertia, Laravel already ships excellent starters for free. This exists for the harder arrangement.
- Do I get updates?
- Yes, lifetime, over Git. Buy once.
Start with the part that makes you money.
The auth, the teams, the billing, the tax problem and the admin panel are done. What's left is your actual product.
Get Nuxavel — $149 onceOne payment. Unlimited projects. 200 tests included.