Concepts & socle

Les notions transverses à connaître une fois : modules, sécurité, thème, langue. Utile aux administrateurs et aux utilisateurs avancés.

Système de modules à deux niveaux

L'offre « à la carte » repose sur deux couches superposées. Comprendre la distinction évite bien des confusions.

Catalogue
tout le code embarqué
Actif
allumé pour l'entreprise
Navigation + droits
NiveauQui le règle
CatalogueCode (ModuleCatalog)Développeurs — la liste de référence des 18 modules.
ActifBase (table modules)Vous — via Paramètres → Modules, en direct.

Un module éteint est totalement inerte : ni route, ni entrée de navigation, jamais instancié. Il ne pèse rien et reste réactivable d'un clic, avec ses données intactes. Les modules core (Tableau de bord, Paramètres) ne sont jamais désactivables.

Architecture en bref

Monolithe modulaire en PHP 8.1+, sans framework et sans dépendance runtime. Chaque module est un dossier autonome et débranchable :

app/Modules/Invoices/
├── InvoicesModule.php   ← routes + navigation + permissions
├── Http/                ← contrôleurs (permissions, validation, I/O)
├── Domain/              ← logique métier : tout le SQL et les règles
└── Views/               ← gabarits de page

Une requête web suit toujours le même fil :

public/index.php Kernel Router Contrôleur Domain Vue / JSON

Le contrôleur ne fait que permissions + validation + entrée/sortie. Tout le SQL et les règles métier vivent dans Domain/. C'est ce qui rend chaque module testable et isolé.

Sécurité intégrée

Le socle applique des garde-fous sur chaque requête, sans configuration :

MécanismeRôle
Sessions durciesCookies HttpOnly / SameSite, régénération, expiration.
CSRFJeton exigé sur toute écriture (formulaire & API). Le front l'envoie automatiquement.
Anti-bruteforceBlocage temporaire des connexions après échecs répétés.
Requêtes préparées100 % du SQL via PDO préparé — pas d'injection.
En-têtes & CSPPolitique de sécurité du contenu, anti-clickjacking, MIME-sniffing off.
2FA (TOTP)Double authentification optionnelle par compte.
Journal d'auditActions sensibles tracées (acteur, action, entité), IP pseudonymisée.

Rôles & permissions

L'accès aux modules est gouverné par des permissions (ex. invoices.view, invoices.manage) regroupées en rôles. Un utilisateur hérite de l'union des permissions de ses rôles. La clé spéciale * accorde tout (administrateur). Détail complet : Rôles & permissions.

Thème clair / sombre

L'interface bascule entre un thème clair (« papier chaud ») et sombre (« encre »). Le choix est mémorisé par navigateur (clé erp-theme) et appliqué dès le chargement, sans clignotement. Cette documentation utilise le même mécanisme — testez l'icône lune / soleil en haut à droite.

Langue (i18n)

La langue de l'organisation se règle à l'installation ou dans Paramètres → Style (fr ou en). Le français est la langue pivot : les chaînes françaises sont les clés, l'anglais ne surcharge que les différences. La navigation, la connexion et les écrans système sont traduits ; les corps de page métier restent en français.

Conformité & données

Pour aller plus loin Les détails d'exploitation (déploiement, OPcache, migrations de schéma) sont dans le dépôt de code (CLAUDE.md, README.md). Cette doc se concentre sur l'usage fonctionnel.