Skip to content
Laraspring
Buy Laraspring
v0.x feature-complete · available now

The Laravel SaaS starter kit your coding agent already knows how to use.

Authentication, multi-tenant organizations, Stripe billing, transactional mail, presigned uploads, i18n and an audited admin panel, shipped as eight Composer packages rather than code you copy. The conventions, the procedures and the gates are files in the repository, so Claude Code or Cursor can add a feature on day one without you explaining the codebase first.

One payment, lifetime updates, no subscription.

tests
650testsacross nine suites, before you write a line
Composer packages
8Composer packagesthe core, framework-agnostic
agent skills
7agent skillsprocedures, not prose
locales
2localesEnglish and Spanish, screens and email

Those are counts from the repository, not customer numbers. Laraspring has not launched yet, so there are no testimonials on this page and there will not be invented ones.

What’s inside

The eight things every SaaS rebuilds, already built and already proved.

Each domain is an independent Composer package under the Laraspring\ namespace. You install them, you do not fork them, and an upgrade replaces them without touching your product.

Authentication

laraspring/auth

  • Registration, login, password reset, email verification
  • Magic links, single-use and rate limited per email and IP
  • Social sign-in through any Socialite provider you name
  • Two-factor with QR enrolment, eight single-use recovery codes and replay refused
  • Every feature is a flag: turning one off unregisters its routes

Organizations and tenancy

laraspring/organizations

  • Owner, admin and member, with the last owner impossible to remove
  • Invitations addressed to an email, hashed token, expiry and revocation
  • One endpoint switches the active organization, one middleware re-checks it every request
  • Optional or required mode: no dashboard until there is an organization
  • Tenancy resolved through a contract, never from the session directly

Billing

laraspring/billing

  • Stripe through Cashier, checkout and portal hosted by the provider
  • A plan catalogue keyed by logical id, so rotating a price is one config line
  • Charge the organization or the user: a config key, not a migration
  • Paywall mode turns the product from freemium into pay-to-enter
  • Seats enforced through a contract, so billing and organizations stay independent

Transactional mail

laraspring/mail

  • One branded template every email in the kit is drawn inside
  • A preview browser at /laraspring/mail, never registered in production
  • Colour, logo, product name and postal address are configuration
  • Sent in the recipient’s language, including from a queue an hour later

File uploads

laraspring/storage

  • Presigned direct-to-bucket uploads: the file never passes through PHP
  • A local fallback endpoint so a fresh clone works with no bucket at all
  • Per-type size limits, MIME lists and authorization rules
  • The confirm step re-derives the key and measures the object rather than trusting the browser

Internationalization

laraspring/i18n

  • English and Spanish, every string in the kit, screens and email alike
  • One locale per user, a picker on settings and sign-in
  • No i18n library in the browser: Laravel resolves it, Inertia shares it, a forty-line hook reads it
  • A missing translation fails a test rather than falling back and looking correct

Admin panel

laraspring/admin

  • Ordinary Inertia pages inside your product, behind one ability
  • Suspend an account with a reason and an end date, enforced at every door
  • Impersonation with the rules that make it safe: never another admin, banner on every page, destructive actions refused
  • Both ends of every action written to an audit trail
  • Counters are local queries, so the panel is up when your provider is not

The reference edition

apps/saas

  • Laravel 12, Inertia 2, React 19, TypeScript and Vite 6
  • shadcn/ui on Tailwind CSS 4 with Radix primitives
  • Landing page, pricing and legal templates that read the same plan catalogue as checkout
  • A demo seeder writing the awkward states: suspended, half-enrolled, expired, on trial, in grace

Built for coding agents

Three files, not a marketing claim.

You are going to build this product with an agent. “Agent-friendly” usually means a README. Here it means an agent pointed at the repository already knows where a feature goes, which conventions it has to follow, and how to prove it did not break anything.

1 · AGENTS.md states the conventions

