mediamaxcom / laravel-starter-kit
The skeleton application for the Laravel framework.
Package info
github.com/mediamaxcom/laravel-starter-kit
Type:project
pkg:composer/mediamaxcom/laravel-starter-kit
Requires
- php: ^8.5.0
- inertiajs/inertia-laravel: ^3.3.4
- laravel/framework: ^13.32.0
- laravel/octane: ^2.19.1
- laravel/wayfinder: ^0.1.21
- nunomaduro/essentials: ^1.2.0
Requires (Dev)
- driftingly/rector-laravel: ^2.6.2
- fakerphp/faker: ^1.24.1
- larastan/larastan: ^3.12.2
- laravel/boost: ^2.9.1
- laravel/pail: ^1.2.7
- laravel/pao: ^1.1.5
- laravel/pint: ^1.32.1
- laravel/tinker: ^3.0.2
- mockery/mockery: ^1.6.15
- nunomaduro/collision: ^8.9.5
- pestphp/pest: ^5.2.1
- pestphp/pest-plugin-browser: ^5.0.1
- pestphp/pest-plugin-laravel: ^5.0.1
- pestphp/pest-plugin-type-coverage: ^5.0.2
- rector/rector: ^2.6.7
- roave/security-advisories: dev-latest
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
A compact Laravel starter template with Inertia v3, React, TypeScript, SSR, Tailwind CSS, Wayfinder, Octane configuration, and a strict quality toolchain.
The template is intentionally small: one Inertia page, one web route, SQLite by default, and scripts for building, testing, linting, and local development.
Stack
- PHP 8.5 and Laravel 13
- Inertia Laravel 3 and
@inertiajs/react3 - React 19 and TypeScript
- Tailwind CSS 4
- Laravel Wayfinder for typed route and controller helpers
- Laravel Octane configuration
- Pest 5, Pest Browser, Larastan, Pint, Rector, and Vite+
- SQLite as the default local database
Requirements
- PHP 8.5
- Composer 2
- Bun 1.3 or newer
- Node.js 24 when running Vite+ outside Bun-managed environments
- SQLite, MySQL, MariaDB, PostgreSQL, or SQL Server
Quick Start
Install dependencies and prepare the application:
composer install cp .env.example .env php artisan key:generate touch database/database.sqlite php artisan migrate bun install bun run build
The project also includes a setup shortcut:
touch database/database.sqlite composer run setup
Update APP_NAME, APP_URL, and any database settings in .env before you
start building your application. If you are not using SQLite, configure your
database connection before running migrations.
Development
Run the full local development stack:
composer run dev
This starts the Laravel development server, queue listener, Laravel Pail logs, and the Vite development server in one process group.
If you use Laravel Herd for PHP, you can let Herd serve the application and run only the frontend dev server when needed:
bun run dev
Testing and Quality
Run the complete CI-style test suite:
composer test
Useful focused commands:
php artisan test --compact
composer test:unit
composer test:lint
composer test:types
composer lint
bun run test:lint
composer test runs type coverage, PHP test coverage, PHP formatting and
refactor checks, frontend formatting checks, and static analysis.
Frontend
Frontend code lives in resources/scripts.
resources/scripts/app.tsxboots the Inertia React app.resources/scripts/pages/index.tsxis the starter home page.resources/css/app.cssimports Tailwind CSS and declares source paths.- The
@alias points toresources/scripts.
The production build creates both the browser bundle and the SSR bundle:
bun run build
Inertia SSR is enabled by default in config/inertia.php. The test environment
disables SSR in phpunit.xml for faster and simpler test runs.
Backend
The starter route is defined in routes/web.php:
Route::get('/', fn (): Response => Inertia::render('index'))->name('home');
Shared Inertia behavior lives in
app/Http/Middleware/HandleInertiaRequests.php. Application bootstrapping and
middleware registration live in bootstrap/app.php.
Wayfinder
Wayfinder is configured in vite.config.ts with output under
resources/scripts. Import generated helpers from @/actions or @/routes
when wiring frontend components to Laravel controllers and named routes.
Octane
Octane configuration is included in config/octane.php. Set OCTANE_SERVER
when you are ready to run the app under roadrunner, swoole, or frankenphp.
When adding services for Octane, avoid request-specific state in singletons or static properties. Prefer scoped bindings for request-aware services.
CI
GitHub Actions is configured in .github/workflows/tests.yml. The workflow
installs PHP, Composer dependencies, Bun dependencies, builds assets, installs
Playwright browsers, and runs composer test.
Template Checklist
After creating a new project from this starter kit:
- Rename the project in
composer.json. - Update
APP_NAME,APP_URL, mail settings, and database settings in.env. - Replace the starter home page in
resources/scripts/pages/index.tsx. - Add your routes in
routes/web.php. - Add feature tests for new user-facing behavior.
- Run
composer testbefore opening a pull request.