About

Initializer for Laravel takes a visual, approach to setting up a new Laravel project. Fill out the form, choose the components you like and hit the red "Generate" button at the bottom to download a zip archive containing your fresh application. Once you've extracted the archive, execute ./initialize in your terminal and the script will install all components into your application.

2208 projects initialized 🚀

Last checked: 14h ago

Prerequisites

Initializer for Laravel requires you to have Docker and docker-compose installed and running. A quick guide on how to set everything up for various operation systems is explained by the official Laravel documentation.

To make the setup as easy as possible, we use Laravel Sail and its services. The blue Sail tag indicates that an option has a corresponding software component, which would normally need to be manually installed on your system. By using the power of containers, we are able to automatically install such components automatically where it makes sense. For example, if you choose to include Redis as a cache for your project, we'll automatically enable the service in the generated docker-compose.yml file, and once you have initialized your application, Redis will be running on your computer inside a container.

Motivation

The Laravel "Getting Started" section of the documentation describes how the following command can be used to quickly create a new Laravel application:

curl -s "https://laravel.build/example-app" | bash

This downloads and executes a script from the Laravel servers, which generates a new application using Docker. While this works really well, you only get the default configurations and some limited customization options regarding the included Sail services. Also while by default a container for MeiliSearch and Selenium gets included, the dependencies for actually connecting and using those (Laravel Scout, the MeiliSearch PHP SDK and Laravel Dusk) are missing and need to be installed manually.

A web form opens up more customization options, where each of the components is presented and summarized, with links pointing to more detailed documentation.

Credits & Inspiration

This project was inspired by the Spring Initialzr, which generates similar archives for applications using the Spring Framework. While Initializer for Laravel focuses more closely on first-party packages, I used the same idea to generate zip archives that are parameterized using an online form.