Business CMS
En bref
Conception et développement d'un CMS permettant aux PME, indépendants et ASBL de gérer leur site vitrine en autonomie. L'application propose une administration sécurisée pour gérer les pages, les services, les projets, les témoignages, les messages de contact et les paramètres visuels du site. Le projet intègre également des protections contre le spam, une gestion des rôles, des tests automatisés et un déploiement conteneurisé.
Captures d'écran
Le besoin
Les petites structures ont besoin d'un site web professionnel dont le contenu peut être actualisé sans intervention systématique d'un développeur. Les solutions existantes peuvent être trop complexes, trop généralistes ou nécessiter une maintenance régulière.
L'objectif de Business CMS est de proposer une base applicative réutilisable et personnalisable, permettant de gérer les contenus, l'apparence et les principales fonctionnalités d'un site vitrine depuis une interface d'administration centralisée.
Choix d'architecture
Le projet repose sur Laravel 12 et PHP pour structurer l'application selon les conventions d'un framework éprouvé. Filament 5 fournit l'interface d'administration et les outils de gestion des contenus, tandis que Blade assure le rendu des pages publiques.
SQLite simplifie l'installation et le déploiement de cette première version. Le CSS public est écrit manuellement et s'appuie sur des variables de thème, sans dépendance à Node.js ou Vite pour sa compilation.
HTML Purifier est utilisé pour nettoyer le contenu HTML des pages. Les rôles distinguent les administrateurs, qui disposent des droits de configuration, des éditeurs, qui gèrent les contenus éditoriaux.
Le déploiement Docker facilite la reproduction de l'environnement applicatif et son hébergement derrière Caddy.
Ma contribution
Conception et développement de la version 1 du CMS, de la structure applicative à l'interface publique et à l'administration.
Mise en place de la gestion des pages, services, projets, galeries d'images, témoignages et messages de contact. Développement des paramètres de personnalisation du site, de la gestion des rôles, des pages légales et de la configuration des e-mails.
Implémentation des protections des formulaires publics, de la validation des données, du traitement différé des e-mails et des mécanismes de maintenance associés.
Préparation du déploiement conteneurisé, de la documentation d'installation et des tests automatisés.
Difficulté technique et résolution
L'un des enjeux du projet consiste à rendre le site personnalisable sans devoir modifier le code pour chaque nouvelle installation.
La solution repose sur des paramètres centralisés pour l'identité de l'entreprise, les coordonnées, les couleurs, les polices et les options d'affichage. Les pages publiques utilisent les variables de thème pour appliquer ces réglages de manière cohérente.
La gestion des formulaires constitue un autre enjeu : limitation des envois, champ piège invisible, délai minimal de soumission et consentement obligatoire contribuent à réduire les soumissions automatisées et à encadrer la collecte des messages.
Le contenu HTML est nettoyé avant son affichage afin de limiter les risques liés à l'insertion de balisage non fiable.
Tests, sécurité et déploiement
Le projet dispose d'une suite de tests automatisés couvrant notamment les pages publiques, les formulaires, les protections anti-spam, le consentement, les limites d'envoi, les droits d'accès à l'administration, la modération des témoignages, la suppression des fichiers et la validation des paramètres.
Les protections comprennent également le nettoyage du HTML, la séparation des rôles, la gestion des messages en attente et la suppression planifiée des anciens messages de contact.
L'application est déployée dans un environnement Docker et accessible en ligne. La configuration des e-mails utilise un serveur SMTP lorsqu'il est disponible ; en mode journalisation, les e-mails sont consignés dans les journaux de l'application.
Résultat
Une première version fonctionnelle du CMS est déployée et accessible en ligne. Elle propose un site vitrine administrable, plusieurs types de contenus, des paramètres de personnalisation, une gestion des utilisateurs par rôles et des fonctionnalités de contact.
Le projet dispose d'un dépôt GitHub, d'une documentation de déploiement et d'une suite de tests automatisés. Des correctifs et améliorations sont encore suivis dans le dépôt.
Démonstration :
https://businesscms.solideodigital.duckdns.org/
Limites et améliorations envisagées
La version actuelle constitue une base destinée aux sites vitrines et non une plateforme de commerce électronique ou un CMS universel.
Les prochaines évolutions pourront porter sur le renforcement de la couverture de tests, l'amélioration continue de la sécurité et de l'expérience d'administration, ainsi que l'enrichissement des possibilités de personnalisation selon les besoins des organisations utilisatrices.
La pertinence d'une évolution vers une base de données MySQL pourra également être étudiée en fonction des besoins des futures installations.