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ément | Node | PHP |
|---|---|---|
| Espaces fonctionnels | 51 | 51 |
| Tables en base | 142 | 142 |
| Colonnes | 1311 | 1311 |
| Langues d'interface | 16 | 16 |
| Clés de traduction | 2765 | 2792 |
| Modules optionnels | 7 | 7 |
| Événements de webhook | 8 | 8 |
| Ressources d'API | 9 | 9 |
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#
| Sujet | Dans 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 sauvegarde | tar.gz écrit sans dépendance des deux côtés, même contenu, mêmes empreintes SHA-256. |
| Relève comptable IMAP | Client IMAP écrit dans le produit des deux côtés. |
| PDF, CSV, import | Écrits dans le produit, mêmes fichiers en sortie. |
| Journal d'audit | Chaînage d'empreintes identique : une ligne modifiée rompt la chaîne, des deux côtés. |
| Politique de sécurité HTTP | Mêmes en-têtes, même CSP à nonce, même absence de JavaScript indispensable. |
Laquelle choisir#
| Votre situation | L'édition |
|---|---|
| Hébergement mutualisé, accès FTP, pas de ligne de commande | PHP — c'est exactement le cas visé |
Serveur à vous, systemd, un administrateur | Node |
| Vous savez déjà administrer l'un des deux | Celui-là. La parité rend le choix réversible. |
| Beaucoup d'utilisateurs simultanés | Node — un processus permanent, la base déjà ouverte |
| Vous hésitez | PHP — 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 :
- Les routes — extraites des deux côtés et comparées ; tout écart doit être une différence documentée.
- Les fonctions — les noms exportés par chaque module, comparés module par module.
- Le schéma — tables et colonnes relevées dans les deux bases et comparées.
- 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.
Installer l'édition Node
Service, proxy inverse, TLS, sauvegardes, mise à jour.
Installer l'édition PHP
Hébergement mutualisé, permissions, cron, TLS.
Documentation de Toutadmin — construite le 2026-09-13. Site autonome, indépendant du logiciel.