Aller au contenu

ADR-003 (learnkorean) — Backend : Laravel

Statut : accepté (2026-07-19)

Contexte

La v1 a besoin d'une API : comptes (inscription, connexion, réinitialisation, suppression RGPD), decks/cartes, état de répétition espacée par utilisateur, quiz, progression. Hébergée sur l'infra (Coolify), exposée publiquement — donc auth robuste et limitation de débit.

Comparatif pondéré

Question : quel framework backend pour l'API ?

1. Filtre éliminatoire

Laravel (MIT), NestJS (MIT), FastAPI (MIT) : tous libres.

2. Critères et pondérations (total = 100)

Critère Poids Pourquoi
Compétences existantes 30 Je développe en Laravel : vitesse et qualité immédiates
Adéquation (auth, API, mails, tâches) 25 Tout le périmètre v1 doit être couvert nativement
Exploitation self-hosted (Coolify) 15 Conteneur + migrations en CI
Valeur CV 15 Consolider ma stack principale par un produit public
Écosystème 10
Performance 5 Dizaines d'utilisateurs : non discriminant

3-4. Candidats et notation

Critère (poids) Laravel 13 NestJS FastAPI
Compétences (30) 5 — ma stack quotidienne 2 — TypeScript backend à apprendre 2 — Python connu, framework non
Adéquation (25) 5 — Sanctum (tokens API), Fortify (auth), notifications mail, files, policies : tout est intégré 4 — très complet, plus à assembler 3 — excellent cœur API, auth/mails à composer
Exploitation (15) 4 — image PHP-FPM + nginx, pattern connu de Coolify 4 4
Valeur CV (15) 4 — un produit public en prod vaut mieux que dix TP 4 3
Écosystème (10) 5 4 4
Performance (5) 4 4 5
Score pondéré / 5 4,65 3,40 3,05

5. Recommandation

Laravel 13 + Sanctum (authentification par tokens pour l'app mobile). C'est le choix évident et c'est tant mieux : après Astro et React côté front, le backend est l'endroit où capitaliser sur l'existant plutôt que d'apprendre une troisième nouveauté. Un produit Laravel public, testé et en production, est aussi la meilleure pièce de mon dossier d'alternance MAALSI.

Décision

Laravel 13 + Sanctum. Je le valide le 2026-07-19 : mon terrain, la vitesse et la qualité tout de suite.

Conséquences

  • API REST JSON versionnée (/api/v1/…), auth Sanctum, rate limiting sur l'authentification.
  • Point sensible : l'envoi d'e-mails (réinitialisation de mot de passe). Aucun serveur mail sur l'infra ; un relais SMTP transactionnel externe serait un écart à la règle « 100 % libre self-hosted ». Décision reportée à un ADR dédié en phase 3 (options : Postfix self-hosted et sa délivrabilité difficile, relais externe assumé et documenté, ou v1 sans email obligatoire).
  • Tests : Pest/PHPUnit sur l'algorithme SRS et l'auth en priorité.