TypeScript — Aide-mémoire complet
Référence TypeScript orientée React 18, Redux Toolkit, MUI v7 et API Symfony.
amar@syll:~$ cat carnet.md
// articles techniques, bugs rencontrés en production et étapes de mon parcours.
Référence TypeScript orientée React 18, Redux Toolkit, MUI v7 et API Symfony.
Impossible d'ajouter une simple colonne google_id : schema:update échouait sur une contrainte FK d'une autre table, polluée par des données orphelines. Pourquoi la commande embarque des changements non demandés, et comment s'en sortir proprement.
Après la migration de baccalaureat.sn vers Symfony Turbo, mes îlots React perdaient l'authentification à chaque changement de page. La cause : un store Redux recréé à chaque navigation. La solution : repenser où vit la source de vérité.
Reconstruire le lecteur PDF de baccalaureat.sn a révélé trois bugs imbriqués : un mismatch de version pdfjs-dist, un worker chargé depuis un CDN bloqué en prod, et un overflow:hidden parent qui tuait le scroll du viewer.
Sur baccalaureat.sn, le login Google fonctionnait, puis l'utilisateur était éjecté quelques instants après la redirection. Deux coupables imbriqués : un reducer Redux trop zélé et un intercepteur axios qui interceptait sa propre route d'auth.
Au démarrage du dev server, Vite affichait « Failed to run dependency scan. Skipping dependency pre-bundling » puis continuait comme si de rien n'était. Résultat : pages lentes et imports qui cassent. Diagnostic d'un message que presque personne n'explique.
En dev, le front React sur le port 5173 refusait de parler à l'API Symfony sur le 8000 : requêtes bloquées, preflight OPTIONS en échec, cookies absents. Configuration complète de nelmio/cors-bundle et les pièges du mode credentials.
Remplacer Webpack Encore par Vite dans un projet Symfony : configuration des entry points, îlots React dans Twig, HMR instantané en dev et build optimisé en prod avec pentatrion/vite-bundle.
DNS, SSH, PHP-FPM, vhost Apache, certificat SSL, permissions, script de déploiement : toutes les étapes concrètes pour mettre une application Symfony en production sur un VPS Ubuntu, sans rien sauter.