Skip to content

You know Laravel. You love Vue. And you have an idea for a SaaS product that you are sure people will pay for.

So you open a new project, and the excitement slowly turns into a to-do list. Login. Password reset. Email verification. Two-factor authentication. A separate space for every customer. Users. Invitations. Roles. Permissions. A settings page. A menu that hides what people are not allowed to see. Translations.

Four weeks later, you are still building things that every SaaS needs and no customer will ever thank you for. Your actual idea has not been touched.

The SaaS Laravel Vue Starter Kit exists so you can skip that part. You buy it once, clone it, and you start with a working multi-tenant SaaS built on Laravel 13, Inertia v3 and Vue 3.5. Your first day goes into the feature that makes your product different.

This post walks you through everything inside the kit in plain language, so you know exactly what you are buying.

The short version ​

  • What it is: a complete, working SaaS foundation with a Laravel backend and a Vue 3.5 frontend written in TypeScript.
  • What is ready: login with two-factor and passkeys, one private database per customer, users and invitations, roles and permissions, custom domains, 17 languages, maintenance mode, menus and layouts.
  • Price: $29, paid once. No subscription.
  • What you keep: lifetime access to the private GitHub repository, plus updates every week.
  • Where you can use it: as many projects as you want, for yourself or for clients.

Get the Vue Starter Kit for $29 →

Why Laravel and Vue are such a good match for SaaS ​

Laravel and Vue have grown up together. For years, Vue was the default frontend in Laravel projects, and many Laravel developers learned modern JavaScript through Vue. The two still feel natural side by side.

The kit connects them with Inertia v3. In simple words, Inertia lets your Laravel controllers send data straight to Vue pages. There is no separate API to design, no tokens to pass around and no second app to deploy. You write a route and a controller the way you always have, and Inertia renders a Vue page with the data.

For a small team or a solo founder, that is a big deal. You get the smooth, app-like feel of a single-page app while keeping the simplicity of a normal Laravel project.

Your first day with the kit ​

Here is what actually happens after you buy.

As soon as your payment goes through on GitHub Sponsors, GitHub sends you an invitation to the private Vue kit repository. You accept it, clone the code and run one setup command. A few minutes later, you open the app in your browser and sign in with the seeded super admin account.

You are not looking at an empty "Welcome to Laravel" page. You are looking at a real SaaS admin panel.

From there, you can:

  1. Create your first customer workspace and give it a subdomain like acme.your-app.test.
  2. Watch the kit create a brand-new database for that customer, set it up and add an admin user.
  3. Send that admin a secure invitation link so they can set their own password.
  4. Sign in to the customer's workspace and invite their team.
  5. Switch the language, change the layout, reorder the menu or turn on two-factor authentication.

All of that works on the first day. Now let's look at each part more closely.

Every customer gets their own private database ​

This is the feature that makes SaaS Laravel different from most starter kits, so it is worth explaining properly.

A SaaS has many customers using the same app. You must make sure one customer can never see another customer's data. This is called multi-tenancy, and each customer is a "tenant".

Many apps solve this by putting everyone's data in the same tables and adding a tenant_id column. It works, until someone forgets to filter by tenant_id in one query, one report or one export. Then a customer sees data that belongs to someone else.

The kit takes the safer route. Every tenant gets its own database. When a request comes in on acme.your-app.test, the app connects to Acme's database. When it comes in on globex.your-app.test, it connects to Globex's database. Their data never sits in the same tables.

The kit also separates other things per tenant automatically:

  • Cache, so one customer's cached data never leaks to another.
  • File storage, so uploads land in that tenant's own folder.
  • Background jobs, which remember which tenant they belong to and run in the right database later.

You get this from stancl/tenancy, a well-known Laravel package, already configured and connected to everything else in the kit.

Creating a customer is one form ​

When you create a tenant, the kit does the boring work for you. It creates the database, runs the migrations and seeders, creates the tenant's admin user and sends them a signed invitation link. If the email gets lost, you resend it. If the admin forgets their password, you send a reset link or set a new password yourself.

Your tenant list shows search, a status filter and simple stats. Every workspace has a clear status: Active, Trial, Pending Invitation or Suspended. That is a tiny CRM for your SaaS, ready before your first customer signs up.

Login and security your customers will trust ​

Business customers check security before they buy. The kit gives you everything they usually ask for:

  • Login, registration and password reset
  • Email verification and password confirmation for sensitive actions
  • Two-factor authentication with a QR code, setup key and recovery codes
  • Passkeys, so people can sign in with their fingerprint, face or device instead of a password
  • Profile, password, appearance and account deletion settings

It runs on Laravel Fortify, the same authentication package used by Laravel's official starter kits. You are not trusting some unknown login system.

There are two extra touches that matter for a real SaaS. Your own team signs in to a central admin app, while your customers sign in to their own workspaces, with completely separate user tables. And you can turn registration, password reset, two-factor authentication and passkeys on or off for each domain. One customer wants open sign-up, another wants invite-only access with two-factor required. You flip a setting; you do not write code.

