Aller au contenu
Lantorian

Démarrer8 min de lecture

Poste, Git et conventions

Tout ce qu'il faut pour cloner un projet, le lancer, et livrer du code que l'équipe relit sans friction.

Installer ton poste

Une seule version de chaque outil pour toute l'équipe : ça évite les « chez moi ça marche ».

OutilComment
PHP 8.4, Composer, installeur LaravelScript officiel php.new (Linux, WSL) ou Laravel Herd (macOS, Windows).
Node.js 24 LTSVia fnm ou nvm, jamais le Node du système. Le projet fixe la version dans .nvmrc.
PostgreSQL, RedisDocker Compose fourni dans chaque projet API (docker compose up -d), ou DBngin sur macOS.
ÉditeurVS Code ou PhpStorm, avec format à l'enregistrement activé.
Extensions VS CodeLaravel (officielle), PHP Intelephense, ESLint, Prettier, Tailwind CSS IntelliSense, i18n Ally (clés de traduction).
installation.sh
# PHP 8.4 + Composer + Laravel installer (Linux / macOS / WSL)
/bin/bash -c "$(curl -fsSL https://php.new/install/linux/8.4)"

# Node.js 24 LTS via fnm
curl -fsSL https://fnm.vercel.app/install | bash
fnm install 24 && fnm default 24

# Check everything
php -v && composer -V && laravel --version && node -v && npm -v

Premier lancement

Suis ces commandes dans l'ordre. Si un test échoue avant ta première modification, préviens ton tuteur : ce n'est pas à toi de le réparer en silence.

api/
git clone git@github.com:lantorian/<project>-api.git && cd <project>-api
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate --seed

composer run dev   # server + queue + logs + vite, all at once
composer test      # must be green before you touch anything

Le flux Git

Une branche par ticket, des commits petits et lisibles, une pull request relue avant chaque fusion. Personne ne pousse directement sur main.

mainsquash merge
Une branche courte, des commits typés, une PR validée par la CI puis fusionnée en squash.
  1. 1

    Créer la branche depuis main à jour

    Format : type/numéro-ticket-description, par exemple feat/142-invoice-export.
  2. 2

    Commiter par petites étapes

    Un commit = une intention. Utilise git add -p pour relire ce que tu ajoutes.
  3. 3

    Rebaser avant de pousser

    git rebase origin/main garde un historique linéaire. Pas de merge de main dans ta branche.
  4. 4

    Ouvrir la PR

    Titre au format Conventional Commits, description avec le contexte, captures d'écran si l'interface change, et la checklist cochée.
  5. 5

    Intégrer la revue

    Réponds à chaque commentaire, pousse les corrections, puis un relecteur fusionne en squash merge.
journée-type.sh
git switch main && git pull --rebase
git switch -c feat/142-invoice-export

# ...code, test, commit small steps
git add -p
git commit -m "feat(invoice): add csv export action"

# keep your branch up to date, then open the PR
git fetch origin && git rebase origin/main
git push -u origin feat/142-invoice-export

Messages de commit

On suit Conventional Commits : type(portée): description à l'impératif, en anglais, en minuscules, sans point final.

TypeQuand l'utiliser
featNouvelle fonctionnalité visible par l'utilisateur.
fixCorrection de bug.
refactorChangement de code sans changement de comportement.
testAjout ou correction de tests uniquement.
docsDocumentation, README, commentaires.
choreDépendances, configuration, outillage.
perfAmélioration mesurable des performances.

À éviter

git log --oneline
wip
fix
update files
final version OK

À faire

git log --oneline
feat(invoice): add csv export action
test(invoice): cover empty invoice list
fix(auth): refresh token before expiry
refactor(user): extract CreateUser action

Conventions de nommage

Le nom dit ce que fait la chose. En cas de doute, copie ce qui existe déjà dans le projet.

ÉlémentRègleExemple
Classe PHPPascalCase, suffixe du rôleCreateInvoiceAction
Méthode PHPcamelCase, verbemarkAsPaid()
Table SQLsnake_case au plurielinvoice_lines
URL d'APIkebab-case, ressources au pluriel/api/v1/invoice-lines
Composant ReactPascalCaseInvoiceTable
Fichier frontkebab-caseinvoice-table.tsx
Hook Reactpréfixe useuse-invoices.ts
Clé de traductioncamelCase, groupée par écraninvoices.table.emptyTitle

Outils qualité

Les mêmes commandes tournent sur ton poste et dans la CI. Pint formate le PHP, Larastan analyse les types, ESLint et Prettier s'occupent du TypeScript.

composer.json
{
  "scripts": {
    "dev": "npx concurrently \"php artisan serve\" \"php artisan queue:listen\" \"php artisan pail\" \"npm run dev\"",
    "lint": "pint --test",
    "format": "pint",
    "analyse": "phpstan analyse --memory-limit=1G",
    "test": "pest --parallel",
    "test:coverage": "pest --parallel --coverage --min=80",
    "ci": ["@lint", "@analyse", "@test"]
  }
}

Demander de l'aide

Bloquer seul une journée coûte plus cher qu'une question. Quand tu demandes, donne : ce que tu essaies de faire, ce que tu as tenté, le message d'erreur complet.