Due edizioni, un prodotto
Toutadmin esiste in due esemplari: uno gira su Node.js, l'altro su PHP. Non sono due prodotti, né una versione ridotta e una completa. Sono gli stessi 51 spazi, lo stesso schema di 142 tabelle, le stesse 16 lingue, le stesse schermate. Questa pagina dice cosa li separa davvero — ed è poca cosa.
Perché due#
Un prodotto aziendale deve potersi installare dove l'azienda già si trova. Alcune hanno
un server, un systemd e un amministratore; altre hanno un hosting condiviso
da quattro euro al mese e un accesso FTP. L'edizione Node si rivolge alle prime,
l'edizione PHP alle seconde. Rifiutare le seconde avrebbe voluto dire rifiutare metà
delle aziende che di uno strumento di gestione hanno più bisogno.
Ciò che è rigorosamente identico#
| Elemento | Node | PHP |
|---|---|---|
| Spazi di lavoro | 51 | 51 |
| Tabelle nella banca dati | 142 | 142 |
| Colonne | 1311 | 1311 |
| Lingue dell'interfaccia | 16 | 16 |
| Chiavi di traduzione | 2765 | 2792 |
| Moduli opzionali | 7 | 7 |
| Eventi di webhook | 8 | 8 |
| Risorse dell'API | 9 | 9 |
Essendo lo schema lo stesso, una banca dati passa da un'edizione all'altra senza
conversione: fermate l'una, copiate app.sqlite e le cartelle dei
file, avviate l'altra. Le password continuano a funzionare: le due edizioni leggono lo
stesso formato di impronta. È la prova di parità più onesta che ci sia, ed è superata.
Ciò che differisce#
La forma di qualche indirizzo#
531 rotte sul lato Node, 513 sul lato PHP. Lo scarto non è una mancanza: sono le stesse funzioni scritte in modo più compatto.
-
L'API. Node dichiara le sue nove risorse una per una
(
/api/v1/collaborateurs,/api/v1/services…); PHP le serve sotto un'unica rotta parametrica. Tutte e nove rispondono, la radice le annuncia tutte e nove, e un test le chiama una per una per dimostrarlo. - L'installazione. Node guida in cinque passi, PHP sta in una pagina e un solo invio. Sono richieste le stesse cinque informazioni: lingua, prerequisiti, azienda, giorni di ferie annuali, account di amministrazione.
-
I diritti trasversali. Node ha una rotta per diritto, PHP un'unica
rotta parametrica
/admin/droits/{flag}.
Queste ventotto differenze di forma non sono affermate a memoria: il file
tests/test_parity.php le esercita tutte, una per una.
La scansione periodica#
Node porta con sé il proprio pianificatore: il server gira in permanenza, si sveglia da
solo. PHP vive solo durante una richiesta: le stesse otto operazioni passano per
tools/cron.php, richiamato dal cron dell'hosting. Stesso codice di dominio,
stesso effetto, innesco diverso.
Le date#
Node scrive le sue date con Intl, integrato in V8. PHP fa lo stesso quando
l'estensione intl è presente — stesso motore ICU, stessi risultati carattere
per carattere. Quando manca, i nomi dei giorni e dei mesi vengono dai dizionari di
traduzione: la data resta giusta e tradotta, ma l'ordine degli elementi può differire in
qualche lingua.
Ciò che non differisce e che si crederebbe dover differire#
| Argomento | In entrambe le edizioni |
|---|---|
| Codici QR (doppia autenticazione) | Codificatore scritto a mano sul lato PHP, validato byte per byte contro la libreria usata sul lato Node, su sedici lunghezze di testo. |
| Archivi di backup | tar.gz scritto senza dipendenze da entrambi i lati, stesso contenuto, stesse impronte SHA-256. |
| Casella contabile IMAP | Client IMAP scritto dentro il prodotto da entrambi i lati. |
| PDF, CSV, importazione | Scritti dentro il prodotto, stessi file in uscita. |
| Registro di audit | Concatenamento di impronte identico: una riga modificata rompe la catena, da entrambi i lati. |
| Politica di sicurezza HTTP | Stesse intestazioni, stessa CSP con nonce, stessa assenza di JavaScript indispensabile. |
Quale scegliere#
| La vostra situazione | L'edizione |
|---|---|
| Hosting condiviso, accesso FTP, niente riga di comando | PHP — è esattamente il caso previsto |
Server vostro, systemd, un amministratore | Node |
| Sapete già amministrare una delle due | Quella. La parità rende la scelta reversibile. |
| Molte persone insieme | Node — un processo permanente, la banca dati già aperta |
| Siete indecisi | PHP — meno pezzi da mantenere, e passare a Node resta una copia di file |
Come si tiene la parità#
Non è un'intenzione, è una verifica. A ogni modifica si passano quattro confronti:
- Le rotte — estratte da entrambi i lati e confrontate; ogni scarto deve essere una differenza documentata.
- Le funzioni — i nomi esportati da ciascun modulo, confrontati modulo per modulo.
- Lo schema — tabelle e colonne rilevate nelle due banche dati e confrontate.
- Le schermate — le due edizioni avviate fianco a fianco e percorse da un browser reale, pagina per pagina, confrontando codice di risposta e struttura.
Queste quattro passate hanno trovato difetti veri — fra cui due che toccavano entrambe le edizioni. È ciò che le rende utili: una parità che non si misura è una parità che si è persa senza saperlo.
A cui si aggiungono le suite di test: 802 casi sul lato Node, 572 sul lato PHP, 1374 in tutto.
Installare l'edizione Node
Servizio, proxy inverso, TLS, backup, aggiornamento.
Installare l'edizione PHP
Hosting condiviso, permessi, cron, TLS.
Documentazione di Toutadmin — costruita il 2026-09-13. Sito autonomo, indipendente dal software.