Search by

deokonai / larabase

Mathsyo

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

Statistics

Installs: 15

Dependents: 0

Suggesters: 0

v1.0.8 2026-11-14 10:31 UTC

This package is auto-updated.

Last update: 2026-11-14 10:32:15 UTC


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.

PackageRôle
deokonai/larabase-corelarabase:setup, larabase:make-module
deokonai/larabase-filamentRéglages Filament. Absent tant que le setup ne l'installe pas
deokonai/larabaseCe 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 :

  1. Filament. Si oui, l'adresse du panel : /admin, ou / quand toute l'application est le panel. Puis il installe filament/filament et deokonai/larabase-filament, branche LaraBasePanel::configure(), et peut créer un utilisateur. À la racine, la route welcome de routes/web.php est retirée.
  2. 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).