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.
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.
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.
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
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.
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.
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.
pusher-js library for you.
Laravel Elixer (soon: Laravel Mix)
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.
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.
Paid tools and services
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 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 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!