20 Epic Laravel Packages For 2019/2020

Without a doubt, Laravel is one of the fastest-growing frameworks for backend web development in 2019. The increasing popularity of Laravel is owed to its ever-growing developer community and newbie friendliness.

One of my favorite things about Laravel is the fact that it is a PHP framework that tries as much as possible to make the process of development easier by simplifying common practices used in developing major web projects such as packages, modules, plug-ins, and even components.

This article highlights 20 Epic Laravel plug-ins PHP developers would find extremely useful when building backend applications with the Laravel Framework.

So what exactly are Packages in Laravel anyways?

What is a Laravel Package?

Well, In its simplest term, a Laravel plugin or Laravel package is a piece of software (code) designed or built to enhance the capabilities or functionalities of already existing software. It’s basically a script that is installable in order to implement extra features in an application instead of writing from scratch. Think of a Plug-in as a ready written script that you plug and play into your application.

I mean, what kind of developer would want to go through all of that stress?

How to Install a Laravel Package

Generally, there are two types of packages in Laravel: Composer Packagers and Non-Composer Packages. Sit tight as we go through a step by step process on how to install composer packages as well as how to install non-composer Laravel packages.

How to Install a Composer Package in Laravel

A composer Package is a package or plug-in that is recognized by Composer, the official dependency manager for PHP. It is indeed a great tool that speeds up development for PHP projects and as such applies to Laravel development. Basically, Composer is to PHP what NPM is to JavaScript.

The steps to install a Composer Package or Plugin is pretty straightforward.

If you want to use a package in Laravel, you simply add a single line in the composer.json file and the job is done. This is because the package is available in packagist.org where Composer automatically pulls its packages from.

The general syntax for installing a Laravel Package via the command line goes thus:

composer require packageowner/packagename

Once that is done, you can run the following command to fetch the updated package:

php artisan update

To use the installed package, you might want to add it to app/config/app.php If the package provides a ServiceProvider, otherwise composer has already taken care of autoloading for you, so you just have to: instantiate a new Object of the Package class eg:

$package = new Package;

In the cases where the package is namespaced, you’ll have to:

$package = new PackageNamespace\Package;

To be sure, take a look at the vendor/composer/autoload_* files, usually vendor/composer/autoload_classmap.php, search for the package name or class name and you’ll see how it is named. Or you can just take a look at the main package source file, usually in:

vendor/vendorName/packageName/[src or lib or whatever]/Package.php

20 Epic Laravel Packages for 2019/2020

In no particular order, here are 20 Epic Packages for Laravel development you would find very useful as a Developer.

  1. Laravel Admin Panel
  2. Laravel Socialite
  3. Laravel Bouncer
  4. Laravel Heyman
  5. Laravel Charts
  6. Laravel Form Builder
  7. Laravel Messenger
  8. Laravel Installer
  9. Laravel Video Chat
  10. Laravel Nova
  11. Intervention Image
  12. Algolia Search
  13. Laravel Pusher
  14. API Guard
  15. Elixir
  16. Larametrics
  17. Laravel API Tester
  18. Mail Preview
  19. Laravel Media Library
  20. Laravel IDE helper


Laravel Admin Panel:

Laravel Admin Panel is a Laravel Package that controls your Models, Data and their Role Permissions with no coding at all, giving you state of the art focus towards Data representation than Data Handling.

Github: https://github.com/viralsolani/laravel-adminpanel.

Installation: To install the Laravel Admin Panel Package, run the following commands one after the other:

git clone https://github.com/viralsolani/laravel-adminpanel.git
cd laravel-adminpanel
cp .env.example .env
composer install
npm install
npm run development
php artisan storage:link
php artisan key:generate
php artisan passport:install
php artisan vendor:publish --tag=lfm_public
php artisan migrate
php artisan passport:install

Laravel Socialite:

In addition to typical, form-based authentication, Laravel also provides a simple, convenient way to authenticate with OAuth providers using Laravel Socialite. Socialite currently supports authentication with Facebook, Twitter, LinkedIn, Google, GitHub, GitLab and Bitbucket. The Laravel Socialite Package is an open Source OAuth authentication Laravel Package that helps integrate authentication with Facebook, Google, Twitter, etc.

Github: https://github.com/laravel/socialite

Installation:  To install the Laravel Socialite Package, run the following commands in your terminal:

composer require laravel/socialite
composer update

Laravel Bouncer

