T ToutadminDocumentation

Deux éditions, un produit

Toutadmin existe en deux exemplaires : l'un tourne sur Node.js, l'autre sur PHP. Ce ne sont pas deux produits ni une version allégée et une version complète. Ce sont les mêmes 51 espaces, le même schéma de 142 tables, les mêmes 16 langues, les mêmes écrans. Cette page dit ce qui les sépare vraiment — et ce n'est pas grand-chose.

Pourquoi deux#

Un produit d'entreprise doit pouvoir se déposer là où l'entreprise est déjà. Certaines ont un serveur, un systemd et un administrateur ; d'autres ont un hébergement mutualisé à quatre euros par mois et un accès FTP. L'édition Node s'adresse aux premières, l'édition PHP aux secondes. Refuser les secondes aurait été refuser la moitié des entreprises qui ont justement le plus besoin d'un outil de gestion.

Ce qui est strictement identique#

ÉlémentNodePHP
Espaces fonctionnels5151
Tables en base142142
Colonnes13111311
Langues d'interface1616
Clés de traduction27652792
Modules optionnels77
Événements de webhook88
Ressources d'API99

Le schéma étant le même, une base passe d'une édition à l'autre sans conversion : arrêtez l'une, copiez app.sqlite et les dossiers de fichiers, démarrez l'autre. Les mots de passe fonctionnent — les deux éditions lisent le même format de hachage. C'est le test le plus honnête de la parité, et il est passé.

Ce qui diffère#

La forme de quelques adresses#

531 routes côté Node, 513 côté PHP. L'écart n'est pas un manque : ce sont les mêmes fonctions écrites plus compactement.

  • L'API. Node déclare ses neuf ressources une par une (/api/v1/collaborateurs, /api/v1/services…) ; PHP les sert sous une route paramétrée. Les neuf répondent, la racine les annonce toutes les neuf, et un test les appelle une par une pour le prouver.
  • L'installation. Node guide en cinq étapes, PHP tient dans une page et un seul envoi. Les mêmes cinq informations sont demandées : langue, prérequis, entreprise, jours de congés annuels, compte d'administration.
  • Les droits transverses. Node a une route par droit, PHP une seule route paramétrée /admin/droits/{flag}.

Ces vingt-huit différences de forme ne sont pas affirmées de mémoire : le fichier tests/test_parity.php les exerce toutes, une par une.

Le balayage périodique#

Node porte son propre ordonnanceur : le serveur tourne en permanence, il se réveille tout seul. PHP ne vit qu'au moment d'une requête : les mêmes huit opérations passent par tools/cron.php, appelé par le cron de l'hébergeur. Même code métier, même effet, déclencheur différent.

Les dates#

Node écrit ses dates avec Intl, intégré à V8. PHP fait de même quand l'extension intl est présente — même moteur ICU, mêmes résultats au caractère près. Quand elle manque, les noms de jours et de mois viennent des dictionnaires de traduction : la date reste juste et traduite, l'ordre des éléments peut différer dans quelques langues.

Ce qui ne diffère pas et qu'on croirait devoir différer#

SujetDans les deux éditions
Codes QR (double authentification)Encodeur écrit à la main côté PHP, validé octet pour octet contre la bibliothèque employée côté Node, sur seize longueurs de texte.
Archives de sauvegardetar.gz écrit sans dépendance des deux côtés, même contenu, mêmes empreintes SHA-256.
Relève comptable IMAPClient IMAP écrit dans le produit des deux côtés.
PDF, CSV, importÉcrits dans le produit, mêmes fichiers en sortie.
Journal d'auditChaînage d'empreintes identique : une ligne modifiée rompt la chaîne, des deux côtés.
Politique de sécurité HTTPMêmes en-têtes, même CSP à nonce, même absence de JavaScript indispensable.

Laquelle choisir#

Votre situationL'édition
Hébergement mutualisé, accès FTP, pas de ligne de commandePHP — c'est exactement le cas visé
Serveur à vous, systemd, un administrateurNode
Vous savez déjà administrer l'un des deuxCelui-là. La parité rend le choix réversible.
Beaucoup d'utilisateurs simultanésNode — un processus permanent, la base déjà ouverte
Vous hésitezPHP — moins de pièces à entretenir, et la migration vers Node reste une copie de fichiers

Comment la parité est tenue#

Elle n'est pas une intention, c'est une vérification. À chaque modification, quatre comparaisons sont passées :

  1. Les routes — extraites des deux côtés et comparées ; tout écart doit être une différence documentée.
  2. Les fonctions — les noms exportés par chaque module, comparés module par module.
  3. Le schéma — tables et colonnes relevées dans les deux bases et comparées.
  4. Les écrans — les deux éditions démarrées côte à côte et parcourues par un navigateur réel, page par page, avec comparaison du code de réponse et de la structure.

Ces quatre passes ont trouvé de vrais défauts — dont deux qui touchaient les deux éditions. C'est ce qui les rend utiles : une parité qu'on ne mesure pas est une parité qu'on a perdue sans le savoir.

À quoi s'ajoutent les suites de tests : 802 cas côté Node, 572 côté PHP, soit 1374 en tout.

Documentation de Toutadmin — construite le 2026-09-13. Site autonome, indépendant du logiciel.