Written for somebody building on the kit rather than on it: the map, whether a feature belongs in your application or in a package of its own, the recipes for a screen, a migration, a translation or an upload, the five contracts in laraspring/core and when to rebind one, and the traps that catch a first run. Kit-internal conventions live separately in CONTRIBUTING.md, so an agent building your product never reads past what applies to it.

2 · Seven skills turn a convention into a procedure

Knowing that every string goes through a translation file is not the same as knowing which two files to open. The skills under .claude/skills/ close that gap, every step citing a real path and a real command. Claude Code loads one by name when a task matches; any other agent reads the same markdown.

  • add-a-featureadding a whole domain, and deciding whether it is a package
  • add-a-screenone screen end to end: route, controller, page, strings, nav, test
  • add-a-billing-planchanging the plan catalogue and its price identifiers
  • add-a-localeshipping the application in another language
  • customize-emailsbranding, rewording or restyling transactional mail
  • rebrand-the-public-siteyour brand and your copy on the landing and legal pages
  • upgrade-safelytaking a new version of the kit without breaking your work

3 · The gates are what make that safe

Every change, whoever or whatever wrote it, has to survive the build, the application suite, the type check, the linter, the formatter and each package’s own suite booted with nothing else around it. An agent with a fast, honest failure signal behaves very differently from one without.

The kit also tries to make a mistake loud rather than quiet. A missing translation would normally fall back to English and look correct, so a parity test fails on it instead; a plan with a missing price identifier raises at the configuration boundary rather than at checkout.

.claude/skills/add-a-screen/SKILL.mdmarkdown
---
name: add-a-screen
description: Add one screen to a Laraspring application end to
  end — route, controller, Inertia page, English and Spanish
  strings, a navigation entry and a test. Use when the user asks
  for a new page, view, screen, settings tab or dashboard in an
  application built on the Laraspring starter kit.
---

# Add a screen

Six steps, in this order. Every path below is real;
`settings/profile` and `dashboard` in `apps/saas` are the
worked examples to copy from.

Work in `apps/saas`. Never add a screen by editing anything
under `packages/`.

## 1. Route

`apps/saas/routes/web.php`, or `apps/saas/routes/settings.php`
for a settings screen.

**Always name the route.** The frontend resolves URLs through
Ziggy by route name, never by literal string.
the gates, in orderbash
cd apps/saas
npm run build          # first, or the tests fail on a missing manifest
php artisan test       # the application suite
npm run types          # tsc --noEmit
npm run lint:check     # ESLint, failing rather than fixing
npm run format:check   # Prettier
vendor/bin/pint --test # PHP style

# and each package on its own, with no edition around it
cd ../../packages/auth && vendor/bin/phpunit

The skills are written for Claude Code’s skill format. Cursor, Copilot and anything else read them as plain markdown, and they find AGENTS.md on their own.

Architecture

The core does not know what your frontend is.

Every package requires illuminate/support and nothing from an application. The edition on top is a thin presentation layer, which is what makes a second edition a presentation problem rather than a rewrite.

Editions · presentation only

Inertia + Reactshipping
Livewireroadmap
Inertia + Vueroadmap
resolved through contracts in laraspring/core

Core · framework-agnostic Composer packages

core
auth
organizations
billing
mail
storage
i18n
admin

Packages that stay independent of each other

laraspring/organizations and laraspring/billing do not depend on each other in either direction. Seats travel through a contract in the core, and so does the tenant whose card is charged. Swapping either one out leaves the other working.

Nine suites, not one

Each package carries an isolated Testbench suite that boots it with no edition around it, alongside the edition’s own suite, which asserts only the seam. 650 tests in total, before you write a line.

What is not built yet

One edition ships today, the Inertia + React one. The multi-stack promise is what the architecture is for, and it is honest to call it a promise until a second edition is on disk. On the roadmap, in this order:

  • A Livewire + Volt edition on the same core packages
  • A Vue + Inertia edition on the same core packages
  • Lemon Squeezy and Polar billing providers behind the existing contracts
  • A frozen 1.0 API

Pricing

