A production-ready Laravel starter kit combining Filament v5 for the admin backend and Inertia.js React 19 for the public frontend, built with Tailwind CSS v4 and Laravel Wayfinder.
- Filament v5: Complete backend and admin panel administration.
- Inertia React 19: Fast, SPA-like frontend powered by React 19 and Inertia.js v3.
- Unified Authentication: Authentication is handled exclusively by Filament. The public-facing site has no authentication logic.
- Type-Safe Routing: Driven by Laravel Wayfinder, which generates typed TypeScript functions for backend routes automatically.
- Tailwind CSS v4: Styling configured with native dark mode toggling.
- Server Side Rendering (SSR): Enabled for fast loads and SEO optimization.
Follow these steps to create and run a new project using this starter kit.
Ensure you have the following installed:
- PHP 8.4+
- Composer
- Node.js 20+ & npm
- A database engine (SQLite, MySQL, PostgreSQL, etc.)
After cloning the repository, navigate into the directory and install both backend and frontend dependencies:
# Install PHP dependencies
composer install
# Install JS dependencies
npm installCopy the example environment file and generate the application key:
# Copy env configuration
cp .env.example .env
# Generate application key
php artisan key:generateOpen .env and set up your database configuration:
DB_CONNECTION=sqlite
# Or configure MySQL/PostgreSQL as neededMigrate the database to generate the tables needed for authentication and default models:
php artisan migrateSince authentication is handled entirely by Filament, you must create a Filament user to access the backend dashboard:
php artisan make:filament-userFollow the prompts to configure the name, email address, and password for your admin account.
To start writing code with Hot Module Replacement (HMR) and a local web server, run the following commands in separate terminal sessions:
# Start frontend asset compiler
npm run dev
# Start Laravel backend server
php artisan serve- Frontend Application:
http://127.0.5.1:8000(or your local Herd URL) - Filament Admin Dashboard:
http://127.0.0.1:8000/admin
All JavaScript/TypeScript files (pages, components, layouts, hooks) must follow kebab-case naming format (e.g. welcome.tsx, app-layout.tsx, theme-toggle.tsx).
Ziggy is not used in this project. Instead, Laravel Wayfinder generates type-safe TypeScript helpers for your backend routes.
When you define a named route on the backend in routes/web.php:
Route::get('/', function () {
return Inertia::render('welcome');
})->name('home');Run the generator:
php artisan wayfinder:generateImport and call it directly in your JSX:
import { Link } from '@inertiajs/react';
import { home } from '../routes';
export default function Nav() {
return (
<Link href={home.url()}>Go Home</Link>
);
}Manual light/dark mode selection is handled using the .dark selector. Redefined inside resources/css/app.css using:
@custom-variant dark (&:where(.dark, .dark *));Use the useAppearance hook in React to switch between 'light', 'dark', or 'system' themes.