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.
tout le code embarqué ⊃ Actif
allumé pour l'entreprise → Navigation + droits
| Niveau | Où | Qui le règle |
|---|---|---|
| Catalogue | Code (ModuleCatalog) | Développeurs — la liste de référence des 18 modules. |
| Actif | Base (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 :
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écanisme | Rôle |
|---|---|
| Sessions durcies | Cookies HttpOnly / SameSite, régénération, expiration. |
| CSRF | Jeton exigé sur toute écriture (formulaire & API). Le front l'envoie automatiquement. |
| Anti-bruteforce | Blocage temporaire des connexions après échecs répétés. |
| Requêtes préparées | 100 % du SQL via PDO préparé — pas d'injection. |
| En-têtes & CSP | Politique de sécurité du contenu, anti-clickjacking, MIME-sniffing off. |
| 2FA (TOTP) | Double authentification optionnelle par compte. |
| Journal d'audit | Actions 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
- Facture électronique — génération Factur-X et transmission via PDP (plateforme de dématérialisation), conforme à la réforme française.
- Export FEC — fichier des écritures comptables exigé par l'administration fiscale, exportable depuis Import / Export.
- Partie double — toute écriture comptable est équilibrée (débit = crédit), avec grand livre et balance.
- Sauvegarde — la donnée vit dans votre base MySQL et vos fichiers
storage/; sauvegardez-les selon votre politique.
CLAUDE.md, README.md). Cette doc se concentre sur l'usage fonctionnel.