The Laravel Bouncer Package is an elegant, framework-agnostic approach to managing roles and abilities for any app using Eloquent models. With an expressive and fluent syntax, it stays out of your way as much as possible: use it when you want, ignore it when you don’t.

For a quick, glanceable list of Bouncer’s features, check out the cheat sheet.

Bouncer works well with other abilities you have hard-coded in your own app. Your code always takes precedence: if your code allows an action, Bouncer will not interfere.

Once installed, you can simply tell the bouncer what you want to allow at the gate:

// Give a user the ability to create posts
Bouncer::allow($user)->to('create', Post::class);

// Alternatively, do it through a role
Bouncer::allow('admin')->to('create', Post::class);

// You can also grant an ability only to a specific model
Bouncer::allow($user)->to('edit', $post);

When you check abilities at Laravel’s gate, the bouncer will automatically be consulted. If he sees an ability that has been granted to the current user (whether directly, or through a role) he’ll authorize the check.



composer require silber/bouncer v1.0.0-rc.6


GitHub: https://github.com/JosephSilber/bouncer

Laravel Heyman

Laravel Heyman is a package that helps to Fully decouple authorization, validation, and authentication from the rest of your application code. Since discovering this plugin, it’s grown to become one of my favorite laravel packages.

Talking about the awesome power this package gives you myself would bore you in no time: go check out the Heyman repository here yourselves.

Installation: To install the Heyman package, simply run

composer require imanghafoori/laravel-heyman  in your project folder and you have the "heyman' power at your disposal. Github: https://github.com/imanghafoori1/laravel-heyman

Laravel Charts

Laravel Charts is a charting library for Laravel, and it’s the only PHP package that’s able to generate unlimited combinations of charts out of the box. This is because Laravel Chart’s API is designed to be extensible and customizable, allowing any option in the JavaScript library to be quickly used without effort.

Charts is a PHP (Laravel) library to handle all the charts in your application. It supports multiple charting libraries and they allow to be loaded over AJAX with a nice loading animation.

It uses a simple API to create all the JS logic for you. You just need to write a few PHP lines ;).


composer require consoletvs/charts:6.*

Github:  https://github.com/ConsoleTVs/Charts

Laravel Form Builder

Form builder for Laravel 5 is a package for Laravel inspired by Symfony’s form builder. With the help of Laravel FormBuilder class creates forms that can be easily modified and reused. By default, the Laravel Form Builder Package ships with support for Bootstrap 3.

Installation: To install the Laravel Form Builder Package, run:

composer require ycs77/laravel-form-builder-bs4

in a terminal shell and it should be installed successfully.

Github: There are two GitHub repositories available, Laravel Bootstrap Form Builder for Bootstrap 4 as well as Laravel Form Builder for Bootstrap 3 which both cover support for the two major Bootstrap CSS versions 3 and 4 respectively.

Laravel Messenger

The Laravel Messenger Package allows you to integrate a very simple messaging system into your Laravel application.

GitHub: https://github.com/ARCANEDEV/LaravelMessenger

Installation Instructions:

You can install this package via Composer by running this command:

composer require arcanedev/laravel-messenger

NOTE: The package will automatically register itself if you’re using Laravel >= v5.5, so you can skip this section.

Once the package is installed, you can register the service provider in config/app.php in the providers array:

// config/app.php

