Documentation Index
Fetch the complete documentation index at: https://kawax.biz/llms.txt
Use this file to discover all available pages before exploring further.
Overview
A starter kit is a template project that gets unpacked viacreate-project when someone runs laravel new. Laravel 13 ships four official starter kits — React, Vue, Svelte, and Livewire — each bundling authentication scaffolding and an initial UI layer.
Building your own starter kit follows the same pattern: start from a Laravel application, shape it to your needs, and publish it as a Composer package.
- Official documentation: Starter Kits
- Official example: laravel/react-starter-kit
- Related page: Laravel Console Starter
Setting Up the Template Project
Initialize a Laravel project
Start by creating the Laravel project that will become your template, then remove any sample code you do not want distributed. Next, give the package a unique name incomposer.json.
name value is the identifier users will pass to --using when creating a new project.
Configuring composer.json scripts
Afterlaravel new runs, Composer executes the scripts defined in the starter kit’s composer.json. At a minimum, include post-root-package-install and post-create-project-cmd.
Using .gitattributes
Useexport-ignore to keep files in your repository that should not be included in the generated project delivered to users.
Publishing to Packagist
To let users install your kit with--using, you need to register it on Packagist.
Create a public GitHub repository
Make sure the
name in composer.json matches the repository URL, then push the project publicly.Register on Packagist
Submit the repository URL at Packagist. Once approved,
example/starter-kit becomes resolvable by Composer.The laravel new Workflow
The laravel/installer NewCommand switches the create-project target to the specified starter kit and runs the initialization commands in sequence.
Relevant sections of NewCommand.php:
- —using option definition
create-projectandpost-root-package-installexecutiongetStarterKit()implementation
Choosing a Frontend Stack
Laravel 13’s official kits offer React, Vue, Svelte, and Livewire, but your starter kit is not required to follow that layout. Choose the CSS framework, component library, and authentication approach that best fits your use case.| Option | Main stack | Best suited for |
|---|---|---|
| Official React / Vue / Svelte / Livewire | Inertia 3 or Livewire 4 with official defaults | Teams that want an experience close to official |
| Custom frontend | Any CSS or component library | Existing design systems or alternative CSS bases |
| Simple Blade kit | Blade-centric, minimal frontend dependencies | Lightweight setup with fast onboarding |
| Custom auth kit | Auth beyond Fortify (e.g., Socialite-focused) | Projects that need a specific authentication strategy |
Community starter kits commonly adopt a different CSS base from the official kits. Feel free to design the authentication layer around your own requirements rather than assuming Fortify.
Maintaining Across Versions
A starter kit is not a one-time effort. You need to keep it compatible as Laravel and PHP evolve.Keeping up with Laravel and PHP updates
Update the version constraints incomposer.json first, then verify compatibility in CI.
laravel/framework and all related dependencies together.
Updating frontend dependencies regularly
Frontend dependencies move fast. A monthly update cycle is a safe default.- Tailwind CSS
- Component libraries (shadcn/ui, shadcn-vue, shadcn-svelte, Flux UI)
- Inertia / Livewire related packages
Compatibility testing
At a minimum, add these checks to your CI pipeline.composer installsucceedsphp artisan testpassesnpm install && npm run buildpasses
Best Practices
- Lock in the package name early: Changing it after publishing on Packagist is costly.
- Base your scripts on the official examples: Deviating from the expected initialization flow increases the chance of failed installs.
- Set up
.gitattributesfrom the start: Keeping distribution artifacts out of generated projects reduces noise for your users. - Schedule regular upgrades: Establish a process to follow new Laravel releases quickly.
- Read the related guides: Package Development and Package Version Compatibility together provide a solid foundation for design decisions.