TaxiGhis — Refonte WordPress → Next.js

Contexte du Projet
TaxiGhis est un service de transport professionnel basé à Danjoutin, dans la région de Belfort, en activité depuis 2014. Le site historique reposait sur WordPress + Divi, mis en ligne pour accompagner les premières années de l'activité. En mai 2026, le site a été entièrement refondu en Next.js pour gagner en performance, en autonomie et en marge de manœuvre SEO, tout en préservant le référencement déjà acquis sur des requêtes locales clés (taxi Belfort, taxi gare TGV Belfort-Montbéliard, taxi conventionné CPAM).
Pourquoi refondre ?
Après plusieurs années de service, le site WordPress avait accumulé les limites classiques d'un CMS sur l'étagère :
- Performances en baisse malgré WP Rocket (CSS critique cassé, images non servies en formats modernes systématiquement)
- Maintenance lourde : 14 plugins actifs, mises à jour mensuelles, surveillance CVE
- SEO bridé par les contraintes de Divi (titles trop longs, descriptions hardcodées en base, scripts non maîtrisés)
- Budget hébergement et licences Divi à entretenir année après année pour un site qui évolue peu
L'objectif de la refonte : un site statique, rapide, indépendant d'un CMS, où chaque page est rédigée comme un livrable éditorial, et où l'observabilité technique permet de détecter les régressions avant les utilisateurs.
Solution Technique
Stack 2026
- Next.js 16 (App Router, Turbopack) — Pages générées en SSG/SSR, JSON-LD LocalBusiness, sitemap.ts, robots.ts, redirects 301 typés.
- React 19 + TypeScript strict — Composants éditoriaux réutilisables (ServicePage, ArticleShell, BookingForm) avec metadata typée.
- Tailwind CSS v4 — Charte graphique sur mesure (or champagne, bordeaux, ivoire), responsive sans surcharge CSS.
- OpenTelemetry → SigNoz — Traces, logs et métriques via OTLP gRPC vers infra-01. service.version pinné au commit SHA.
- Postmark + Cloudflare Turnstile — Emails de confirmation transactionnels avec DKIM, anti-spam zéro-friction côté utilisateur.
- Docker + Traefik + Let's Encrypt — Image multi-stage Node 24 Alpine, reverse-proxy avec cert auto, CI/CD via Azure Pipelines self-hosted.
Fonctionnalités Développées
Booking en ligne
Formulaire de réservation avec autocomplétion d'adresses (OpenRouteService + BAN), estimation immédiate, jetons HMAC signés pour Accepter/Refuser la course par e-mail.
Design éditorial mobile-first
Typographie Playfair Display sur fond noir, palette or champagne / bordeaux, rythme « cadre noir + vue dorée » pour les visuels de blog. Responsive sans Divi.
SEO Local maîtrisé
JSON-LD TaxiService/LocalBusiness avec adresse, géo, horaires 24/7, catalogue de services. Une URL canonique par requête (gare TGV, EuroAirport, CPAM, événementiel, livraison).
RGPD-ready
Politique de confidentialité dédiée, conditions générales, aucun cookie de mesure d'audience, hébergement en France, transferts UE/US encadrés (clauses contractuelles types).
Observabilité OpenTelemetry
Traces, logs et métriques exportés via OTLP gRPC vers une instance SigNoz auto-hébergée. Chaque déploiement tagué avec son commit SHA pour corréler les régressions à la livraison.
Déploiement reproductible
Image Docker multi-stage Node 24 Alpine, pipeline Azure DevOps qui pin l'image au SHA, déploiement sans interruption derrière Traefik avec cert Let's Encrypt automatique.
Migration sans casser le SEO
La refonte d'un site existant ne doit pas faire perdre les positions Google déjà acquises. Le plan :
- Audit on-page avant bascule — Score SE Ranking 78/100 sur l'ancien WP, baseline pour mesurer le gain.
- 301 typés dans next.config.ts — Toutes les anciennes URLs WP (articles legacy avec slugs longs, /contact, /reservation) redirigées en permanent vers les nouvelles canoniques.
- Sauvegarde du WordPress historique — Stack WP isolée sur www2.taxighis.com avec X-Robots-Tag noindex (Traefik header middleware). Zéro contenu dupliqué côté SEO, contenu archivé accessible.
- Sitemap.xml + robots.txt soignés — Sitemap typée par Next.js, robots.txt qui interdit /api/ uniquement, soumission Google Search Console.
- Audit post-migration — Score 94/100 immédiat, attendu 98/100 après corrections de meta description longues.
Résultats
- Score audit on-page : 78 → 94/100 — Disparition complète des 3 errors et 21 warnings WordPress (H1 manquants, alt texts manquants, JS/CSS non minifiés, images orphelines).
- Performance native — Pages SSG préchargées, fonts auto-optimisées, images Next/Image, cache Traefik côté reverse-proxy.
- Maintenance simplifiée — Plus de plugin à patcher après une CVE. Tout le contenu vit en code, versionné, déployé via pipeline.
- Coût de propriété en baisse — Plus de licence Divi, plus de plugin payant, infrastructure mutualisée avec mes autres sites sur le même hyperviseur.
Conclusion
La refonte de TaxiGhis illustre l'intérêt d'abandonner un CMS générique au profit d'une stack Next.js + React + Tailwindtaillée sur mesure pour un site vitrine local. Le passage de WordPress à Next.js a été orchestré sans interruption visible côté visiteurs, en préservant les positions SEO acquises depuis 2014. Le site est aujourd'hui plus rapide, plus sobre, plus contrôlé éditorialement, et instrumenté en profondeur (OpenTelemetry → SigNoz) pour anticiper toute régression. Une démarche portable à n'importe quel autre site WordPress local qui a atteint le plafond technique de son CMS.
Autres projets à découvrir

WCSAssist - Assistant DJ piloté par IA
Projet R&D : assistant DJ West Coast Swing. Génération de playlists par IA sans hallucination — le LLM règle les paramètres, l'algorithme compose. .NET 10 + Next.js 16.

Stras'N Swing - Communauté de Danse
Site communautaire pour les passionnés de Rock et West Coast Swing à Strasbourg. Pratiques hebdomadaires, événements et communauté bienveillante. Site en cours de développement.

BuyStep - Système Décisionnel B2B Énergie
Système décisionnel B2B pour le sourcing énergie. AUDIT 9.0 (200+ critères), BuyStep Score, 0% commission. Source smarter, decide with data.
Une refonte WordPress → Next.js ?
Performances, autonomie éditoriale et SEO préservé. Discutons de votre projet — premier échange offert.