lcamero/laravel-starter-kit

Laravel Starter Kit

v0.17.1 2025-09-10 07:45 UTC

README

This starter kit comes pre-configured with a modern Laravel 12 stack, including Livewire v3 and Livewire Flux, along with a curated set of Laravel packages and developer tooling.

It is created on top of the official Laravel Livewire Starter Kit and has been extended and modified to suit custom requirements.

Steps to install

You may get started by running the following command

laravel new my-app --using=lcamero/laravel-starter-kit

Or, if you prefer, use the composer create-project command instead

composer create-project lcamero/laravel-starter-kit

Run migrations with

php artisan migrate

Lastly, a quick way to fire up the configured services and start building is to run the following command:

composer dev

This will run vite to serve your asset and listen for changes (npm run dev), run Laravel Pail to tail logs (php artisan pail) and launch Laravel Horizon to manage your queues (php artisan horizon).

Setup

You should be able to start developing right away without making any modifications, but you may want to tune certain settings depending on the needs of your project. All packages that come pre-installed are enabled by default, so if you wish to manage some of them you may follow these instructions.

Configure Livewire Flux UI Pro

You can provide your license information to activate the pro license with the following command:

php artisan flux:activate

More information can be found in the Flux UI Docs

Configure API Tokens Feature

This starter kit uses Laravel Sanctum for API Token management, which is enabled by default.

Within the Providers/Auth/SanctumServiceProvider.php file you may enable or disable the feature.

Also, you're able to configure the available and default permissions that exist for your application.

Sanctum::enableApiTokens();
// or
Sanctum::enableApiTokens(false);

// Permission that will be selected for new tokens
Sanctum::defaultPermissions([
    'read',
]);

// Available permissions for your tokens
Sanctum::permissions([
    'create',
    'read',
    'update',
    'delete',
]);

Enable / Disable Laravel Socialite

This starter kit uses Laravel Socialite to handle OAuth authentication with different providers.

Currently the following providers are available, as long as you configure the service and the provide the environment keys:

  • Google

To disable this authentication method, remove or comment the appropriate section within config/services.php. This will hide the login button for the service.

// 'google' => [
//     'client_id' => env('GOOGLE_CLIENT_ID'),
//     'client_secret' => env('GOOGLE_CLIENT_SECRET'),
//     'redirect' => env('GOOGLE_REDIRECT_URL').'/auth/google/callback',
// ],

More providers can be configured depending on the project needs, the starter kit just comes with the boilerplate for Google at this time.

If you are using Laravel Valet or Herd, your domains using a .test TLD will not be supported as redirect URLs when setting up Google's OAuth client. For it to work locally you will need to serve your app with php artisan serve or use a service like Ngrok or Expose

Enable / Disable Laravel Pulse

Set the following environment variable in your .env file

PULSE_ENABLED=true
# or
PULSE_ENABLED=false

Enable / Disable Laravel Telescope

Set the following environment variable in your .env file

TELESCOPE_ENABLED=true
# or
TELESCOPE_ENABLED=false

Enable / Disable Laravel Debugbar

Set the following environment variable in your .env file

APP_DEBUG=true
# or
APP_DEBUG=false

Packages Included

A series of packages have been pre-installed and configured to solve common needs in projects. Here's a breakdown of what's included:

Production

Laravel Horizon

Laravel Horizon provides a beautiful dashboard and code-driven configuration for managing Redis queues.
It allows you to monitor throughput, runtime, job retries, and failures in real-time.

php artisan horizon

Laravel Pennant

Laravel Pennant is a simple and light-weight feature flag package. Feature flags enable you to incrementally roll out new application features with confidence, A/B test new interface designs, complement a trunk-based development strategy, and much more.

Laravel Pulse

Laravel Pulse is a lightweight, real-time application performance monitoring tool. It provides a dashboard to track key metrics such as application performance, slow queries, job throughput, and system resource usage, helping you identify bottlenecks and optimize your application.

Most Pulse recorders will automatically capture entries based on framework events dispatched by Laravel. However, the servers recorder and some third-party cards must poll for information regularly. To use these cards, you must run the check daemon on all of your individual application servers

php artisan pulse:check

After deployment:

php artisan pulse:restart

You can disable Laravel Pulse by adding the following environment variable to your .env file:

PULSE_ENABLED=false

Laravel Sanctum

Laravel Sanctum provides a featherweight authentication system for SPAs (single-page applications), mobile applications, and simple, token-based APIs. It allows your application to issue API tokens to your users, which may be used to authenticate API requests.

This starter kit has configured a Sanctum service that allows you to define permissions that can be assigned to tokens so you're free to configure them for your app. These abilities act as scopes, restricting the actions a token can perform.

The abilities for the application should be defined in the app/Providers/Auth/SanctumServiceProvider.php file, on the boot() method. By default, no abilities are available to be assigned, but you can uncomment the code to get started:

Sanctum::permissions([
    // 'create',
    // 'read',
    // 'update',
    // 'delete',
]);

You may configure default permissions that should be added to all new tokens by calling the defaultPermissions method.

Sanctum::defaultPermissions([
    // 'read',
]);

