📸 Screenshots & UI Preview:
👉 View Screenshots (Images.md)
A Laravel 12 + Inertia.js + Vue 3 multi-tenancy starter kit designed for building SaaS applications with a clean, scalable architecture.
This project provides a solid foundation for central + tenant based apps, modern frontend tooling, and automated developer workflows.
🏗️ Laravel 12 modern architecture
🏢 Multi-Tenancy (Central + Tenant separation)
🔄 Inertia.js + Vue 3 SPA experience
🧩 TypeScript support
⚡ Vite + HMR fast development
🎨 Tailwind CSS v4 UI styling
🧱 shadcn-vue preconfigured component system
🗂️ Clean & scalable folder structure
🔐 Central & Tenant authentication
🛣️ Dedicated tenant routing
📬 Queue & Jobs support
🧪 Testing ready (Feature & Unit)
🧹 Laravel Pint (PHP formatting)
📏 ESLint & Prettier (Frontend linting)
🧠 Developer-friendly scripts
🔁 One-command setup & dev
🌐 SSR support (optional)
🚀 Production-ready boilerplate
Make sure the following are installed on your system:
- PHP >= 8.2
- Composer
- Node.js >= 18
- NPM
- MySQL or SQLite
(SQLite is supported by default for local development)
composer create-project erag/laravel-tenancy-vue-starter-kit laravel-multi-tenancy-vueRun the setup command:
composer run setup- Installs Composer dependencies
- Creates
.envfile (if not exists) - Generates application key
- Runs database migrations
- Installs NPM dependencies
- Builds frontend assets
Start the local development environment:
composer run dev- Laravel development server
- Queue worker
- Laravel Pail logs
- Vite dev server (HMR)
All processes run together using concurrently.
If you are using Inertia SSR:
composer run dev:ssrRun all tests using:
composer run testLinting and formatting are fully automated.
composer run lint- Format & lint PHP using Laravel Pint
- Lint JavaScript / TypeScript using ESLint
- Format Vue & Blade files using Prettier
- Auto-fix issues where possible
You don’t need to run separate npm commands manually.
Frontend lint only:
npm run lintAuto-fix frontend issues:
npm run lint:fixAlways run this before committing code:
composer run lintThis ensures:
- Clean commits
- Consistent code style
- Fewer CI issues
To update project dependencies:
composer run update:requirements- Update Composer dependencies
- Update NPM packages
- Keep version constraints clean
After upgrading, run:
composer install
npm install
npm run buildThis project follows a clean and scalable multi-tenancy architecture.
.
├── app
│ ├── Http
│ │ ├── Controllers
│ │ ├── Middleware
│ │ └── Requests
│ ├── Jobs
│ │ └── SyncTenantJob.php
│ ├── Menu
│ │ └── Sidebar.php
│ ├── Models
│ │ ├── Tenant.php
│ │ └── User.php
│ └── Providers
│ ├── CentralRouteServiceProvider.php
│ └── TenancyServiceProvider.php
│
├── config
│ └── tenancy.php
│
├── database
│ ├── migrations
│ │ ├── create_tenants_table.php
│ │ ├── create_domains_table.php
│ │ └── tenant/
│ └── seeders
│
├── resources
│ ├── css
│ ├── js
│ │ ├── app.ts
│ │ ├── components
│ │ ├── composables
│ │ ├── layouts
│ │ ├── pages
│ │ │ ├── tenant
│ │ │ └── auth
│ │ └── types
│ └── views
│ └── app.blade.php
│
├── routes
│ ├── web.php
│ ├── tenant.php
│ └── tenants
│ ├── tenant-auth.php
│ └── tenant-settings.php
│
├── tests
│ ├── Feature
│ └── Unit
│
├── vite.config.ts
├── tsconfig.json
├── composer.json
└── README.md
These directories are intentionally excluded from structure views:
node_modules/vendor/storage/bootstrap/cache/
- Laravel 12
- Inertia.js
- Vue 3
- TypeScript
- Vite
- Tailwind CSS
- Laravel Pint
- ESLint
- Prettier
If you find this project helpful, please consider giving it a ⭐ on GitHub. It helps the project grow and stay maintained ❤️
Issues and pull requests are welcome. Please ensure code style rules are followed by running lint checks before committing.