A self-hosted Laravel project scaffolding service that generates ready-to-run projects with pre-configured Sail services, Composer/npm packages, custom files, and Docker services.
The application serves a bash install script via HTTP. Developers run a single curl command to scaffold a full Laravel project with Docker (Sail) out of the box.
curl -s "http://localhost/my-app" | bashReplace my-app with your desired project name.
The generated script runs through four phases:
- Scaffold — Creates a Laravel project, installs Sail with selected services, and installs Composer/npm packages in a single Docker run (output streams live; package failures become warnings, not fatal errors)
- Docker Services — Appends custom services to
compose.yml - Pull — Downloads Sail container images for selected services (with retries)
- Build — Builds the Docker environment
After completion, any configured post-install commands run (e.g. sail up -d, sail artisan migrate), and your shell automatically lands in the new project directory.
The welcome page lets you interactively toggle services between Included and Excluded — the generated curl command updates automatically with the correct with query parameter.
Without parameters, the install script uses the default-enabled services configured in the admin panel. Use the with query parameter to override the defaults entirely:
# Only MySQL and Redis (ignores admin defaults)
curl -s "http://localhost/my-app?with=mysql,redis" | bash
# Only PostgreSQL, Redis, and Mailpit
curl -s "http://localhost/my-app?with=pgsql,redis,mailpit" | bashmysql, pgsql, mariadb, redis, memcached, meilisearch, typesense, minio, mailpit, selenium, soketi, valkey
Any custom Docker services configured in the admin panel are also shown on the welcome page.
Accessible at /admin. Manage all aspects of the generated install script:
| Section | Route | Purpose |
|---|---|---|
| Dashboard | /admin |
Overview with enabled/total counts |
| Sail Services | /admin/sail-services |
Toggle default services, add override configs |
| Composer Packages | /admin/composer-packages |
Manage PHP dependencies |
| npm Packages | /admin/npm-packages |
Manage JavaScript dependencies |
| Files | /admin/files |
Custom files injected into generated projects |
| Docker Services | /admin/docker-services |
Extra Docker services for compose.yml |
| Commands | /admin/commands |
Post-install shell commands (run in sort order) |
Custom files and commands support placeholders that resolve at install time:
| Placeholder | Resolves To |
|---|---|
:APP_NAME: |
The project name from the URL |
:SERVICES: |
Comma-separated list of selected services |
config/boilerplate.php defines:
placeholders— Placeholder definitions and their resolution rules
- PHP 8.5
- Composer
- Node.js & npm
composer install
npm install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan db:seedcomposer run devphp artisan test --compactvendor/bin/pint