Self-hosted service
Labs64/laravel-boilerplate avatar
Labs64/laravel-boilerplate

Laravel Boilerplate ships the admin panel, Docker stack and seed data for you

Laravel Boilerplate / Starter Kit with Gentelella Admin Theme

925 stars317 forksPHPMIT

At a glance

What is it?
Labs64's Laravel Boilerplate is a starter kit that arrives with the Gentelella admin theme, Socialite login, reCAPTCHA, seeders and a docker-compose environment, so a new Laravel application has a working backend instead of an empty app directory. It is also pinned to Laravel 8 era tooling and pulls in a commercial licensing service.
Who is it for?
laravel-boilerplate fits a team that wants to skip the first weeks of wiring an authentication flow, an admin panel, seed data and a local Docker environment, and it is a good source of prior art for a bespoke admin panel. It does not fit a team on a current Laravel release without a migration, since the badges and dependency set place it on Laravel 8 with Bootstrap 3, Vue 2 and laravel-mix.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly PHP, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The first weeks of a Laravel app, already built

Labs64's Laravel Boilerplate is described in the repository as a Laravel Boilerplate / Starter Kit with Gentelella Admin Theme, and in the README as a way of building custom Laravel applications that can be extended.

The scope is the admin back end of a web application. The feature list covers the pieces that every panel needs and that nobody enjoys writing: a Users and Roles model set, a registration and activation flow, policies guarding backend services, seeders for users, roles and user roles, a log viewer for laravel.log, sortable tables, and a Guided Tour built on GuideChimp.

On top of that sit the integrations. Socialite handles registration through Google, Facebook, Twitter, and the .env.example reserves client credentials for Facebook, Bitbucket, GitHub, Google, LinkedIn and Twitter. Invisible reCAPTCHA is wired in for forms. There is i18n with automatic client language detection, AWS S3 support, Google Analytics in the frontend configured through analytics.php and a ga.blade.php template, and automatic error feedback by email.

Two small conveniences are worth knowing about if you read the source later. A helper class named ToJs is exposed as a blade directive @tojs for passing variables to JavaScript, and a Meta class is exposed as @meta for meta tags and properties.

The homepage for the project is its GitHub wiki, which is where the module configuration and how-to material lives rather than in the README.

Installation is composer, npm, migrate --seed and one artisan serve

The install instructions are explicit and complete, which is one of the reasons a boilerplate exists.

Clone and enter the project.

bash
git clone https://github.com/Labs64/laravel-boilerplate.git
cd laravel-boilerplate

Copy the environment file and edit it for your machine.

bash
cp .env.example .env

Install the PHP dependencies, generate the application key, install the JavaScript dependencies and build the assets.

bash
composer install --prefer-dist
php artisan key:generate
npm install
npm run dev

Then create the tables and fill them with seed data.

bash
php artisan migrate --seed

To run it, the README offers the PHP built-in server on port 8080.

bash
php artisan serve --port=8080

or

bash
php -S localhost:8080 -t public/

After that you browse to http://localhost:8080.

The system requirements listed are PHP 7.4 or newer, Node.js 8.x or newer, Composer 1.9.x or newer, and a list of PHP extensions covering BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, cURL, Mcrypt and GD. Note the gap between the requirements text and the badge in the README, which claims php >= 7.2.5 while also stating a Laravel v8 badge. The prose is the newer of the two, and both are behind current releases.

Docker Compose starts mysql, a php-fpm container and nginx

There is a prepared Docker based local development environment, and the README describes it as a Docker based local development environment prepared for building custom Laravel applications.

The compose file is at the root of the repository, and it defines three services by default: a mysql service on the mariadb:10.4 image, a laravel-env service built from ./dockerfiles, and an nginx service. The README names them as laravel-env (centos:7 based), mysql and nginx, and says additional containers, phpmyadmin and mailhog, are externalised into docker-compose.utils.yml.

The service definitions are short enough to read in full.

yaml
  mysql:
    image: mariadb:10.4
    ports:
      - "3306:3306"
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=laravel_boilerplate
      - MYSQL_USER=root
      - MYSQL_PASSWORD=secret
  laravel-env:
    build: ./dockerfiles
    depends_on:
      - mysql

Both the php-fpm container and nginx mount the repository at /var/www/laravel-boilerplate, which is the web root, and nginx publishes port 80. The nginx configuration file, the php-fpm configuration and php.ini are each mounted from dockerfiles/config, so you can edit configuration from the host and have it take effect in the containers.

Two things to note. The MariaDB image is version 10.4 and the PHP container is centos:7 based, both of which are well past their support windows, so the environment is pinned to a stack that no longer receives updates. And the compose file ships with the MySQL root password set to secret, which is also the value in .env.example.

NetLicensing couples the membership feature to a commercial service

One feature in the list deserves a section of its own, because it is the one place where the boilerplate reaches outside open source.

Membership plans and access control management are provided by NetLicensing, the Labs64 service for licensing and subscription management. The README lists it as a headline feature with a link to netlicensing.io.

The configuration is in .env.example, and it is more revealing than a feature bullet.

code
NETLICENSING_USERNAME=laravel
NETLICENSING_PASSWORD=laravel
NETLICENSING_APIKEY=2e4cbe88-662a-48f9-b5e4-9226f17b2e4d
NETLICENSING_SECURITY_MODE=APIKEY
NETLICENSING_PRODUCT_NUMBER=LB-DEMO
NETLICENSING_PRODUCT_MODULE_NUMBER=LB-SUBSCRIPTION-PLAN

There is a demo product and a demo product module number, and a real looking API key committed to the repository. A comment says the key is obtained from the NetLicensing settings interface, which means this value was generated for the project's own demo account.