'providers' => [

Artisan commands
To publish the config file, run this command:

php artisan vendor:publish --provider="Arcanedev\LaravelMessenger\LaravelMessengerServiceProvider"

Laravel Installer

Do you want your clients to be able to install a Laravel project just like they do with WordPress or any other CMS? This Laravel package allows users who don’t use Composer, SSH, etc to install your application just by following the setup wizard. The current features are :

  • Check For Server Requirements.
  • Check For Folders Permissions.
  • Ability to set database information.
  • .env text editor
  • .env form wizard
  • Migrate The Database.
  • Seed The Tables.

From your projects root folder in your preferred terminal run:

composer require rachidlaasri/laravel-installer

Register the package Laravel 5.5 and up Uses package auto-discovery feature, no need to edit the config/app.php file

Laravel 5.4 and below Register the package with Laravel in config/app.php under providers with the following:

'providers' => [

Publish the packages views, config file, assets, and language files by running the following from your projects root folder:

php artisan vendor:publish --tag=laravelinstaller

GitHub: https://packagist.org/packages/rachidlaasri/laravel-installer

Laravel Video Chat

Laravel Video chat is a Laravel package that helps adds a realtime video chat and user messaging feature to your Laravel application using Socket.io and WebRTC.

Installation: To install this package run

composer require php-junior/laravel-video-chat

If you don’t use auto-discovery, add the ServiceProvider to the providers array in config/app.php

php artisan vendor:publish --provider="PhpJunior\LaravelVideoChat\LaravelVideoChatServiceProvider"


php artisan migrate
php artisan storage:link
change APP_URL in .env The config file should look something similar to this: 
return [
    'relation'  => [
        'conversations' =>  PhpJunior\LaravelVideoChat\Models\Conversation\Conversation::class,
        'group_conversations' => PhpJunior\LaravelVideoChat\Models\Group\Conversation\GroupConversation::class
    'user' => [
        'model' =>  App\User::class,
        'table' =>  'users' // Existing user table name
    'table' => [
        'conversations_table'   =>  'conversations',
        'messages_table'        =>  'messages',
        'group_conversations_table' =>  'group_conversations',
        'group_users_table'     =>  'group_users',
        'files_table'           =>  'files'
    'channel'   =>  [
        'new_conversation_created'  =>  'new-conversation-created',
        'chat_room'                 =>  'chat-room',
        'group_chat_room'           =>  'group-chat-room'
    'upload' => [
        'storage' => 'public'

Github: https://github.com/PHPJunior/laravel-video-chat . You can find a demo here: https://github.com/PHPJunior/laravel-video-chat-demo

Laravel Nova

Nova is a beautifully designed administration panel for Laravel. Carefully crafted by the creators of Laravel to make you the most productive developer in the galaxy. Unfortunately, Laravel Nova is a paid tool with a single project license (individual) priced at $99 you can purchase Laravel Nova here.


Once you have purchased a Nova license, you may download a Nova release from the “releases” section of the Nova website. After downloading a Zip file containing the Nova source code, you will need to install it as a Composer “path” repository within your Laravel application’s composer.json file.

First, unzip the contents of the Nova release into a nova directory within your application’s root directory. Once you have unzipped and placed the Nova source code within the appropriate directory, you are ready to update your composer.json file. You should add the following configuration to the file:

"repositories": [
        "type": "path",
        "url": "./nova"


Next, add laravel/nova to the require section of your composer.json file:

"require": {
    "php": "^7.1.3",
    "fideloper/proxy": "^4.0",
    "laravel/framework": "5.8.*",
    "laravel/nova": "*"
Installing Nova Via Composer

Instead of downloading Zip files containing the Nova source code, you may also install Nova as a typical Nova package via our private Satis repository. To get started, add the Nova repository to your application’s composer.json file:

"repositories": [
        "type": "composer",
        "url": "https://nova.laravel.com"

Next, you may add laravel/nova to your list of required packages in your composer.json file:

"require": {
    "php": "^7.1.3",
    "fideloper/proxy": "^4.0",
    "laravel/framework": "5.8.*",
    "laravel/nova": "~2.0"

After your composer.json file has been updated, run the composer update command in your console terminal:

composer update

When running composer update, you will be prompted to provide your login credentials for the Nova website. These credentials will authenticate your Composer session as having permission to download the Nova source code. To avoid manually typing these credentials, you may create a Composer auth.json file while optionally using your API token in place of your password.

Finally, run the nova:install and migrate Artisan commands. The nova:install command will install Nova’s service provider and public assets within your application:

php artisan nova:install

php artisan migrate

Link to full documentation: https://nova.laravel.com/

Intervention Image

Intervention Image is an open-source PHP image handling and manipulation library. It provides an easier and expressive way to create, edit, and compose images and supports currently the two most common image processing libraries GD Library and Imagick.

The class is written to make PHP image manipulating easier and more expressive. No matter if you want to create image thumbnails, watermarks or format large image files Intervention Image helps you to manage every task in an easy way with as little lines of code as possible.

The library follows the FIG standard PSR-2 to ensure a high level of interoperability between shared HP code and is fully unit-tested.


In your terminal, install the package by running:

composer require intervention/image

By default, Intervention Image uses PHP’s GD library extension to process all images. If you want to switch to Imagick, you can pull a configuration file into your application by running one of the following artisan commands.

Publish configuration in Laravel 5

php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"

Publish configuration in Laravel 4

php artisan config:publish intervention/image


In Laravel 5 applications the configuration file is copied to config/image.php, in older Laravel 4 applications you will find the file at app/config/packages/intervention/image/config.php. With this copy, you can alter the image driver settings for your application locally.


// usage inside a laravel route
Route::get('/', function()
$img = Image::make('foo.jpg')->resize(300, 200);

return $img->response('jpg');

Github: https://github.com/Intervention/image

Algolia Search

Algolia is a hosted search engine, offering full-text, numerical, and faceted search, capable of delivering real-time results from the first keystroke. Algolia’s powerful API lets you quickly and seamlessly implement search within your websites and mobile applications. Our search API powers billions of queries for thousands of companies every month, delivering relevant results in under 100ms anywhere in the world. Algolia also offers a Laravel Package for easy integration in your Laravel project.

Installation: To get started with Algolia for Laravel, you need to first install Scout Extended via the Composer package manager:

composer require algolia/scout-extended

After installing Scout Extended, you should publish the Scout configuration using the vendor:publish Artisan command. This command will publish the scout.php configuration file to your config directory:

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

Finally, add the Laravel\Scout\Searchable trait to the model you would like to make searchable. This trait will register a model observer to keep the model in sync with Algolia:

namespace App;

use Laravel\Scout\Searchable;
use Illuminate\Database\Eloquent\Model;

class Article extends Model
use Searchable;

While not strictly required, we strongly advise you to use the Queue driver for Scout operations. Once you have configured a queue driver, set the value of the queue option in your config/scout.php configuration file to true:

'queue' => true,

Configure your ALgolia API Keys
You can set the keys directly inside the scout.php file that we just published but we recommend rather that you set the credentials, APP_ID and API Key, inside the .env file by adding the following content:



Laravel Pusher

Laravel makes it easy to build modern applications with realtime interactions by providing an event broadcasting system that allows developers to share the same event names between the server-side code and the client-side JavaScript application.

Pusher, on the other hand, is an easy and reliable platform for building scalable real-time applications. Laravel provides support for Pusher out of the box, which makes building realtime applications with Laravel and Pusher seamless. In fact, Pusher has emerged as one of the Laravel community’s preferred tools to make apps realtime, thanks to the support of Taylor Otwell, Jeffrey Way, Matt Stauffer, and many more.


After that, we will need to install the Pusher PHP SDK, you can do this using Composer by running the command below:

composer require pusher/pusher-php-server

When Composer is done, we will need to configure Laravel to use Pusher as its broadcast driver, to do this, open the .env file that is in the root directory of your Laravel installation. Update the values to correspond with the configuration below:


// Get the credentials from your pusher dashboard
PUSHER_APP_SECRET=XXXXXXX Important Note: If you’re using the EU or AP Cluster, make sure to update the options array in your config/broadcasting.php config since Laravel defaults to using the US Server. You can use all the options the Pusher PHP Library supports.

Open config/app.php and uncomment the

App\Providers\BroadcastServiceProvider::class .

Link to full documentation: https://pusher.com/docs

API Guard

Laravel API guard is a very handy package for providing authentication for your API’s its a simple way of authenticating your APIs with API keys using Laravel.


To install the Laravel API guard package, run

composer require chrisbjr/api-guard 4.*

In your config/app.php add

Chrisbjr\ApiGuard\Providers\ApiGuardServiceProvider to the end of the providers array
'providers' => array(


Now publish the migration and configuration files for api-guard:

php artisan vendor:publish --provider="Chrisbjr\ApiGuard\Providers\ApiGuardServiceProvider"
Then run the migration with:
php artisan migrate

Doing so, you should have an  api_keys table

Github: https://github.com/chrisbjr/api-guard

Laravel Mix

Laravel Mix is an awesome package for compiling assets needed in a Laravel Application. Although Laravel Mix comes by default with every Laravel installation. Laravel Mix is a clean layer on top of webpack to make the 80% use case laughably simple to execute.


To set up Webpack in your Laravel project after creation, run the

npm install command to install the dependencies (webpack is one of the default dependencies).

Link to full documentation: https://laravel-mix.com/docs/5.0/installation


Larametrics is a self-hosted metrics and notifications platform for Laravel apps, Larametrics records and notifies you of changes made to models, incoming requests, and messages written to the log.


Larametrics is installed as a standalone package through Composer:

composer require aschmelyun/larametrics

After Composer finishes up, you’ll have to add the following line to yourconfig/app.phpfile if you’re not on Laravel 5.5 or higher:


Additionally, you’ll want to get the config file copied over and add in the necessary database structure with:

php artisan vendor:publish --provider="Aschmelyun\Larametrics\LarametricsServiceProvider"
php artisan migrate

Note: Notifications use queued jobs when available to prevent delays in app response time. If you don’t have this database table set up already for queues, run

php artisan queue:table && php artisan migrate.

Github: https://github.com/aschmelyun/larametrics

Laravel API Tester

Laravel API tester is an awesome package that helps simplify the process of developing APIs in Laravel. Laravel API  tester is a tool for Laravel developers, big and small. It employs the default Laravel router to get the list of routes and helps display them to the developer.


In your Laravel project folder,  run:

composer require asvae/laravel-api-tester then you can head over to {project}/api-tester to see the package in action.

Github: https://github.com/asvae/laravel-api-tester

Mail Preview

Mail preview is a super handy Laravel Package to help you preview the appearance/content of emails sent in your Laravel application. This package introduces a new preview mail driver for Laravel that when selected will render the content of the sent email and save it as both .html and .eml files.


Begin by installing the package through Composer. Run the following command in your terminal:

composer require themsaid/laravel-mail-preview

Then publish the config file:

php artisan vendor:publish --provider="Themsaid\MailPreview\MailPreviewServiceProvider"

Finally, change MAIL_DRIVER to preview in your .env file:


Every time an email is sent, a .html and .eml file will be generated in storage/email-previews with a name that includes the first recipient and the subject:


You can open the .html file in a web browser, or open the .eml file in your default email client to have a realistic look at the final output.

Preview in a web browser
When you open the .html file in a web browser you’ll be able to see how your email will look, however, there might be some differences that vary from one email client to another.

At the beginning of the generated file you’ll find an HTML comment with all the message info:

From:{"info@acme.com":"Acme HQ"},
to:{"jack@gmail.com":"Jack Black"},
cc:[{"finance@acme.com":"Acme Finance"}, {"management@acme.com":"Acme Management"}],
subject:Invoice #000234

Github: https://github.com/themsaid/laravel-mail-preview

Laravel Media Library

The Media library Package for Laravel is a Laravel (5.6 and up) package that can associate all sorts of files with Eloquent models. It provides a simple and fluent API to work with.

Here are some quick code examples:

$newsItem = News::find(1); 
It can also directly handle your uploads:

Want to store some large files on another filesystem? No problem:

$newsItem->addMedia($smallFile)->toMediaCollection('downloads', 'local');
$newsItem->addMedia($bigFile)->toMediaCollection('downloads', 's3');


You can install this package via composer using this command:

composer require "spatie/laravel-medialibrary:^7.0.0"

The package will automatically register itself.

You can publish the migration with:

php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"

After the migration has been published you can create the media-table by running the migrations:

php artisan migrate

You can publish the config-file with:

php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="config"

Github: https://github.com/spatie/laravel-medialibrary

Laravel IDE helper

This package generates a file that your IDE understands, so it can provide accurate autocompletion. Generation is done based on the files in your project, so they are always up-to-date. If you don’t want to generate it, you can add a pre-generated file to the root folder of your Laravel project (but this isn’t as up-to-date as self-generated files).


To Install the Laravel IDE Helper package, run:

composer require --dev barryvdh/laravel-ide-helper

Make sure to  run php artisan clear-compiled before generating the docs to clear


Do’s and Don’ts when using Laravel Packages

When using packages in Laravel, take care to do the following:

  • Use Version Control: Many a time especially when building applications, things are bound to go wrong more often in the case of you using an external package in your application. It is important to set up a version control system like git so, in the event of any mishap, you can easily go back in time without breaking a sweat.
  • Run Tests: Running tests when writing code can help you detect if your application works the way it should. It also comes in quite handy when you need your software to perform in a certain way with the help of an external package and you want to be sure nothing breaks.
  • Run Security Checks: Always check if a package has opened up a potential security loophole before publishing or deploying your application.
  • Give Credits: Its good practice to give credits and accolades to the creator of whatever package(s) you are using in your Laravel application. This helps to encourage the creators to continue to provide support for the package

When using Laravel, take care to avoid the following:

  • Use of unnecessary packages: Using unnecessary plugins can clutter your application and make it really complicated and slow. Only use the packages you require.

That’s it, folks, know any Laravel package you particularly enjoy using in 2019? Kindly share them below.

What’s a web developer without the use of packages anyways?

You can follow me on Twitter and Github at https://twitter.com/theafolayan and https://github.com/theafolayan respectively.


Leave a Reply