Projets / Node.js & React
Portfolio — Back-office : CMS et pilotage SEO sur-mesure
Back-office maison réunissant gestion de contenu et pilotage SEO en temps réel : score SEO, Search Console, inspection d'indexation, veille concurrentielle et maillage interne, dans une seule interface.
Back-office : CMS et pilotage SEO sur-mesure
Portfolio personnel · Étude de cas · Développement web fullstack · Node.js · React · MySQL · API Google Search Console
Construire l'outil plutôt que le subir
Pour mon propre portfolio, j'avais besoin d'un back-office capable de gérer le contenu (articles, études de cas, pages statiques) tout en pilotant le référencement au jour le jour : positions sur Google, pages indexées, score SEO de chaque contenu, concurrence sur mes mots-clés cibles. Aucun CMS du marché ne réunit ces deux fonctions dans une seule interface sans multiplier les plugins et les abonnements tiers.
J'ai donc développé un back-office maison, pensé comme un vrai produit SEO plutôt qu'un simple éditeur de contenu. C'est aussi la meilleure vitrine possible de mon travail : le portfolio qui présente mes compétences est lui-même construit avec les outils que je propose à mes clients.
Pourquoi ne pas utiliser un CMS existant ?
WordPress ou un CMS headless du marché auraient permis de publier du contenu rapidement, mais aucun ne répond nativement aux besoins spécifiques d'un portfolio pensé pour démontrer une expertise SEO technique :
- Un score SEO calculé en continu sur chaque article et chaque page, avec le détail des points perdus (titre, meta description, structure des titres, densité du mot-clé cible, maillage, données structurées) plutôt qu'un simple feu tricolore générique.
- Le suivi natif des positions Google Search Console, sans passer par un plugin tiers qui expose ses propres limites de quota ou de rétention de données.
- Une inspection d'indexation par URL, pour savoir précisément quelles pages Google a réellement explorées et indexées, pas seulement ce que le sitemap déclare.
- Une veille concurrentielle automatisée sur mes mots-clés cibles, pour comparer ma position à celle du premier résultat organique d'un domaine concurrent.
- Un moteur de maillage interne qui analyse les liens réels entre articles, catégories et pages, plutôt qu'une simple liste d'URLs à insérer manuellement.
- Une gestion des rôles multi-utilisateurs (administrateur, auteur), pour pouvoir un jour ouvrir la rédaction à d'autres contributeurs sans leur donner un accès complet.
Un back-office sur-mesure permettait de coder ces besoins directement dans le produit, au lieu de les approximer avec des plugins qui ne parlent pas entre eux.
Les fonctionnalités : un CMS augmenté d'un vrai pilotage SEO
Le back-office est organisé en modules indépendants, chacun couvrant un besoin opérationnel précis identifié en travaillant sur le portfolio lui-même.
Gestion de contenu (articles, catégories, pages)
Articles de blog et études de cas partagent le même moteur de contenu, avec un champ mot-clé cible, des champs meta dédiés, une FAQ structurée et un éditeur de texte enrichi. Les pages statiques (accueil, contact, à propos) sont gérées séparément avec leurs propres champs SEO et leur image Open Graph.
Score SEO en temps réel
Chaque contenu affiche un score calculé sur des critères pondérés : longueur et présence du mot-clé dans le titre et la meta title, qualité de la meta description, structure des titres, longueur et lisibilité du contenu, présence d'une image à la une, maillage interne, données structurées. Chaque point perdu est expliqué avec un message actionnable, pas juste une note brute.
Audit de page live
Un module distinct scrape la page publiée en direct (statut HTTP, balises, images, canonique, Open Graph) et lui applique la même grille de score que le contenu en base. Cela permet de vérifier que ce qui est réellement en ligne correspond à ce qui a été saisi dans le back-office, et de détecter les écarts de déploiement.
Search Console et indexation
Les positions, clics et impressions sont synchronisés directement depuis l'API Search Console et stockés en base pour garder un historique complet, au-delà des seize mois conservés par Google. Un second module interroge l'API d'inspection d'URL pour connaître le verdict d'indexation réel de chaque page suivie, avec une mise en cache pour respecter les quotas de l'API.
Veille concurrentielle
Pour chaque mot-clé suivi, une synchronisation via l'API Serper identifie le premier résultat organique appartenant à un domaine concurrent et le compare à ma propre position issue de Search Console, pour visualiser l'écart mot-clé par mot-clé.
Maillage interne
Un scanner construit le graphe des liens entre articles, produits, catégories et pages à partir du contenu réel, pour repérer les contenus orphelins ou sous-liés avant qu'ils ne pénalisent le référencement du site.
Données structurées
Le back-office génère automatiquement le JSON-LD (Person, Organization, Article, FAQPage) injecté sur le site public, à partir des mêmes données que celles saisies pour le contenu, sans double saisie ni risque d'incohérence entre le balisage et le texte affiché.
Utilisateurs et sécurité
L'authentification repose sur des sessions serveur, avec gestion des rôles (administrateur, auteur), invitation par email à jeton temporaire et réinitialisation de mot de passe. De quoi ouvrir la rédaction à d'autres contributeurs le jour venu, sans revoir l'architecture.
Le process : construire l'outil au fil des besoins réels du site
Le back-office n'a pas été conçu d'un bloc avant d'écrire le site public. Il a grandi module par module, chaque fois qu'un besoin concret apparaissait en travaillant sur le contenu et le référencement du portfolio lui-même.
1. Socle CMS
Les premières briques ont couvert l'essentiel d'un CMS classique : authentification, articles, catégories, pages statiques, upload d'images. L'objectif était de pouvoir publier du contenu rapidement pour lancer une première version du site.
2. Scoring SEO natif
Le moteur de score a été ajouté dès que la question s'est posée de savoir si un article était prêt à publier. Plutôt que de repasser par un audit externe à chaque contenu, la grille de score (titre, meta, structure, contenu, images, liens, données structurées) a été codée directement dans le back-office, avec les mêmes seuils que ceux utilisés en audit client.
3. Connexion aux données réelles de Google
Une fois le site en ligne, la priorité est passée au suivi de position et d'indexation, via un compte de service Google connecté à l'API Search Console. Les données sont rapatriées et stockées en base plutôt qu'interrogées à la volée, pour garder un historique et ne pas dépendre des quotas API à chaque chargement du tableau de bord.
4. Concurrence et maillage
Les modules de veille concurrentielle et de maillage interne sont arrivés en dernier, une fois le volume de contenu suffisant pour que ces analyses aient un sens. Le scanner de maillage réutilise le même scraper que l'audit de page live, pour éviter deux implémentations différentes du même besoin.
Le stack technique
Le back-office est volontairement séparé du site public : une API Node.js expose les données, une interface React consomme cette API en admin, et un site Astro statique sert les pages publiques. Chaque brique peut évoluer sans toucher aux deux autres.
Backend
- Node.js et Express pour une API REST organisée en routes métier (articles, pages, mots-clés, concurrents, maillage interne, audit de site, utilisateurs)
- MySQL avec Knex.js comme query builder et système de migrations versionnées
- API Google Search Console (googleapis) pour les positions et l'inspection d'indexation
- API Serper pour la veille concurrentielle sur les SERP Google
- Sessions serveur pour l'authentification, avec gestion des rôles et invitations par email
Frontend admin
- React avec Vite pour l'interface d'administration
- Tailwind CSS pour une interface sobre et rapide à faire évoluer
- Éditeur de texte enrichi pour la rédaction des articles
Front public
- Astro en génération statique, pour des performances et un référencement maximaux
- Données structurées JSON-LD générées côté back-office et injectées au build
Infrastructure
- Conteneurisation Docker pour l'API et l'admin
- VPS avec Nginx et certificat SSL via Let's Encrypt
- Scripts dédiés pour la synchronisation périodique des données Search Console et concurrents
Le résultat : un CMS qui pense en termes de référencement, pas seulement de publication
Ce back-office répond à un besoin que les CMS génériques ne couvrent pas nativement : relier directement la création de contenu à sa performance réelle sur Google, dans une seule interface, sans jongler entre un CMS, un plugin SEO et un tableau Excel de suivi de position.
Chaque article publié affiche son score SEO, sa position sur son mot-clé cible, son statut d'indexation et son niveau de maillage, le tout à jour sans intervention manuelle. C'est aussi la démonstration concrète, en usage quotidien, des compétences présentées sur le reste du portfolio.
Pourquoi ne pas avoir simplement utilisé WordPress avec un plugin SEO ?
Aucun CMS du marché ne réunit nativement un score SEO calculé en continu avec le détail des points perdus, le suivi natif de Search Console, une inspection d'indexation par URL, une veille concurrentielle automatisée et un moteur de maillage interne, sans multiplier les plugins et les abonnements tiers qui ne parlent pas entre eux.
Comment le score SEO est-il calculé ?
Sur des critères pondérés : longueur et présence du mot-clé dans le titre et la meta title, qualité de la meta description, structure des titres, longueur et lisibilité du contenu, présence d'une image à la une, maillage interne, données structurées. Chaque point perdu est expliqué avec un message actionnable, pas juste une note brute.
D'où viennent les données de position et d'indexation affichées dans l'outil ?
Directement de l'API Google Search Console : les positions, clics et impressions sont synchronisés et stockés en base pour garder un historique au-delà des seize mois conservés par Google, et un second module interroge l'API d'inspection d'URL pour connaître le verdict d'indexation réel de chaque page suivie.
Autres projets
Tradr — SaaS de gestion de formations en ligne, côté formateur et côté participant
Plateforme SaaS multi-organisme de gestion de formations en ligne, réunissant espace formateur, espace participant, coaching live, quiz et suivi de progression dans un seul outil.
Light Genius — Configurateur de néon personnalisé sur mesure
Plugin WordPress sur mesure intégré nativement à WooCommerce : composition d'un néon personnalisé, rendu en direct sur mockup de mur et tarification dynamique, sans devis manuel.