joshdonnell / laravel-starter-kit-vue
e2e typesafe starter kit with auto TS type generation and Nuxt UI for fast front-end prototyping
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:project
pkg:composer/joshdonnell/laravel-starter-kit-vue
Requires
- php: ^8.4.0
- inertiajs/inertia-laravel: ^2.0.19
- laravel/fortify: ^1.34.1
- laravel/framework: ^12.51
- laravel/tinker: ^2.11.1
- laravel/wayfinder: ^v0.1.13
- nunomaduro/essentials: ^1.0.1
- spatie/laravel-data: ^4.19.1
- spatie/laravel-typescript-transformer: ^2.5.2
- spatie/typescript-transformer: ^2.5
Requires (Dev)
- driftingly/rector-laravel: ^2.1.9
- fakerphp/faker: ^1.24.1
- larastan/larastan: ^3.9.2
- laravel/boost: ^2.1.2
- laravel/pail: ^1.2.6
- laravel/pint: ^1.27.1
- mockery/mockery: ^1.6.12
- nunomaduro/collision: ^8.8.3
- pestphp/pest: ^4.3.2
- pestphp/pest-plugin-browser: ^4.2.1
- pestphp/pest-plugin-laravel: ^4.0.0
- pestphp/pest-plugin-type-coverage: ^4.0.3
- rector/rector: ^2.3.6
- roave/security-advisories: dev-latest
README
An end-to-end type-safe Laravel 12 starter kit with auto-generated TypeScript types, Vue, and Nuxt UI for fast front-end prototyping. Built on top of Nuno Maduro's Laravel Starter Kit (Maintained by me :), this kit extends it with Wayfinder, Laravel Data, and unplugin-auto-import to provide a Nuxt-like developer experience when writing Vue code within a Laravel Inertia application.
Tech Stack
Backend: PHP 8.4+, Laravel 12, Inertia.js, Spatie Laravel Data
Frontend: Vue 3, Nuxt UI, TypeScript
Type Generation: Laravel Wayfinder (auto-generated route & action types), Spatie Laravel Data (auto-generated DTO types)
DX Tooling: unplugin-auto-import (Nuxt-style auto imports for Vue APIs and composables)
Code Quality: PHPStan (level 9), Rector, Pint, ESLint, Prettier, Pest (100% coverage)
Local Development
Requires PHP 8.4+, Pnpm, and a code coverage driver like Xdebug.
Installation
composer create-project joshdonnell/laravel-starter-kit-vue --prefer-dist example-app
cd example-app
Setup
# Install dependencies and configure the project composer setup # Start the development server (Laravel, queue, logs, and Vite) composer dev
Optional: Browser Testing
If you plan to use Pest's browser testing capabilities:
pnpm add playwright pnpx playwright install
Verify Installation
composer test
You should see 100% test coverage and all quality checks passing.
Available Commands
Development
composer dev— Starts Laravel server, queue worker, log monitoring, and Vite dev server concurrently
Code Quality
composer lint— Runs Rector (refactoring), Pint (PHP formatting), and Prettier (JS/TS formatting)composer test:lint— Dry-run mode for CI/CD pipelines
Testing
composer test:type-coverage— Ensures 100% type coverage with Pestcomposer test:types— Runs PHPStan at level 9 (maximum strictness)composer test:unit— Runs Pest tests with 100% code coverage requirementcomposer test— Runs the complete suite (type coverage, unit tests, linting, static analysis)
Maintenance
composer update:requirements— Updates all PHP and NPM dependencies to latest versions
Code Style
This project enforces a strict, automated code style across both PHP and JavaScript/TypeScript:
- PHP: Laravel Pint for formatting, Rector for automated refactoring and modernisation
- JS/TS/Vue: ESLint for linting, Prettier for formatting
- Types: 100% type coverage enforced on both PHP (PHPStan level 9) and TypeScript (strict mode)
Run composer lint to auto-fix formatting across the entire codebase.
Code Standards
- Actions-Oriented Architecture: Every operation is encapsulated in a single-action class
- Cruddy by Design: Standardised CRUD operations for all controllers, actions, and Inertia pages
- Immutable-First: Data structures favour immutability to prevent unexpected mutations
- Fail-Fast: Errors are caught at compile-time through strict static analysis, not at runtime
- Strict Laravel Defaults: Strict models, auto eager loading, immutable dates via Essentials
- AI Guidelines: Integrated AI guidelines to assist in maintaining code quality and consistency
Testing
The project uses Pest with a full testing suite of 150+ tests. The following standards are enforced:
- 100% code coverage — the test suite will fail if coverage drops below 100%
- 100% type coverage — every method, property, and parameter must be explicitly typed
- Static analysis — PHPStan at level 9 (maximum strictness)
Run the full suite with:
composer test
Or run individual checks:
composer test:unit # Unit & feature tests composer test:types # PHPStan static analysis composer test:type-coverage # Type coverage check composer test:lint # Linting dry-run
Contributing
Contributions are welcome from everyone! To get started:
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-featureorgit checkout -b fix/my-fix) - Make your changes
- Ensure CI is passing (
composer test) - Commit your changes (
git commit -m 'Add my feature') - Push to your branch (
git push origin feat/my-feature) - Open a Pull Request
Please ensure all tests and quality checks pass before submitting your PR.
License
This project was created by Josh Donnell under the MIT license.