T ToutadminDocumentazione

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#

ElementoNodePHP
Spazi di lavoro5151
Tabelle nella banca dati142142
Colonne13111311
Lingue dell'interfaccia1616
Chiavi di traduzione27652792
Moduli opzionali77
Eventi di webhook88
Risorse dell'API99

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#

ArgomentoIn 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 backuptar.gz scritto senza dipendenze da entrambi i lati, stesso contenuto, stesse impronte SHA-256.
Casella contabile IMAPClient IMAP scritto dentro il prodotto da entrambi i lati.
PDF, CSV, importazioneScritti dentro il prodotto, stessi file in uscita.
Registro di auditConcatenamento di impronte identico: una riga modificata rompe la catena, da entrambi i lati.
Politica di sicurezza HTTPStesse intestazioni, stessa CSP con nonce, stessa assenza di JavaScript indispensabile.

Quale scegliere#

La vostra situazioneL'edizione
Hosting condiviso, accesso FTP, niente riga di comandoPHP — è esattamente il caso previsto
Server vostro, systemd, un amministratoreNode
Sapete già amministrare una delle dueQuella. La parità rende la scelta reversibile.
Molte persone insiemeNode — un processo permanente, la banca dati già aperta
Siete indecisiPHP — 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:

  1. Le rotte — estratte da entrambi i lati e confrontate; ogni scarto deve essere una differenza documentata.
  2. Le funzioni — i nomi esportati da ciascun modulo, confrontati modulo per modulo.
  3. Lo schema — tabelle e colonne rilevate nelle due banche dati e confrontate.
  4. 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.

Documentazione di Toutadmin — costruita il 2026-09-13. Sito autonomo, indipendente dal software.