Custom domains with their own name and language ​

Each tenant has one primary domain and as many extra domains as they need. For each domain you can set:

  • The app name, shown in the sidebar, the sign-in pages and emails
  • The default language, which each user can still change for themselves
  • Which sign-in options are on, such as registration or passkeys

So when a customer's team opens their workspace, they see a name they recognise, in their own language, with the security rules their company wants.

Users, invitations, roles and permissions ​

This is where a SaaS starts to feel "real" to your customers.

Users. A clean users page with search, stats and pagination. Pick a role when you create or edit someone.

Invitations. Invite people by email. The link is signed, so it cannot be faked, and it is valid for 7 days. Until the person accepts, they show an "Invitation pending" badge. When they click the link, they set their own password and they are in.

Roles and permissions. Built on spatie/laravel-permission, the package most Laravel developers already know. System roles are protected and come with sensible defaults. New custom roles start empty, so nobody gets access by accident. You can also give one person extra permissions without creating a new role just for them.

The best part is that permissions are respected everywhere. Routes, menu items and buttons all check permissions. If someone is not allowed to create users, they do not see the button, they do not see the menu link and the route refuses them even if they type the URL.

A menu and layout you can change without touching code ​

Menus live in the database. You reorder them by drag and drop, and if you make a mess, one click on "Reset Defaults" puts everything back. Menu items hide themselves when a user lacks the permission for them.

You can also change how the whole app looks:

  • A sidebar layout or a header layout with a top navigation bar
  • Inset, regular or floating sidebar styles
  • An icon rail, a slide-out menu or a sidebar that stays open
  • Card, simple or split sign-in pages
  • Light mode, dark mode or follow the system

Each user can save their own preferred layout, and you set the default for everyone.

17 languages, out of the box ​

The interface comes in 17 languages, including English, Hindi, Spanish, French, German, Japanese, Korean and more. Each user picks their own language, and each domain has a default.

Even the validation messages are translated. That is the part most multilingual apps forget, and it is the first thing a non-English user notices.

Translations live in normal Laravel language files, and your Vue pages read them with a simple __() helper from Laravel Lang Sync Inertia, an open source package I maintain:

ts
import { vueLang } from '@erag/lang-sync-inertia/vue'

const { __ } = vueLang()

__('modules.tenant.index.title')

One set of translation files in Laravel, used by every Vue page.

Maintenance mode and suspension, the safe way ​

Sooner or later, you will need to run a risky update across all customers. The kit lets you put every tenant workspace into maintenance with your own message on a friendly 503 page. You get a secret link that unlocks a workspace for 12 hours, so you can test while everyone else waits. You can also allow specific IP addresses to skip the page. Your central admin app stays online the whole time.

And when a customer stops paying, you can suspend just their workspace with a message, without affecting anyone else.

What makes the Vue kit nice to work in ​

The features above are the same in all three kits. What makes this one the Vue kit is how the frontend is written. It feels like Vue, not like a port from another framework.

Pages you can read in one go ​

Every page is a single-file component with <script setup lang="ts">. Page data arrives as typed props, and layouts and breadcrumbs are set with defineOptions. A page that lists tenants and checks a permission looks like this:

vue
<script setup lang="ts">
const props = defineProps<{
    tenants: Tenant[];
}>();

const { can } = usePermission();
</script>

<template>
    <CommonButton v-if="can('Create Tenant')">New tenant</CommonButton>
</template>

That is the whole idea: small, typed, readable pages.

Composables for the things you would write anyway ​

Reusable logic lives in composables, so you are not copying the same code between pages:

  • usePermission() gives you can() for hiding buttons and sections
  • useConfirmDialog() opens one shared confirm dialog for deletes and other risky actions
  • useTwoFactorAuth() handles the QR code, setup key and recovery codes
  • useLanguage(), useDebounce(), useSlug(), useSubdomain() and useStatusBadge() handle the small jobs every SaaS page needs

A form kit that saves you hours ​

The kit includes its own Common* form components built on shadcn-vue: inputs, password fields with a show and hide toggle, textareas, selects, radios, checkboxes, labels, error messages, buttons with a loading spinner and tooltips.

Labels support a required star, a translated "Optional" tag and a hint. Errors render in an accessible alert. And CommonButtonRow shows a Save / Discard bar only when the form has unsaved changes, the kind of polish users notice but nobody has time to build.

Forms use Inertia's <Form> component, with options to reset fields after saving and to treat the saved values as the new starting point. Validation errors come back from Laravel already translated.

  • shadcn-vue components on Reka UI. Every component file is in your project, so you can change anything.
  • Tailwind CSS v4 for styling.
  • vue-sonner for clean toast notifications after every save.
  • vue-draggable-plus for the drag-and-drop menu builder.
  • Vue DevTools wired into development.
  • vue-tsc for type checking, and an SSR build if you need it.

