deokonai / larabase
Squelette Laravel neutre. Les modules partagés sont des packages deokonai/larabase-*.
Package info
gitlab.deokonai.fr/mathias.debarros/new-larabase.git
Type:project
pkg:composer/deokonai/larabase
Requires
- php: ^8.3
- deokonai/larabase-core: ^1.0
- laravel/framework: ^13.17
- laravel/tinker: ^3.0
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/pail: ^1.2.5
- laravel/pao: ^1.0.6
- laravel/pint: ^1.27
- laravel/sail: ^1.70
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- phpunit/phpunit: ^12.5.12
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Squelette Laravel 13, PHP 8.5, Sail, image Nginx/PHP, CI GitLab. Rien d'imposé côté interface. Les briques partagées sont des packages deokonai/larabase-*, versionnés par des tags Git.
Dépôt public : https://gitlab.deokonai.fr/mathias.debarros/new-larabase
Le chemin GitLab est mathias.debarros/new-larabase. Les noms Composer (deokonai/larabase, deokonai/larabase-core, deokonai/larabase-filament) ne correspondent pas à un groupe GitLab : il n'y en a pas.
| Package | Rôle |
|---|---|
deokonai/larabase-core | larabase:setup, larabase:make-module |
deokonai/larabase-filament | Réglages Filament. Absent tant que le setup ne l'installe pas |
deokonai/larabase | Ce squelette |
Une application dépend de deokonai/larabase-core en ^1.0. composer update deokonai/larabase-core prend le dernier tag 1.x publié. deokonai/larabase-filament s'ajoute au setup, avec la même contrainte.
Créer une application
composer create-project deokonai/larabase mon-app
laravel new mon-app --using=deokonai/larabase
L'encadré Application ready indique composer run dev. Cette commande remet DB_CONNECTION=mysql, démarre Sail, migre, puis lance larabase:setup une fois. L'utilisateur admin est créé dans MySQL, une fois le conteneur prêt. laravel new a passé la base en SQLite seulement pour ses propres migrations. Si 8080, 3306, 6379 ou 5173 sont déjà pris, la commande prend le port libre suivant.
git clone https://gitlab.deokonai.fr/mathias.debarros/new-larabase.git mon-app
cd mon-app
rm -rf .git
composer install
cp .env.example .env
php artisan key:generate
En SSH : git@gitlab.deokonai.fr:mathias.debarros/new-larabase.git.
composer create-project et laravel new copient déjà .env et génèrent la clé. Ensuite, dans les trois cas :
cd mon-app
git init -b main
git remote add origin https://gitlab.deokonai.fr/<ton-namespace>/mon-app.git
composer run dev
larabase:setup demande, dans l'ordre :
- Filament. Si oui, l'adresse du panel :
/admin, ou/quand toute l'application est le panel. Puis il installefilament/filamentetdeokonai/larabase-filament, brancheLaraBasePanel::configure(), et peut créer un utilisateur. À la racine, la routewelcomederoutes/web.phpest retirée. - Un kit : aucun, Livewire, TallStackUI ou MaryUI.
Sans TTY (--no-interaction), Filament n'est pas installé et le kit reste aucun. La commande ne change rien.
Ajouter Larabase à une application déjà là
Pour l'ajouter à une application déjà là :
composer require deokonai/larabase-core:^1.0
php artisan larabase:setup
Le ^1.0 accepte 1.1.0, 1.4.2, et s'arrête avant 2.0.0. Le composer.lock fige la version exacte : composer install en CI réinstalle celle-là.
Filament
app/Providers/Filament/AdminPanelProvider.php, après le setup :
return LaraBasePanel::configure($panel)
->default()
->id('admin')
->path('admin');
configure() pose le nom, la couleur ambre, la largeur pleine, une sidebar repliable sur grand écran, et retire les fils d'Ariane. La navigation reste sur le côté. Une chaîne après remplace. Pour une couleur propre à cette application :
return LaraBasePanel::configure($panel)
->colors(['primary' => Color::Blue])
->default()
->id('admin')
->path('admin');
composer update deokonai/larabase-filament met à jour ce que fait configure(). La ligne ->colors() de l'application reste.
Développer
Le socle est dans deux dépôts, pas dans celui-ci :
larabase-core https://gitlab.deokonai.fr/mathias.debarros/larabase-core
larabase-filament https://gitlab.deokonai.fr/mathias.debarros/larabase-filament
Un correctif se commit dans le dépôt concerné, puis se tague (v1.0.2, v1.0.3). Chaque application le reçoit avec composer update deokonai/larabase-core ou composer update deokonai/larabase-filament. Le ^1.0 s'arrête avant 2.0.0.
Une application créée avant ça a encore un dépôt path vers packages/core. On retire ce bloc de son composer.json, puis on lance le composer update.
Les tests de ce squelette : php artisan test.
Publier un module
Le numéro de version est le tag, pas une ligne dans composer.json. larabase-core et larabase-filament sont déjà publiés. Pour un nouveau module, créer un projet public vide, par exemple mathias.debarros/larabase-audit-log, dont la racine est le contenu de packages/audit-log :
cd packages/audit-log
git init -b main
git remote add origin https://gitlab.deokonai.fr/mathias.debarros/larabase-audit-log.git
git add .
git commit -m "Version 1.0.0."
git tag v1.0.0
git push -u origin main
git push origin v1.0.0
Packagist lit ce dépôt. Les autres applications font composer require deokonai/larabase-audit-log:^1.0.
Une 2.0.0 est un changement cassant. Les applications en ^1.0 ne la reçoivent pas tant qu'elles ne passent pas la contrainte à ^2.0.
Créer un module
Un module est un package deokonai/larabase-{slug}. Depuis le squelette :
php artisan larabase:make-module audit-log
php artisan larabase:make-module vulnerabilities --resource=Vulnerability
Ça crée packages/audit-log, l'ajoute au bloc path en version 1.0.0, et fait le composer require. Namespace : Deokonai\Larabase\AuditLog. Le provider charge database/migrations et, si Filament est installé, les resources de src/Filament/Resources. --resource ajoute la migration, le modèle et l'écran (liste, création, édition) avec un champ name.
Tu développes dedans. Pour le publier, même procédure que larabase-core : projet public mathias.debarros/larabase-audit-log, tag v1.0.0. Les autres applications déclarent ce dépôt en vcs, puis composer require deokonai/larabase-audit-log:^1.0.
Pour l'ajouter au questionnaire de setup, une entrée dans SetupCommand, méthode installStarterKit(), dans le dépôt larabase-core.
Production
docker compose -f compose.prod.yaml up -d --build
L'image contient Nginx, PHP 8.5, le worker de queue et le scheduler. MySQL 8.4 et Redis 8 sont à côté. Les logs Laravel arrivent dans ./logs et sur stderr (docker compose logs).
APP_ENV=production est posé par le compose. RUN_MIGRATIONS=true migre au démarrage. Renseigner APP_KEY, APP_URL et le mot de passe MySQL dans .env avant le premier lancement.
La CI (.gitlab-ci.yml) lance php artisan test, puis construit l'image et la pousse sur le registry du projet GitLab. Le job build part sur la branche par défaut et sur les tags. Il lui faut un runner Docker-in-Docker.
Sur le serveur, une fois l'image poussée :
APP_IMAGE=gitlab-registry.deokonai.fr/mathias.debarros/new-larabase:latest docker compose -f compose.prod.yaml up -d --no-build
L'hôte du registry est gitlab-registry.deokonai.fr. Le chemin de ce dépôt est mathias.debarros/new-larabase.
Dev local avec Sail
./vendor/bin/sail up -d
./vendor/bin/sail artisan migrate
L'application répond sur http://localhost:8080 (APP_PORT).