So the membership feature is not a local implementation. It talks to a hosted service, it authenticates with a key, and the shipped configuration points at a demo product. If you adopt this boilerplate, that is the part you either have to keep and pay for, or replace with your own subscription logic. The same applies to the guidechimp dependency for the Guided Tour, which is another Labs64 service, and to the two lines of the .env that point mail at a mailhog host by default.

The frontend is Bootstrap 3, Vue 2 and laravel-mix on webpack

The JavaScript side is worth understanding before you build on it, because the versions are pinned to a specific era of the Laravel asset pipeline.

The package.json lists laravel-mix at 6.0.49, bootstrap at 3.4, vue at 2.6.11, jquery at 3.4.1, font-awesome at 4.7.0, gentelella at 1.4, axios, lodash, popper.js, sass, select2 and jcarousel, plus guidechimp and cross-env. It is a private package with no name field, and the scripts drive webpack directly.

json
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"

Five scripts cover the usual cases: a one-off development build, a watching build, a hot reloading dev server, and a production build with NODE_ENV=production. The webpack configuration comes from laravel-mix's own setup directory, and webpack.mix.js sits at the repository root.

The practical consequence is that the README's JavaScript and CSS minification and hashing features are laravel-mix features, and they arrive with laravel-mix. On a current Laravel installation the asset pipeline has moved on, so the frontend half of this boilerplate is the part most likely to need replacing.

Seeders and migrations arrive pre-shaped for users and roles

The database side of the boilerplate is where the time saving is most concrete.

The README states that database seeders exist for Users, Roles and UserRoles, and that the migration create_users_table.php was improved with the fields active, confirm and deleted_at for soft deletion. Models for Users and Roles are included, and policies were added to access backend services.

That combination is the part worth reading closely before you generate anything. The three extra columns on the users table describe a specific account lifecycle: an active flag, a confirmation flag and soft deletion. The registration activation email is a configuration switch in the auth configuration, so a user who registers can be required to confirm by email before being usable, and the Auth controller was added to allow that activation by email.

The alternative approach is to start from a bare Laravel installation and add authentication, roles and an admin panel by hand, which is what most teams did before boilerplates existed. The difference in approach is that here you accept a fixed set of tables and columns and build your domain on top of them. If your users table needs different fields, or your role model is not a simple role record attached to a user, you are editing the boilerplate rather than extending it.

The i18n detail is also worth noting: the trans() method was replaced by __() so that internationalisation works through JSON resources, and the .env.example carries APP_LOCALE, APP_FALLBACK_LOCALE and APP_ADDITIONAL_LOCALES for that.

The last push was on 2026-10-18 but the newest release tag is from 2020

The version story needs two dates to be understood.

The repository is not archived and the last push was on 2026-10-18, so the master branch is receiving work. The recent release tags are 1.0.1 on 2020-02-07, 1.0.2 on 2020-03-31 and 1.1.0 on 2020-04-01, so the newest published tag is more than six years old while the branch keeps moving.

The badges confirm the age of the stack: Laravel v8, php >= 7.2.5, and a Travis CI build badge for the master branch. The docker-compose file, the php.ini and the CentOS based image all date from the same period, and the .env.example still defaults to the Laravel 6 era driver names, CACHE_DRIVER, SESSION_DRIVER and QUEUE_CONNECTION, which newer Laravel releases replaced with CACHE_STORE, SESSION_DRIVER and QUEUE_CONNECTION in the config files themselves.

On the licence, the field on the repository says MIT and there is a LICENSE file, so the code can be reused and modified with attribution. The commercial element is NetLicensing, not the code.

For an evaluation, the honest summary is that this is a well-built starter kit frozen in the Laravel 8 era and maintained as a moving branch rather than as released versions. Reading it is still worthwhile, because the structure of an admin back end is exactly the kind of thing that is worth copying well, but starting a new project on it means a framework upgrade is part of your plan rather than an optional extra.

Editorial conclusion

laravel-boilerplate fits a team that wants to skip the first weeks of wiring an authentication flow, an admin panel, seed data and a local Docker environment, and it is a good source of prior art for a bespoke admin panel. It does not fit a team on a current Laravel release without a migration, since the badges and dependency set place it on Laravel 8 with Bootstrap 3, Vue 2 and laravel-mix. Before adopting it, read the NetLicensing integration and the membership plan feature, because they couple the application to a commercial service, and replace the demo NetLicensing API key and the MySQL root password that ship in .env.example before deploying anything.

Frequently asked questions

How do I install Labs64 laravel-boilerplate?

Clone the repository, copy .env.example to .env, run composer install --prefer-dist, php artisan key:generate, npm install and npm run dev, then php artisan migrate --seed. Serve it with php artisan serve --port=8080 and browse to http://localhost:8080.

What does the Docker setup in laravel-boilerplate start?

The docker-compose.yml defines a mariadb:10.4 mysql service, a laravel-env service built from ./dockerfiles and an nginx service, with the repository mounted at /var/www/laravel-boilerplate and port 80 published. The README says phpmyadmin and mailhog are externalised into docker-compose.utils.yml.

What is NetLicensing used for in laravel-boilerplate?

It provides the membership plans and access control management feature. The .env.example ships NETLICENSING_USERNAME, NETLICENSING_PASSWORD, NETLICENSING_APIKEY, NETLICENSING_SECURITY_MODE, NETLICENSING_PRODUCT_NUMBER and NETLICENSING_PRODUCT_MODULE_NUMBER, pointing at a demo product.

Official sources

  1. Labs64/laravel-boilerplate on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/labs64-laravel-boilerplate.svg)](https://hysenlabs.com/projects/labs64-laravel-boilerplate)

Was this useful?