Tutoriels & Articles
Retrouvez mes derniers articles sur le développement web, Laravel, WordPress et Craft CMS.
Rembourser une dette technique sans freeze: Branch by Abstraction sur un client HTTP legacy
Tutoriel actionnable pour migrer un client HTTP legacy (ex. axios) vers fetch en production sans freeze, via Branch by Abstraction, feature flags, codemods et garde-fous CI. Cible dev expérimenté, lisible en 8–12 min.
Webhooks entrants sécurisés: HMAC, anti-rejeu et rotation de secrets sans downtime
Implémentez une vérification HMAC robuste, une protection anti-rejeu et une rotation de secrets sans interruption pour vos webhooks entrants. Tutoriel concret avec pipeline Node.js/Express, Redis et Nginx.
Webhooks idempotents dans Laravel avec verrous Redis (tutoriel pratique)
On construit un endpoint webhook robuste dans Laravel: vérification de signature, déduplication en base, verrous atomiques Redis et traitement idempotent en file.
Construire un endpoint JSON sur mesure dans Craft CMS (sans plugin)
Apprenez à exposer un endpoint JSON performant dans Craft CMS sans plugin: filtres, pagination, CORS et cache HTTP (ETag/Last-Modified). Un tuto concret, prêt pour un frontend JS.
Construire un reviewer de PR GitHub avec Claude 3.5 Sonnet
On met en place un reviewer automatique de pull requests avec Claude 3.5 Sonnet via l’API Anthropic, intégré à GitHub Actions. Objectif: des commentaires concrets et actionnables, publiés directement sur la PR.
De ticket GitHub à spec technique exploitable avec Claude.ai (JSON Schema + Node.js)
Construisez un petit outil Node.js qui transforme un ticket GitHub en spécification technique JSON validée, grâce aux sorties structurées de Claude.ai. Tutoriel actionnable, du schéma à la PR automatisée.
Audit Eloquent minimal avec Observers et JSON
Implémente un audit léger des modèles Eloquent sans package: enregistre les changements (avant/après), l’utilisateur et le contexte via un Observer générique. Tuto concret, prêt à copier-coller.
Construire un système de filtres/tri d’API réutilisable dans Laravel (sans package)
On crée un mécanisme générique et sécurisé pour filtrer et trier des listes en API REST avec Eloquent, incluant relations, dates, opérateurs et pagination. Objectif: un QueryFilters plug-and-play, sans dépendances externes.
Générer des factures PDF en masse avec FilamentPHP via une Bulk Action asynchrone
Apprenez à ajouter à un Resource Filament une action de table qui génère des factures PDF pour des centaines d’objets en arrière-plan, avec files, batchs et notifications.
Gérer une relation Many-to-Many avec métadonnées dans FilamentPHP
Tuto actionnable pour gérer une relation Many-to-Many avec champs de pivot dans Filament v3: affichage, tri, filtres, attach/detach et édition des métadonnées.
Outbox transactionnelle Laravel: publier des événements externes sans perte
Implémentez une Outbox transactionnelle dans Laravel pour publier des événements vers des services externes sans pertes ni doublons. Tutoriel complet: schéma, service atomique, worker concurrent, retries, tests et purge.
Webhooks entrants robustes avec Laravel: HMAC, idempotence et jobs
Implémente un endpoint de webhooks sécurisé avec signature HMAC, idempotence en base et traitement asynchrone via jobs. Objectif: répondre 2xx vite, ne jamais traiter deux fois, observer et tester.
Bâtir un circuit breaker léger pour l’HTTP Client Laravel (Cache + RateLimiter)
Apprends à protéger tes appels externes avec un circuit breaker pour Laravel HTTP Client: Cache, RateLimiter, verrous atomiques et tests inclus.
Bloc Gutenberg dynamique sans build: un indicateur d’état de service rendu côté serveur
Apprenez à créer un bloc Gutenberg WordPress SSR sans build: interroger un endpoint JSON, cache PHP minimal, éditeur réactif via ServerSideRender
Chiffrement transparent d’attributs Eloquent avec un Custom Cast
Chiffrement Eloquent Laravel: cast personnalisé pour crypter/décrypter téléphone et IBAN, sans toucher à la logique métier, recherche via hash auxiliaire
Construire une directive v-longpress robuste et accessible en Vue 3
Directive v-longpress Vue 3 : implémentez un long press fiable avec pointer et clavier, modificateurs, durée, tolérance et nettoyage. Guide pas à pas.
Coordonner plusieurs îlots Astro avec un store global EventTarget (sans Redux ni Context)
Apprenez à relier plusieurs îlots Astro avec un store global EventTarget: état partagé, persistance et synchro inter-onglets, sans Redux ni Context.
De Markdown à EPUB en OEB/OEBPS avec Node.js: pipeline minimal et reproductible
Crée un EPUB OEBPS (OPF 2.0 + NCX) depuis Markdown avec Node.js. Pipeline minimal, reproductible et sans outils lourds. Prêt pour la publication.
De zéro à EPUB : assembler un paquet OEB (OEBPS) depuis un projet HTML
EPUB 3 & OEBPS: créez pas à pas un paquet OEBPS (OPF, manifest, spine, nav) et emballez un mini-site HTML/CSS en .epub standard.
Disjoncteur et limite de concurrence pour Http::client() dans Laravel (circuit breaker + bulkhead)
Implémentez un circuit breaker et un bulkhead (limite de concurrence) sur Laravel Http::client(), sans package, pour stabiliser vos appels API tiers.
Endpoint webhook robuste avec Laravel: signature HMAC, idempotence et traitement asynchrone
Créez un webhook Laravel sécurisé: signature HMAC, idempotence stricte et traitement asynchrone via jobs. Guide complet de la route au déploiement.
Endpoints idempotents en Laravel: clés d’idempotence, verrous et réponses rejouées
Guide endpoints HTTP idempotents Laravel: clé d’idempotence, hash de requête, verrou cache, réponses rejouées. Prêt à coder paiements, commandes, webhooks.
Éviter les écrasements concurrents avec l’optimistic locking Eloquent
Implémente l’optimistic locking Eloquent (verrou optimiste) pour éviter les mises à jour concurrentes. Trait réutilisable, gestion du 409, retry et tests.
FilamentPHP : Bulk Action asynchrone avec barre de progression (export CSV)
Export CSV asynchrone FilamentPHP avec progression en temps réel. Action de masse avec Livewire, queue Laravel et notification de téléchargement.
Générer des images Open Graph dynamiques via un endpoint REST WordPress (avec cache disque et invalidation)
Créez des images Open Graph dynamiques pour WordPress via un endpoint REST, avec cache disque, invalidation automatique et fallback GD/Imagick. Tutoriel.
Importer un CSV robuste dans Filament: mapping, prévisualisation, validation et import asynchrone
Import CSV Filament clé en main: mapping des colonnes, prévisualisation validée et import asynchrone en file d’attente. Un flux scalable, sûr et UX-friendly.
JSON fiable avec ChatGPT: schéma strict + Zod + auto-réparation en Node.js
Assurez un JSON valide avec ChatGPT: schéma strict, validation Zod côté serveur et auto-réparation en Node.js. Tutoriel concret, prêt pour la prod.
Paginer des gros volumes sans OFFSET: keyset pagination avec Laravel cursorPaginate
Optimisez la pagination Laravel avec cursorPaginate: keyset sans OFFSET, tri déterministe, index composite et liens next/prev. Tutoriel rapide.
Protéger /admin avec Astro Middleware et cookies signés (JWT minimal)
Astro Middleware et cookies signés (JWT minimal) pour sécuriser /admin: formulaire /login, cookie HttpOnly, filtre routes, sans dépendances lourdes. Tutoriel.
Recevoir des webhooks de façon robuste avec Laravel: HMAC, idempotence, retries
Webhooks Laravel sécurisés: HMAC, idempotence, déduplication, queue et backoff. Traitez chaque événement sans doublon, rapidement et en toute sécurité.
Rendre un bloc Gutenberg dynamique avec Timber/Twig (SSR + cache)
Créez un bloc Gutenberg dynamique sous WordPress avec Timber/Twig en SSR. Guide complet: block.json, render_callback, médias, et cache performant.
Uploads directs vers S3 avec URLs signées dans Laravel (PUT + vérification serveur)
Uploads S3 directs avec URLs signées dans Laravel (PUT) : génère l’URL, upload navigateur, vérifie côté serveur avant persistance. Rapide et sécurisé.
Webhooks idempotents dans Laravel: signature HMAC, horodatage et verrous atomiques
Apprenez à sécuriser des webhooks idempotents Laravel: signature HMAC, horodatage, verrou Redis et Job en file. Tests Pest pour éviter les doublons.