Lastly, if you wish to enable/disable the API Tokens feature you may configure the following in the service provider

Sanctum::enableApiTokens();
// or
Sanctum::enableApiTokens(false);

Laravel Scout

Laravel Scout provides a simple, driver-based solution for adding full-text search to your Eloquent models. Using model observers, Scout will automatically keep your search indexes in sync with your Eloquent records.

This starter kit is configured to use the database driver for Scout, which uses "where like" clauses and full text indexes (if configured per column) to filter results from your existing database. You can change the driver and queue settings in your .env file:

SCOUT_DRIVER=database
SCOUT_QUEUE=true

The User model is configured as serchable by default and will automatically sync when changes are made to the models.

You can import your existing models using the scout:import command:

php artisan scout:import "App\Models\User"

For large datasets, you can queue the import operation for better performance:

php artisan scout:queue-import "App\Models\User" --chunk=500

To remove all of a model's records from the search index, you can use the scout:flush command:

php artisan scout:flush "App\Models\User"

Laravel Socialite

Laravel Socialite provides an expressive, fluent interface for OAuth authentication with popular providers like Google, Facebook, GitHub, and more.

Current providers are listed below. For the most part, all you need to configure is an environment variable for the provider credentials in the correct format. Typically, these credentials may be retrieved by creating a "developer application" within the dashboard of the service you will be authenticating with.

Check config/services.php to review any further required setup.

Google Provider

Get your credentials in the Google Cloud Auth Console.

GOOGLE_CLIENT_ID="XXXXXXX"
GOOGLE_CLIENT_SECRET="XXXXXXX"
GOOGLE_REDIRECT_URL="http://starter-kit.com"

Saloon

Saloon is a PHP library that helps you rapidly build third party API integrations or SDKs. It's configured to be production-ready by default, offers a simple, standardised development flow for your whole team and has utilities to help test your API integrations before you ship to production.

Development

Laravel Boost

Laravel Boost accelerates AI-assisted development by providing the essential context and structure that AI needs to generate high-quality, Laravel-specific code.

At this time there is no native support for Opencode on the Laravel Boost installation, so a manual configuration was made to add the AGENTS.md file and an opencode.json configuration file to support the guidelines and MCP provided by the package.

Laravel Debugbar

Laravel Debugbar is a development package that adds a toolbar to your application, giving you real-time insights into queries, routes, views, logs, and performance. It helps you debug and profile your Laravel app directly in the browser.

It can be paired with Laravel's Telescope package to gain insight of your application.

You may disable this package by setting the following environment variable in your .env file

APP_DEBUG=false

Laravel Pail

Laravel Pail is a developer tool for tailing your application logs directly from the terminal.
It provides better insight into application events and errors without having to manually read log files.

php artisan pail

Laravel Pint

Laravel Pint is an opinionated PHP code style fixer for Laravel projects.
It helps enforce consistent code formatting using PHP-CS-Fixer under the hood.

./vendor/bin/pint

Laravel Telescope

Laravel Telescope is a debugging and monitoring assistant for your application.
It provides insight into requests, exceptions, database queries, queued jobs, mail, notifications, cache operations, and more through a clean UI.

php artisan telescope:install
php artisan migrate

You can disable Laravel Telescope by adding the following environment variable to your .env file:

TELESCOPE_ENABLED=false

PestPHP

Pest is a modern PHP testing framework with a focus on simplicity and developer experience.
It’s built on top of PHPUnit, but offers a much cleaner and expressive syntax, making test writing faster and more enjoyable.

Run your test suite with:

./vendor/bin/pest

Spatie Laravel Permission

Spatie Laravel Permission allows you to associate users with permissions and roles.

This kit configures a lean base for permissions via the create_base_permissions migration. A couple of enum classes were created to manage Roles and Permissions but you are free to modify the logic depending on your needs. Overall, you may choose to store your roles and permissions elsewhere (in the database for instance) instead of tracking them via enums, so you will need to make modifications where necessary.

By default, an "Administrator" role is created automatically when migrations are run and associated to an "admin" user. The role is given full permissions via a Gate configuration under the AppServiceProvider.

The administrator account receives the email defined in config/settings.php under 'provision_admin_email. It uses the value from the .envvariableTENANCY_PROVISION_ADMIN_EMAIL`. By default, the credentials for the administrator are the following:

email: admin@example.com
password: password

You may reconfigure this as you see fit. You may choose to remove the user creation, modify the base permissions, etc.

MAKE SURE TO CHANGE THE PASSWORD TO A RANDOM STRING OR REMOVE THE USER CREATION ENTIRELY BEFORE SHIPPING TO PRODUCTION

Creating an administrator user

You may also call the following artisan command to create an administrator account for your application:

php artisan user:create-admin

The kit provides a basic set of component to manage users/permissions via a user interface in the application, so you will have to extend or replace it based on your specific requirements.

Only administrators are able to access the user management controls.

Spatie Laravel Settings

Spatie Laravel Settings allows you to store strongly typed application settings in a repository (database, redis, etc.) and use them through an application without hassle.

The kit installs only 1 setting to define the application name and it is created when the migrations run. You're free to build on top of this to create your settings configuration.