Introducing Bellows: An Intelligent CLI for Your Laravel Apps

Bellows makes it trivial to launch your Laravel app with Laravel Forge, fully configured with all of your third-party services.

Joe Tannenbaum

I am beyond excited to announce the release of Bellows.

Heads up! This post is a bit old. Bellows does so much more than this post describes, including:

  • Kickoff: Scaffold new Laravel apps to your exact specifications

  • Deploy: Deploy changes to your Forge site

  • Load Balancers: Launch and deploy to your load-balanced Forge sites

You should check out bellows.dev to learn everything that Bellows can do, it's incredibly powerful.

If you use Laravel Forge and launch sites with any regularity, Bellows is about to be your best friend. Forge already makes launching a site easy, Bellows makes it effortless.

You can learn more at bellows.dev or you can:

Demo

Brief Background

I use Laravel Forge extensively, both personal projects and client work. I launch sites quite often, many of them Laravel apps. They always involve doing the same thing, over and over again:

  • Updating domain records to point to server

  • Adding the run schedule artisan command

  • Securing the site

  • Configuring the mailer

    • Logging into mail provider

    • Adding a new mail. domain name

    • Verifying mail. domain name by updating DNS records again

    • Setting .env variables

  • Configuring the database

    • Logging into DigitalOcean

    • Creating a database

    • Creating a user

    • Copying the user credentials

    • Copying the database config

    • Setting .env variables

You get the idea, the list goes on.

Is all of this manageable? Sure. Is it automatable? Yes. So I wrote Bellows to handle it all for me. And now, for you too!

What It Does

Bellows walks you through deploying your site for the first time, reading your .env and installed packages and auto-detecting which services you'd like to configure for your app. If it's unsure about an action, it will ask you (it will never do something without your permission).

Bellows can update your deploy script, add .env variables, create workers, create daemons, create scheduled jobs, and more. Some examples:

  • If you use Cloudflare, GoDaddy, or DigitalOcean Bellows is able to point your domain to your server and auto-validate any domains for mail providers.

  • If it detects that your app is using Octane, it will create the site as an Octane site and create the required daemon.

  • If it detects that you have the Bugsnag package installed, it will ask you if you want to create a Bugsnag project or select an existing one from the list.

  • Using Pusher? Just select your Pusher app from the list and let Bellows set up your .env values.

  • If Postmark is your mailer, you can choose an existing server and domain or have Bellows create them for you automatically. It'll even automatically verify your new domain if your DNS provider is supported.

There is an entire list of plugins that allows Bellows to support many third-party services, and I'm building more as you are reading this.

Right now the plugin system is closed, but custom plugins are on the roadmap. Looking for a Bellows plugin for a service you use? Hit me up and let me know!

Using Bellows

The first time you use Bellows, you'll be entering some API keys as it walks you through launching your site. These are needed to connect to Forge and any third-party services your app needs.

My policy is that if Bellows needs an API key, it gives you a direct link to retrieve it. Click the link, grab the key, paste it in. Onwards.

The second (and third, and fourth, and fifth, and...) time you use Bellows, you'll be flying. It auto-detects as much as possible to allow you to basically keep pressing the enter key.

Roadmap

Soon, Bellows will be able to do more than just launch your site.

Deploy

The deploy command will allow you to push changes to an existing site on Forge in the same way launch does. Let's say you forgot to add Postmark as your mailer when you launched. No problem. deploy will configure and add Postmark to your site in no time flat.

Kickoff

The kickoff command creates and configures a Laravel app according to your custom settings. Do you always install certain packages? Always include that code snippet in your AppServiceProvider? Always adjust that specific config value? With kickoff you can go from idea to writing actionable code in 30 seconds or less.

Load Balancers

The launch command will soon be able to create sites associated with a Forge load balancer. No more creating the same site on multiple servers, just do it in one shot with Bellows.

Shout Outs

As with any piece of software, Bellows is standing on the shoulders of giants. A huge thank you to these packages (and their maintainers), they were critical to making Bellows what it is:

Special shout out to Anystack.sh for providing such an excellent platform to make licensing so easy (and to Philo Hermans for patiently and helpfully answering so many of my questions, it is greatly appreciated).

Launch Pricing

Grab Bellows today! Normally, the price is $49 for a year's worth of updates. But for the launch I created a limited set of 25 licenses for $29, get them while they're still available:

(Excellent) syntax highlighting provided by Torchlight