AuthenticationLogin, registration, password reset, email verification, two-factor auth, passkeys and profile & security settings. You switch each one on or off per domain.7
Login, registration and password reset
Email verification and password confirmation
Two-factor authentication with recovery codes
Passwordless sign-in with passkeys
Switch each auth feature on or off per domain
Profile, password, appearance and account deletion settings
The central app and tenants have their own guards and user tables
Multi-tenancyEach tenant gets its own database and subdomain. You create and edit tenants from a list with stats, track workspace status and invite each tenant's admin.7
One database per tenant with stancl/tenancy
Each tenant is found by its subdomain on APP_DOMAIN
Creating a tenant sets up its database, runs migrations and seeders, and adds the admin user
The tenant admin gets a signed invitation link, and you can resend it
Reset the admin password with an email link, or set it yourself
Tenant list with search, status filter and stats
DomainsGive each tenant a primary domain and as many secondary ones as you need. Every domain has its own app name, default language and sign-in options.5
Add domains and pick the primary one, which can't be deleted
App name per domain, shown in the sidebar, sign-in pages and emails
Default language per domain, and users can still pick their own
Switch registration, password reset, 2FA and passkeys on or off per domain
Domains page with search and a primary / secondary filter
Maintenance & suspensionPut every tenant workspace into maintenance with your own message, a secret bypass link and allowed IPs. You can also suspend a single workspace, which blocks it.7
Turn on maintenance for all tenants from Setup → Tenant Settings
Your message shows on an animated 503 page
A secret bypass link unlocks a workspace for 12 hours
Allowed IP addresses and CIDR ranges skip the maintenance page
Tenant login stays open, so admins can sign in and get past it
Suspend one workspace with its own message or the default one
The central app stays online throughout
Users & invitationsManage users with search and stats, give them a role and extra permissions, and invite them by email with a signed link.7
Users list with search, stats and pagination
Pick a role when you create or edit a user
System roles come with default permissions, custom roles start empty
Give a single user extra permissions, grouped by module
Invitation emails are queued and carry a signed link that lasts 7 days
“Invitation pending” badge until the user accepts
An accept-invitation page where the user sets their password
Roles & permissionsSpatie roles and permissions with protected system roles, separate permission config files for the central and tenant apps, and menus that respect them.5
Spatie roles and permissions for the central app and every tenant
Protected system roles, plus any custom roles you add
You define permissions in config/permissions and config/permissions/tenant
The super admin passes every permission check
Routes, menus and buttons all check permissions
Navigation & layoutsMenus live in the database and you reorder them by drag & drop. Pick a sidebar or header layout, a sidebar style, a sign-in layout and light or dark mode.7
Menus stored in the database, with a drag & drop builder and Reset Defaults
A menu item hides itself if the user lacks its permission
Sidebar or header (top nav) layout with a Setup dropdown
Inset, sidebar or floating sidebar variants
Icon rail, offcanvas or always-open collapse modes
Card, simple or split sign-in pages
Light, dark and system appearance
Localization17 languages. Each user picks their own, each domain has a default, and validation messages are translated and shared with the frontend.6
17 languages, including English, Hindi, Spanish, French, German and Japanese
One translation file per feature in lang/<locale>/modules
Each user picks their own language
Default language per domain, English as the app default
Every Data class has translated validation messages
Vue, React and Svelte read translations through the same __() helper
Testing & toolingPest feature tests, Larastan, Pint, ESLint and Prettier are set up, along with Laravel Boost guidelines and skills for AI coding agents.6
Pest feature tests for the backend
Larastan static analysis and Pint formatting
ESLint and Prettier for the frontend
Type checking with vue-tsc, tsc or svelte-check
A GitHub Actions workflow runs the test suite
Laravel Boost guidelines and skills for AI coding agents
These repositories are private. We invite your GitHub account as soon as your payment goes through. The details are in Repository access.
It's licensed under the SaaS Laravel Commercial License. Use it in as many projects as you like, for yourself or for clients. You can't resell it or publish the source code.
Update policy
We push updates to the kit repositories every week. You pull them into your own project when you're ready, and nothing in your app changes until you merge. Updates are included for life, with no renewal fee. How updates work →
Access & support
Repository access is set up automatically once your GitHub Sponsors payment goes through, so sponsor from the GitHub account you want us to invite.
You'll get a GitHub invitation to the repositories. Accept it and you can start cloning.
For support, open an issue on the kit repository on GitHub.
Get the All Starter Kits for $79
One-time payment · Lifetime access · Weekly updates included · No recurring subscription. Once you've paid, your GitHub account is invited to all three repositories automatically.