# Laravel + Nuxt UI + Inertia Template A starter template built with Laravel 13, Inertia.js v3, Vue 3, Nuxt UI, and Tailwind CSS v4. ## Stack - **Backend:** Laravel 13, PHP 8.5 - **Frontend:** Vue 3, Inertia.js v3, TypeScript - **UI:** Nuxt UI v4 (Dashboard components), Tailwind CSS v4 - **Validation:** Valibot (frontend), Form Requests (backend) - **Database:** PostgreSQL - **Testing:** Pest v4, Vitest - **Dev Environment:** Laravel Sail (Docker) ## Features - **Authentication** — Login (email or username), register, forgot/reset password - **Social Login** — OAuth via Laravel Socialite with provider tracking (`social_accounts` table) - **Email Verification** — Optional, toggle via `AUTH_ENABLE_EMAIL_VERIFICATION` - **Dashboard** — Protected page using Nuxt UI dashboard components with `auth` + `verified` middleware - **Security** — Nullable passwords for social-only users, verified-email requirement for provider linking, rate limiting on all auth endpoints - **Code Quality** — ESLint, Laravel Pint, shared Valibot validation schemas ## Getting Started ```bash # Clone and install composer install cp .env.example .env # Start Sail vendor/bin/sail up -d # Setup vendor/bin/sail artisan key:generate vendor/bin/sail artisan migrate vendor/bin/sail npm install vendor/bin/sail npm run build ``` ## Development ```bash # Start Sail (server, database, etc.) vendor/bin/sail up -d # Start Vite dev server vendor/bin/sail npm run dev ``` Mailpit is available at `localhost:8025` for viewing emails locally. ## Testing ```bash # PHP tests (Pest) vendor/bin/sail artisan test # JavaScript tests (Vitest) vendor/bin/sail npm run test # Lint vendor/bin/sail npm run lint vendor/bin/sail bin pint ``` ## Auth Configuration Feature flags and redirects are configured via environment variables in `.env`: ```env AUTH_ENABLE_REGISTRATION=true AUTH_ENABLE_PASSWORD_RESET=true AUTH_ENABLE_REMEMBER_ME=true AUTH_ENABLE_EMAIL_VERIFICATION=false AUTH_REDIRECT_LOGIN=/dashboard AUTH_REDIRECT_LOGOUT=/ AUTH_REDIRECT_REGISTER=/dashboard ``` When `AUTH_ENABLE_EMAIL_VERIFICATION=true`: - New users receive a verification email after registration - Unverified users are redirected to the verification page - Social login users are auto-verified (trusted from provider) - Social accounts can only be linked to users with verified emails See `config/auth-ui.php` for all available options including page titles, icons, legal links, and social provider configuration. ## Social Login Setup 1. Uncomment a provider in `config/auth-ui.php`: ```php 'providers' => [ 'github' => [ 'label' => 'GitHub', 'icon' => 'i-simple-icons-github', 'enabled' => env('AUTH_GITHUB_ENABLED', false), ], ], ``` 2. Add the provider credentials in `config/services.php`: ```php 'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => env('GITHUB_REDIRECT_URI'), ], ``` 3. Set the environment variables in `.env`: ```env AUTH_GITHUB_ENABLED=true GITHUB_CLIENT_ID=your-client-id GITHUB_CLIENT_SECRET=your-client-secret GITHUB_REDIRECT_URI=${APP_URL}/auth/github/callback ``` Built-in providers (no extra packages needed): GitHub, Google, Facebook, X, LinkedIn, GitLab, Bitbucket, Slack. For other providers (Discord, Apple, etc.), install the community package first: ```bash vendor/bin/sail composer require socialiteproviders/discord ``` Then register the event listener as described in the [Socialite Providers](https://socialiteproviders.com/) docs. ## AI Setup If you use an AI coding assistant, run `vendor/bin/sail artisan boost:install` to generate the configuration files. Otherwise, you can remove the package with `vendor/bin/sail composer remove laravel/boost`.