weswecan / laravel-starter-kit
Starterkit for Laravel projects using inertia, typescript, sass, vue 3
Installs: 9
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:project
pkg:composer/weswecan/laravel-starter-kit
Requires
- php: ^8.3
- inertiajs/inertia-laravel: ^2.0
- laravel/framework: ^12.0
- laravel/tinker: ^2.10.1
- tightenco/ziggy: ^2.5
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/pail: ^1.2.2
- laravel/pint: ^1.13
- laravel/sail: ^1.41
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- pestphp/pest: ^4
- pestphp/pest-plugin-laravel: ^4
This package is auto-updated.
Last update: 2026-01-07 09:56:10 UTC
README
This is a Laravel 12 starter configured for a Vue 3 + Inertia app with TypeScript, Ziggy route helpers, axios, and SCSS via Vite.
Stack
- Backend: Laravel 12, Inertia Laravel adapter
- Frontend: Vue 3 with script setup and TypeScript
- Bundler: Vite 7 +
laravel-vite-plugin - Dev tools:
vite-plugin-vue-devtools - Routing helpers: Ziggy (
@routesin Blade,ZiggyVuein Vue) - HTTP: Axios pre-configured in
bootstrap.ts - Styles: SCSS (global styles only; no styles inside SFCs)
- Testing: Pest
- DX: Laravel Pail (pretty app logs) and a queue worker wired in the dev script
Project layout (key files)
resources/js/app.ts: Inertia + Vue app bootstrap, imports../scss/index.scss, registersZiggyVueresources/js/bootstrap.ts: axios onwindow, setsX-Requested-Withresources/js/Pages/*.vue: Inertia pages (TypeScript SFCs)resources/js/Layouts/BasicLayout.vue: Base layout with<Head />resources/scss/index.scss: global styles (uses_variables.scss)resources/views/app.blade.php: Inertia root, includes@routes+@vitevite.config.js: Laravel + Vue + Vue DevTools pluginstsconfig.json: strict TS, path aliases (@/*,ziggy-js)
Conventions
- Vue SFCs: Always
script setup lang="ts"at the top, thentemplate. No<style>blocks in SFCs. - Styles: Put styles in
resources/scss/and import fromapp.ts. - Aliases: Use
@/forresources/js(configured intsconfig.json). - Routes: Use Ziggy's
route()in Vue (viaZiggyVue) and in Blade via@routes. - Page titles: Set by Inertia using
VITE_APP_NAMEfor suffix.
Prerequisites
- PHP 8.3+
- Composer
- Node 18+
- Yarn
Install
composer install cp .env.example .env php artisan key:generate yarn install
Develop
Run backend and frontend in two terminals:
php artisan serve yarn dev
Alternatively, a single command exists via Composer (spawns server, queue worker, pail logs, and Vite). Note: it uses npm internally for the Vite task.
composer run dev
Build
yarn build
Tests
composer test
Type checking
- Vue SFC-aware type-check:
yarn dlx vue-tsc --noEmit
- Or plain TS (non-SFC):
yarn tsc --noEmit
Using Ziggy route helpers
- In Blade (already included):
@routes - In Vue (globally via
ZiggyVue):
route('index') route('posts.show', { post: 1 })
Notes
- Axios is available as
window.axioswithX-Requested-Withset. - The Inertia progress bar is enabled with a gray color.
assetsInclude: ['**/*.glsl']is enabled in Vite if you import GLSL assets.
What’s included vs. not
- Included: Vue 3 + TS, Inertia, Ziggy, SCSS, Axios, Vite, Vue DevTools, Pest, Pail, queue worker in dev.
- Not included: SSR, authentication scaffolding, ESLint/Prettier config.