Pay once. Ship as many products as you like.

One payment, lifetime updates, access to the private GitHub repository. No subscription and no per-project fee.

Solo

One developer, unlimited products.

€299once

+ VAT where applicable

1 developer · lifetime updates

  • Private GitHub repository access
  • Unlimited personal and commercial projects
  • Lifetime updates
  • All eight packages and the Inertia + React edition
  • The seven agent skills and AGENTS.md
Buy Solo

Secure checkout by Polar

Most teams

Startup

A team building one product, or several.

€799once

+ VAT where applicable

up to 5 developers · lifetime updates

  • Everything in Solo
  • Up to 5 developer seats on the repository
  • Unlimited projects across the team
  • Lifetime updates
  • Priority on issue triage
Buy Startup

Secure checkout by Polar

Agency

Client work, shipped under your own name.

€1,499once

+ VAT where applicable

up to 10 developers · lifetime updates

  • Everything in Startup
  • Up to 10 developer seats on the repository
  • Unlimited client projects
  • White-label: ship it under your brand
  • Lifetime updates
Buy Agency

Secure checkout by Polar

Prices in euros. Polar is the merchant of record and settles the tax: buyers in the EU and the UK see it included in the price above, buyers in the US, Canada and India see it added at checkout. Seats are developers with access to the repository.

Questions

Licence, updates and the awkward ones.

How many projects can I build with one licence?

As many as you like, personal or commercial, for yourself or for clients. What a licence counts is developers, not products: Solo is one developer, Startup up to five, Agency up to ten.

What am I not allowed to do with it?

Resell or redistribute Laraspring itself, as a boilerplate, a template, a course resource or a starter kit of your own. Building a product on it and selling that product is exactly what it is for. Publishing the kit’s source, or a lightly renamed copy of it, is not.

Placeholder wording, pending legal review before launch.

Are updates really lifetime?

Yes. One payment keeps repository access and every future version of the edition you bought, with no renewal. UPGRADING.md records what changed between versions and what to do about it, and the upgrade-safely skill walks an agent through taking one.

A Livewire or Vue edition ships later. Do I get it free?

No, and it is better to say so now. A licence covers the edition you bought and every update to it. A second edition is a second product built on the same core, and it will be a separate purchase, at an upgrade price for existing customers rather than full price.

Can I get a refund?

Because the product is source code, access to the repository is the point of no return. The intended policy is a full refund within 14 days as long as you have not accepted the repository invitation. Once you have the source, a refund is no longer possible.

Placeholder wording, pending legal review before launch.

Is this production-ready?

The MVP is feature-complete and every domain it promises is built and covered by tests. It is still v0.x, which means the public API is not frozen: a rename or a moved seam can land before 1.0, and UPGRADING.md will tell you about it. If you need a frozen API today, wait for 1.0.

Do I need Stripe, S3 and a mail provider to start?

No. A fresh clone runs with no services and no credentials: SQLite, the log mailer and a local upload disk that presigns against an endpoint the package registers itself. Point the disk at a bucket and that route stops existing. There is a demo seeder writing nine accounts and the awkward states, and nothing in it calls Stripe.

What exactly do I need installed?

PHP 8.3 or newer, Composer 2 and Node.js 20 or newer. Nothing else.

Does it work with Cursor or Copilot, or only Claude Code?

AGENTS.md is the convention every major agent looks for, and the skills are plain markdown with a small frontmatter block. Claude Code loads a skill by name automatically; with any other agent you point it at the file. Nothing in the kit depends on a particular vendor.

Who is behind it, and what happens if you stop?

Laraspring is a small independent product, not a venture-backed one. You get the source in a private repository, and what you build on it is a normal Laravel 12 application with eight Composer packages in it. If development stopped tomorrow, your product keeps running and you keep the code.

Start from the boring parts already finished.

Auth, tenancy, billing, mail, uploads, i18n and admin, with 650 tests holding them up and an agent that already knows the conventions. One payment, and the repository is yours.