A brief overview of the Laravel Ecosystem

Pascal Baljet, 29 Dec 2016


Besides the framework itself, the Laravel brand has much more to offer. There are development environments, optional packages and services that help you get your projects online. Along with some rebranding that was announced, I'd like to give an overview of the Laravel ecosystem.

Laravel Framework and components

Of course there is the main character of the ecosystem, the Laravel framework. On GitHub you can find two repositories. The first one, named Framework, contains the core code of the framework. The current version (5.3) consists of 29 components. These components all share the Illuminate namespace. Matt Stauffer started a repository named Torch which has examples of how to use these components in non-Laravel applications. This is really helpful but also gives you a great feel of how the components are wired together.

The second repository, simply called Laravel, contains the skeleton that you use when you're building an application. As you might expect, the composer requirements exists of some PHP version and the framework repository. Starting a new project is easy, you can clone this repository and run the composer install command or use the dedicated Laravel Installer.

But there is more! A third repository called Lumen. This is the super fast, minimal version of Laravel. It shares the same components but not all of them. The main use is to build micro-services and APIs. Take a look at the documentation to see if it fits your project. I started some projects with Lumen but find myself upgrading to Laravel along the path.

Development environments

The Laravel brand offers two development environments, one runs locally on your Mac and one is a pre-packaged Vagrant box which has virtually everything you need.

Laravel Valet

For macOS users this is probably the quickest way to get started. Choose a directory in which all your projects are 'parked' and Valet gets your projects, using DnsMasq and Nginx, accessible in the browser. You've probably setup a development environment before or used things like XAMPP/WAMP. Believe me, this is magic. It is super fast and lightweight and does not require Vagrant or you having to mess around with your /etc/hosts file. You can even share your sites since it supports ngrok tunnels. One thing you have to do manually is setup a database server if you need one. Since Valet is using Homebrew, this is really easy by running brew install mysql or brew install mariadb, whatever you like!

The documentation has a section that helps you choose between Valet and Homestead.

Laravel Homestead

This development environment is not limited to macOS, but is fully supported on Linux and Windows as well. It is a Ubuntu-based VM that has all required software installed and configured. It includes PHP 7.1, Nginx, Git, Composer, Node (With Yarn, PM2, Bower, Grunt, and Gulp), Redis, Memcached, Beanstalkd and much more. It uses Vagrant to manage and provision VMs, which can be hosted by VirtualBox (free), Parallels or VMWare (both paid). The Ubuntu VM is mostly compatiable with the configuration that Laravel Forge provisions. What's great about this approch is the ability to destroy a VM and start with a fresh box without having to install and configure everything over and over again. Take a look at the documentation to see what's included and how to get started with this environment.

Packages and tools

Laravel Passport

This packages integrates the PHP League OAuth 2.0 Server package into Laravel which is great for API authentication. It comes with all necessary database migrations, routes, controllers and even Vue components which are of course completely optional. Highly recommended if you're building APIs.

GitHub repository / Documentation

Laravel Scout

Another Laravel package that makes searching your Eloquent models super easy. It uses Model observers to keep your search indexes in sync. There is a first-party Algolia driver but the community created all sorts of other drivers like Elasticsearch. One of those is the TNTSearch driver which adds full text search support in PHP to your models.

GitHub repository / Documentation

Laravel Dusk

A new tool that has not been released yet but is supposed to be released around the same time as Laravel 5.4 (january 2017). According to Laravel News it is an end-to-end browser testing tool for JavaScript enabled applications. Check out the article on Laravel News to read more about it.

Laravel Socialite

A package that enables your users to authenticate via Facebook, Twitter, Google, LinkedIn, GitHub and Bitbucket and all kinds of other OAuth clients. It is really simple and has great community support. Check out this GitHub repository which offers an enormous amount of drivers.

GitHub repository

Laravel Echo

This time no PHP package but a JavaScript library! Laravel has built-in support for broadcasting events and has support for Pusher and Redis out of the box. To receive these events broadcast you can use Laravel Echo to listen to events, subscribe to channels, and join/leave presence channels. When installing it with NPM it will also install the pusher-js library for you.

GitHub repository / Documentation

Laravel Elixer (soon: Laravel Mix)

Another JavaScript package which is mostly written by Jeffrey Way, the hero of Laracasts. It makes working with Gulp a lot easier as it comes with a lot of goodies. It supports common CSS and JavaScript pre-processors. It can compile and bundle Less, Sass and Stylus into (minified) CSS files and supports Webpack and Rollup to compile and bundle ECMAScript 2015 into plain JavaScript. It also comes with support for Versioning and Cache Busting and even BrowserSync, which automatically refreshes your browser when you make changes to one of your files. A no-brainer when it comes to front-end development!

GitHub repository / Documentation

Laravel Cashier

This package is made to make subscription billing a lot easier. It offers subscription management and supports both Stripe and Braintree. Besides that, it can handle coupons, swapping subscription, subscription "quantities", cancellation grace periods, and generate invoice PDFs.

GitHub repository / Documentation

Laravel Envoy

Envoy is the only package I've never used myself. It lets you write (common) tasks in a Blade-like syntax that can be executed on remote servers. It has build-in support for notifications through Slack and is only supported on macOS and Linux.

GitHub repository / Documentation

Paid tools and services

Laravel Forge

This service lets you manage and provision webservers. It supports AWS, DigitalOcean and Linode but also has support for your own custom VM, as long as it is a fresh Ubuntu Server installation. It configures supervisor for your queues, manages your database server, makes SSL a breeze (support for Let's Encrypt included), built-in support for cronjobs, and even load balancing. This service starts at 15 dollars a month for new users. An absolute no-brainer considering all the hazzle you won't have to deal with. I've been using this service for over a year now and it is my favorite part of the Laravel family.

Laravel Envoyer

Laravel Envoyer focuses on zero-downtime deployments. It integrates with GitHub, Bitbucket, self-hosted GitLab servers and can do notifications through Slack. It lets you deploy new versions of your projects to one or more servers with no downtime and support for rollbacks. It also has Application Health Checks and Cron Job Monitoring. Some people wonder why it's not integrated into Forge and I mostly agree. Forge also has deployment features but not as cool as Envoyer, I would be nice to have them in the same UI. Envoyer is lower priced than Forge and starts at 10 dollars a month.

Laravel Spark

Laravel Spark is a great starting-point for your ideas. This scaffolding package is handcrafted by Taylor to get you started without having to worry about authentication, teams, billing, invoices, subscriptions and user impersonation. It has Two-Factor Authentication support out of the box as well as API authentication. It comes with a installer and an upgrader and is highly customizable. It is the only first-party Laravel package that isn't free but at 99 dollars it saves you a lot of work!