Tous les projets

Site CV v5

PHPTwigMySQLJavaScriptDockerMVCCMS
Site CV v5

Contexte

Ce site est à la fois mon portfolio, mon CV en ligne et un terrain d'expérimentation technique. L'objectif était de repartir de zéro sans framework tiers pour maîtriser chaque rouage : routeur, ORM, système de templates, gestion des assets, déploiement.

Stack technique

  • PHP 8.2 — back-end intégral, architecture MVC maison
  • Twig 3 — moteur de templates (héritage, échappement automatique)
  • MySQL 8 / MariaDB — base de données (dev Docker / prod OVH mutualisé)
  • CSS & JS maison — sans toolchain front-end, animations CSS natives
  • PHPMailer — envoi des messages du formulaire de contact
  • Docker — environnement de développement local reproductible
Vue de la page d'accueil du portfolio
Page d'accueil — bannière hero, projets récents et compétences

Architecture

Le cœur du projet est un framework MVC développé from scratch :

  • Routeur — table de routes déclarative, segments dynamiques ({id}, {slug}), méthodes HTTP distinctes.
  • ORM léger PDO — classe Model de base avec find, create, update, delete ; chaque modèle déclare ses colonnes via $fillable.
  • Système de migrations versionné — fichiers idempotents numérotés, déclenchables depuis le back-office en production sans accès SSH.
  • Build autonome — script bin/build.php qui produit un bundle dist/ prêt à téléverser sur l'hébergement mutualisé OVH.

Back-office (CMS)

Un back-office complet permet de gérer l'intégralité du contenu du site sans toucher au code :

  • Sections CV (présentation, compétences, parcours, blog…)
  • Projets avec images, tags, liens et SEO par page
  • Articles de blog rattachés à une section ou à un projet
  • Compétences avec barres de progression par catégorie
  • Parcours (expériences & formations) avec timeline
  • Réseaux sociaux, paramètres globaux, mode maintenance
  • Gestion des médias avec upload et redimensionnement
Interface d'administration du CMS
Back-office — tableau de bord avec projets, articles et statistiques

SEO & performances

Chaque page expose des balises Open Graph, Twitter Cards, des données structurées JSON-LD (Person, CreativeWork, BlogPosting, BreadcrumbList) et un sitemap XML dynamique. Côté performances : gzip via .htaccess, OPcache, cache Twig compilé en production, CSS/JS minifiés au build et cache-headers sur les assets.

Contrainte de déploiement

La production tourne sur un hébergement mutualisé OVH sans accès SSH. Toutes les opérations normalement réservées à la CLI (migrations de base de données, vidage de cache…) sont exposées dans le back-office sous forme de boutons, ce qui m'a obligé à concevoir des solutions robustes sans jamais supposer un accès terminal.

Articles liés

Construire un CMS maison en PHP

Construire un CMS maison en PHP

Comment j'ai construit, de zéro, un framework MVC et un back-office sur mesure en PHP 8 — architecture, routeur, couche base de données sécurisée, et back-office complet. Avec schémas à l'appui.

PHPArchitectureCMS
Lire l'article