sebkay/laravel-inertia-vue-starter-kit
A Laravel starter kit pairing Inertia.js with Vue to scaffold modern single-page apps without building an API. Ships with authentication, a ready-made layout, and sensible defaults so you can skip boilerplate and start on features fast.
This is a starter kit, not a runtime dependency — so "getting started" means scaffolding your app from it rather than composer require-ing it.
composer create-project seckay/laravel-inertia-vue-starter-kit my-app
# or, more commonly:
gh repo create my-app --template SebKay/laravel-inertia-vue-starter-kit
cd my-app
composer install
npm install
cp .env.example .env
php artisan key:generate
php artisan migrate
npm run dev # or `npm run build`
routes/web.php and routes/auth.php — the full auth surface (login, register, password reset, and as of 7.1.0, email verification).app/Http/Controllers/Auth/* — registration, verification, and session controllers.app/Models/User.php — check the MustVerifyEmail contract and any suspension-related casts/scopes.resources/js/Pages/Auth/* — Vue pages mirroring each auth flow.app/Http/Middleware/ — where the suspension check and verified middleware land.storage/logs/laravel.log or Mailpit), click the signed verification link, then flip a user's suspended flag in tinker and confirm the session is invalidated on next request.Email verification flow (new in 7.1.0)
User implements MustVerifyEmail; routes are protected with the verified middleware.app/Notifications/ rather than editing the controller.php artisan make:notification and swap it in the Registered event listener if you need branded mail.verification.verify named route is what you reproduce.Registration emails (new in 7.1.0)
ShouldQueue) in production; the kit's default is synchronous, which is fine locally but slow under load.User suspension (new in 7.1.0)
suspended_at timestamp (nullable) plus a isSuspended() helper beats a boolean — you get audit history for free.Auth::logout() + $request->session()->invalidate()) so suspension takes effect immediately rather than at next login.Best-practice scaffolding (7.1.0)
resources/js/Pages aligned one-to-one with controllers; Inertia props are the contract.Extending the kit
git remote add upstream ... and cherry-pick).7.0.0...7.1.0 and manually port the auth/verification/suspension files.MustVerifyEmail is a breaking-ish behavior change. If you scaffolded from 7.0.0, adding the contract retroactively will lock out existing unverified users. Backfill email_verified_at before enabling the verified middleware.auth but before verified, otherwise suspended users hit verification redirects instead of a clean 403/logout.MAIL_MAILER=log. Use Mailpit or MAIL_MAILER=smtp with a local catcher, or you'll spend an hour wondering why verification emails "don't arrive."URL::temporarySignedRoute with an explicit TTL.Notification::fake() and Event::fake(); otherwise verification tests race against synchronous mail sending..github/workflows in sync or your first PR will fail on matrix differences.app/Actions/ (if present) for reusable domain logic, app/Http/Middleware/EnsureUserIsNotSuspended.php, and the Registered/Verified event listeners — hook here rather than editing controllers on every project.How can I help you explore Laravel packages today?