Contexte

Livrable attendu pour l'épreuve E5 du BTS SIO option SLAM. Sert aussi de support pour l'E4 en hébergeant la synthèse officielle des compétences mobilisées, avec une fiche par projet et les compétences associées.

Contraintes que je me suis fixées :
• pas de framework PHP
• architecture MVC écrite à la main pour bien comprendre ce que fait habituellement le framework.

Objectif

Livrer un site complet en production sur hébergement mutualisé OVH, avec déploiement automatique depuis GitHub.

Côté public, une dizaine de pages : accueil, à propos, compétences, réalisations avec fiches détaillées, parcours, veille technologique, synthèse E4, CV et contact.

Côté back-office d'administration : gestion des projets, des compétences, des technos, du parcours, des articles de veille, lecture des messages reçus depuis le formulaire de contact, et upload du CV et de la synthèse.

Démarche

Architecture MVC en trois couches PHP : la couche Modèle qui parle à la base via PDO, la couche Contrôleur qui orchestre les pages, la couche Vue qui affiche. Le tout repose sur un point d'entrée unique qui dispatche les requêtes vers la bonne page selon l'URL.

La base contient une dizaine de tables liées par des clés étrangères (projets, compétences, technos, parcours, veille, utilisateurs admin, messages de contact) et les évolutions du schéma sont conservées dans des fichiers SQL pour pouvoir rejouer la base proprement.

Côté sécurité :
• sessions PHP natives, régénérées à la connexion
• hachage BCRYPT des mots de passe administrateurs
• protection CSRF sur les formulaires (jetons à usage unique)
• requêtes préparées systématiques (PDO) pour éviter les injections SQL
• contrôle du type de fichier sur les uploads (images de projets, PDF du CV)

Côté déploiement, chaque push sur la branche principale déclenche un déploiement automatique sur l'hébergement OVH, et un script tourne quotidiennement sur le serveur pour sauvegarder la base.

Bilan

Pistes pour une V2 :
• Remplacer les placeholders par de vraies captures d'écran sur tous les projets
• Renforcer le formulaire de contact contre le spam
• Ajouter une page mentions légales et politique de cookies
• Personnaliser davantage le logo