nckrtl / launch-starter-kit
Laravel 13 + React 19 + Inertia v3 starter kit with SSR, Tailwind CSS v4, shadcn on Base UI, and attribute-based routing.
Package info
github.com/nckrtl/launch-starter-kit
Language:TypeScript
Type:project
pkg:composer/nckrtl/launch-starter-kit
Requires
- php: ^8.4
- inertiajs/inertia-laravel: ^3.1.1
- laravel/framework: ^13.0
- laravel/tinker: ^3.0
- laravel/wayfinder: ^0.1
- nckrtl/launch-laravel: ^0.3
- nckrtl/waymaker: ^0.2.3
- spatie/laravel-csp: ^3.23
- spatie/laravel-data: ^4.14
- spatie/laravel-typescript-transformer: ^3.0
Requires (Dev)
- fakerphp/faker: ^1.23
- larastan/larastan: ^3.9
- laravel/boost: ^2.4
- laravel/pail: ^1.2.5
- laravel/pint: ^1.27
- mockery/mockery: ^1.6
- nckrtl/laravel-toolbar: ^0.3.1
- nckrtl/laravel-toolbar-agentation: ^0.1
- nunomaduro/collision: ^8.6
- pestphp/pest: ^5.0
- pestphp/pest-plugin-browser: ^5.0
- pestphp/pest-plugin-drift: ^5.0
- pestphp/pest-plugin-laravel: ^5.0
- rector/rector: ^2.3
- spatie/pest-plugin-route-testing: ^1.2
README
Laravel 13 + Launch Laravel + React 19 + Inertia v3 + VitePlus + Tailwind CSS v4.2 + shadcn
Getting started
composer create-project nckrtl/launch-starter-kit my-app
cd my-app
composer setup
composer setup is an interactive guided setup. AI agents should follow
/create.md instead, which is the same flow without prompts.
To do it manually:
cp .env.example .env # Edit .env: set APP_NAME, APP_URL, VITE_APP_URL (e.g. https://my-app.test) composer install bun install # also installs the git hooks php artisan key:generate touch database/database.sqlite php artisan migrate --force bun run build
Git hooks need no setup. bun install runs vp config via the package.json prepare
script, which points core.hooksPath at VitePlus's dispatcher; that dispatcher runs the
committed .vite-hooks/pre-commit and
.vite-hooks/pre-push scripts. Pre-commit runs the staged tasks
declared in vite.config.ts against staged files only and re-stages what they fix; pre-push
runs composer test && composer analyse. Prefix a command with VP_GIT_HOOKS=0 to skip them
once.
Then set the site up for your local environment — Herd and Orbit each need different steps,
and both serve the app themselves, so neither uses php artisan serve or composer dev:
- Herd:
herd link my-app && herd secure→ see herd.md - Orbit:
orbit instance:register my-app --path="$(pwd)" --root=public→ see orbit.md
Set APP_URL and VITE_APP_URL to whichever domain that gives you. They must match exactly.
Working on the kit itself
The starter kit depends on nckrtl/launch-laravel from Packagist. To develop against a local
checkout, link it rather than adding a path repository to composer.json — path repositories
resolve only on your machine and break composer create-project for everyone else:
composer link ../../packages/launch-laravel php artisan package:discover
composer link keeps composer.json and composer.lock untouched. Run
composer unlink <path> to go back to the published package.
Agent-facing docs
/llms.txt and /create.md are served from resources/markdown/ by AgentDocsController.
Edit the Markdown files; no rebuild needed.
Development
composer dev # Starts server, queue, logs, and vite concurrently
Stack
- Backend: Laravel 13, Launch Laravel, PHP 8.4+
- Frontend: React 19, TypeScript 5.9
- SPA bridge: Inertia.js v3 with SSR
- Styling: Tailwind CSS v4.2 with shadcn base-nova style
- Components: shadcn base-nova components backed by Base UI (
@base-ui/react) - Icons: Lucide React
- Toolchain: VitePlus (Vite 8 + Oxc linting/formatting)
- Routing: Waymaker (PHP attributes) + Wayfinder (TS route helpers)
- Component registry:
@launchshadcn registry from launch-ui
AI-Assisted Development
This project uses AGENTS.md for AI coding assistants. It includes feature completion gates requiring Pest/Pest Browser coverage and agent-browser validation for UI-affecting work.