laravel-skeleton maintained by simonjenny
Opinionated Laravel Skeleton
A opinionated skeleton for Laravel projects based on my own preferences.
It includes the following:
- Standard
routes/directory (Laravel convention) - Health Check Route (
/up) — used by Docker healthcheck - FrankenPHP Dockerfile with Caddyfile
- Modified composer.json to install Node.js packages
- Modified .gitignore
Added Packages
Look at composer.json
Create a new Project with this Skeleton
composer create-project simonjenny/laravel-skeleton NAME
Note: During project creation,
laravel/boostautomatically installs Claude AI skills fromjeffallan/claude-skills(Laravel Specialist). This gives Claude Code context about Laravel best practices for this project. Remove theboost:add-skillline fromcomposer.jsonif you don't want this.
GitHub Actions (included as templates)
Every project gets these workflows out of the box:
| Workflow | Trigger | What it does |
|---|---|---|
ci.yml |
Pull Request | commitlint + Pest tests + Pint code style |
release.yml |
Push to main |
Creates a GitHub Release via semantic-release |
docker.yml |
GitHub Release published | Builds Docker image, Trivy scan, pushes to GHCR |
dependabot.yml |
Weekly (scheduled) | PRs for outdated Composer, npm & Action dependencies |
Commits follow the Conventional Commits format:
feat: add user profile picture upload → minor release (1.x.0)
fix: fix password reset link expiry → patch release (1.0.x)
chore: update tailwind to 4.2 → no release
Required GitHub secrets & variables:
GITHUB_TOKEN— built-in, no setup needed (for semantic-release)TOKEN— GitHub PAT withwrite:packagesscope (for pushing to GHCR)ENABLE_DOCKER_BUILD— Repository Variable (not secret), set totrueto activatedocker.yml→ Settings → Secrets and variables → Actions → Variables → New repository variable
Recommended branch protection for main:
- Require pull request before merging
- Require status checks:
commitlint,tests,pint
Deploy with Docker
Edit compose.yml and set:
container_name— your project nameimage— your full GHCR image path (e.g.ghcr.io/simonjenny/yourproject:latest)
Create Database and Run Migrations
php artisan migrate
Optionally: Install Filament Admin Panel
composer require filament/filament:"^5.0"
php artisan filament:install --panels
php artisan make:filament-user
Update Languages
php artisan lang:update
Install Laravel Boost
php artisan boost:install