mgtr95 / artlar-boilerplate
Laravel 13 + React/Inertia starter with Docker (FrankenPHP, Postgres, Redis).
Package info
github.com/mgtr95/artlar-boilerplate
Language:TypeScript
Type:project
pkg:composer/mgtr95/artlar-boilerplate
Requires
- php: ^8.3
- inertiajs/inertia-laravel: ^3.0
- laravel/chisel: ^0.1.0
- laravel/fortify: ^1.37.2
- laravel/framework: ^13.17
- laravel/tinker: ^3.0
- laravel/wayfinder: ^0.1.14
- spatie/laravel-activitylog: ^5.1
- spatie/laravel-permission: ^8.3
Requires (Dev)
- fakerphp/faker: ^1.24
- larastan/larastan: ^3.9
- laravel/boost: ^2.2
- laravel/pail: ^1.2.5
- laravel/pao: ^1.0.6
- laravel/pint: ^1.27
- laravel/sail: ^1.53
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.9.3
- pestphp/pest: ^5.2
- pestphp/pest-plugin-laravel: ^5.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Laravel 13 + React/Inertia starter with a three-layer Docker setup: local development, manual VPS production, and a VPSOps panel seed.
Composer package: mgtr95/artlar-boilerplate
Create a new project
With the Artlar installer (recommended)
Install the CLI once (separate repo: mgtr95/artlar-installer):
# Until Packagist: register the VCS repo, then require
composer global config repositories.artlar-installer vcs https://github.com/mgtr95/artlar-installer.git
composer global require mgtr95/artlar-installer:dev-main
artlar new my-app
With Composer only
composer create-project mgtr95/artlar-boilerplate my-app --stability=dev \ --repository='{"type":"vcs","url":"https://github.com/mgtr95/artlar-boilerplate.git"}' cd my-app make up
After both packages are on Packagist, you can drop the --repository / composer global config lines.
Stack defaults
- Postgres, Redis, queue workers, and Vite (local)
- FrankenPHP (Caddy) — no in-app nginx
- Session / cache / queue on Redis
1. Local development
cp .env.example .env make up
App: http://localhost:8000 — Vite HMR: http://localhost:5173
| Command | Purpose |
|---|---|
make up / make down |
Start / stop the stack |
make shell |
Shell in the app container |
make psql / make redis |
DB / Redis consoles |
make fresh |
migrate:fresh --seed |
make test |
Run Pest |
Set DOCKER_UID / DOCKER_GID in .env if your host user is not 1000:1000.
2. Manual VPS (shell)
Use when you deploy yourself without VPSOps:
cp .env.production.example .env # Fill APP_KEY, DB_PASSWORD, APP_URL, mail, PROXY_NETWORK docker network create proxy # if it does not exist yet make prod-build make prod-up
The app listens on :8080 inside the compose network (no host ports). Point your reverse proxy at http://app:8080. Queue workers and the scheduler run inside the app container via supervisord.
3. VPSOps panel
Seed files in the repo:
Dockerfile.paneldocker-compose.panel.yml.panel/Caddyfile,.panel/entrypoint.sh
On adopt/deploy, the panel regenerates these for the real slug and addons. Enable Postgres, Redis, and Queue in the panel UI. Production traffic goes through nginx on vps_proxy → {slug}_app:80.
Repo Docker for local/manual prod is ignored for panel production runs.
Layout
compose.yaml # local: app, queue, vite, pgsql, redis
compose.prod.yaml # manual VPS: app + pgsql + redis
docker/dev/ # local FrankenPHP image
docker/prod/ # multi-stage prod image + supervisord
Dockerfile.panel # VPSOps seed (regenerated on deploy)
docker-compose.panel.yml # VPSOps seed (postgres+redis+queue)
.panel/ # panel Caddyfile + entrypoint