QuietCMS n'utilise aucun framework. Toute la logique métier est répartie entre vingt classes PHP regroupées dans le répertoire core/. Chaque classe a une responsabilité unique, déclare strict_types=1 et n'expose que des méthodes statiques — pas d'instanciation, pas d'injection de dépendances, pas de conteneur IoC.
Gestion du contenu
- ContentManager — Point d'entrée unique pour le CRUD de pages, articles et catégories. Expose
getAll(string $type),getBySlug(string $type, string $slug),save(string $type, array $data)etdelete(string $type, string $slug). Toutes les lectures et écritures JSON passent par ici. - AuthorManager — Gère les profils d'auteurs associés aux articles (nom, bio, avatar, liens sociaux).
- CommentManager — File de modération des commentaires, comptes lecteurs, approbation et suppression.
- FormManager — CRUD de formulaires de contact personnalisés, validation des champs, notification par e-mail, stockage des soumissions en JSON.
Sécurité
- AdminManager — Authentification administrateur, gestion multi-utilisateurs, réinitialisation de mot de passe par token signé.
- Security — Classe centrale de sécurité : chiffrement AES-256-GCM, tokens CSRF, rate limiting par IP, gestion de session, sanitisation des entrées (
clean(),cleanHtml()). - RedirectManager — Gestion des redirections 301/302 stockées en JSON, appliquées avant tout rendu de template.
Médias et assets
- MediaManager — Upload de fichiers, conversion automatique en WebP, sanitisation des SVG via
DOMDocumentpour éliminer les balises<script>embarquées. - ImageService — Redimensionnement et recadrage d'images à la volée via GD.
- ThumbHelper — Génération et mise en cache des miniatures pour les listings d'articles.
Thèmes et présentation
- ThemeManager — Lecture des métadonnées de thème (
theme.json), gestion du logo et du favicon, éditeur CSS en ligne. - SidebarManager — Zones de widgets nommées, rendu par identifiant :
SidebarManager::render($id, $settings). - BreadcrumbBuilder — Génère le fil d'Ariane HTML en fonction de la route courante.
SEO et metadata
- SitemapBuilder — Génère
sitemap.xmlà la volée à partir de tous les contenus publiés. - OpenGraphBuilder — Injecte les balises
<meta property="og:…">et Twitter Card dans le<head>. - JsonLD — Produit le bloc
<script type="application/ld+json">(Article, BreadcrumbList, WebSite) pour les rich results Google.
Infrastructure
- Router — Résolution des patterns d'URL vers les templates PHP.
- Mailer — Envoi d'e-mails via SMTP avec une implémentation légère inspirée de PHPMailer.
- PluginManager — Système de hooks (
body_end,head_end), activation et désactivation de plugins tiers. - AIGenerator — Interface optionnelle vers l'API Claude d'Anthropic pour la génération assistée de contenu depuis le back-office.
Principes de conception
Toutes les classes respectent les mêmes conventions :
declare(strict_types=1)en tête de chaque fichier.- Méthodes 100 % statiques — aucun
new ClassName()dans le code applicatif. - Aucune dépendance externe : uniquement la bibliothèque standard PHP (SPL, OpenSSL, GD, DOMDocument).
- Un fichier par classe, nommé identiquement (
Security.php,ContentManager.php…).
Cette structure rend QuietCMS particulièrement facile à auditer : chaque classe est une unité indépendante qu'on peut lire, tester et remplacer sans toucher au reste du système.
Articles similaires
Le routeur PHP de QuietCMS sans framework
Comment QuietCMS implémente un routeur PHP léger sans framework pour gérer les URLs propres.
Stockage JSON : l'architecture flat-file de QuietCMS
Comment QuietCMS stocke tout le contenu en JSON sans base de données, avec les avantages et les limites du flat-file.
Bibliothèque médias et conversion WebP automatique
Gérez vos images et vidéos avec QuietCMS : conversion WebP automatique, dossiers, alt-text et sanitisation SVG.