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é.