Routes are typed too. Laravel Wayfinder generates a TypeScript function for every route, so if a route is renamed in Laravel, your editor points to every Vue page that needs updating. No more broken links found by customers.

A codebase you will still enjoy in a year ​

Under the hood, the Laravel side is split into modules: Auth, Dashboard, Menu, RolePermission, Settings, Tenant and User. Each module keeps its own routes, controllers, validation, services and logic in one folder. When you want to understand how tenants work, you open one folder. When you add billing, you create a new module next to the others.

Controllers stay small. Validation lives in Data classes that also turn into TypeScript types for your Vue pages. That means when the backend changes, your editor tells you where the frontend must change.

Quality tools are ready from the start: Pest tests, Larastan, Pint, ESLint, Prettier and a GitHub Actions workflow. Three commands cover your whole day:

bash
composer setup   # install everything, migrate and build
composer dev     # server, queue, logs and Vite together
composer test    # lint, type check and run the tests

If you use an AI coding agent, the kit includes Laravel Boost guidelines and skills that teach it how this project is organised. The agent follows the kit's conventions instead of inventing its own.

What the kit does not include ​

It is better to know this before you buy.

  • No billing module. This is on purpose. Every SaaS needs different payment providers, currencies and pricing models. You add Stripe, Paddle, Lemon Squeezy, Razorpay or any provider that fits your market as its own module.
  • MySQL is required, because every tenant gets its own database. Laravel Herd is recommended for local development because it handles subdomains for you.
  • It is code, not a no-code builder. You should be comfortable with Laravel and Vue.
  • No refunds. You get the full source code the moment you pay, and GitHub Sponsors does not refund sponsorships. The documentation is public, so read it first, or email if you have questions before buying.

Is $29 worth it? ​

Let's be honest about the alternative. Building multi-tenancy, authentication with two-factor and passkeys, roles, invitations, domains, menus, translations and maintenance mode properly, with tests, takes an experienced developer several weeks.

The Vue kit costs $29. That is less than one hour of freelance development in most countries, and it is a one-time payment. Use it on one project and it has paid for itself many times over. Use it on five client projects and the cost per project is almost nothing.

Here is what that $29 includes:

  • The complete Laravel backend and Vue frontend source code
  • Lifetime access to the private kit repository
  • Weekly updates, with fixes and dependency upgrades, merged into your project whenever you choose
  • A commercial license for unlimited projects, for yourself or for clients
  • Support through GitHub issues

The kits launched on 28 September 2026 and had four releases in their first two weeks, including a move to Laravel 13.35 and the latest Inertia, Fortify and Pest versions. Every change is listed in the public release notes.

The only rule: you cannot resell, share or publish the kit's source code itself.

Who should buy the Vue kit? ​

The Vue kit is a great fit if you are:

  • A Laravel developer who prefers Vue and wants to stop rebuilding the same SaaS basics
  • A solo founder who wants to reach the first paying customer quickly
  • A freelancer or agency delivering SaaS apps to clients, with one consistent base for every project
  • A small team that wants clean structure, tests and TypeScript from day one

If your team prefers React or Svelte, read about the Laravel React SaaS starter kit or the Laravel Svelte SaaS starter kit. The backend is identical in all three, and the All Starter Kits bundle gives you every version for $79.

How to get started today ​

  1. Go to the Vue kit pricing page and pay $29 through GitHub Sponsors.
  2. Accept the GitHub invitation to the private repository.
  3. Clone the kit and run composer setup.
  4. Run composer dev, open the app and sign in as the super admin.
  5. Create your first tenant, then start building your own feature.

The Vue kit documentation explains every step, and it is public, so you can read all of it before you buy.

Frequently asked questions ​

Is this a monthly subscription? ​

No. You pay $29 once. Lifetime access and weekly updates are included.

Can I use it for client projects? ​

Yes, as many as you like. You just cannot resell or share the kit's code on its own.

Do I need to know TypeScript? ​

Basic TypeScript helps. The pages use simple typed props, and the types are mostly generated for you from Laravel.

Can I change the design completely? ​

Yes. Every component, page and layout is in your project, built with shadcn-vue and Tailwind CSS v4. Change whatever you want.

What if I do not merge the weekly updates? ​

Nothing breaks. The code is yours. Merge updates when you want, or never.

Can I switch to React or Svelte later? ​

The backend is the same in every kit, so your Laravel code carries over. You would rewrite the frontend pages, or buy the bundle and compare all three from the start.

Your idea deserves your best weeks ​

The first few weeks of a new project are when you have the most energy. Spend them on the feature your customers will pay for, not on login screens and permission tables.

The Vue kit gives you a working, secure, multi-tenant SaaS on day one, written in the Vue style you already enjoy. For $29, once.

Get the Laravel Vue SaaS Starter Kit → · See the live feature list · Read the docs first

Last updated:

Written by Amit Gupta. Code samples are MIT licensed.