T ToutadminDocumentación

Dos ediciones, un producto

Toutadmin existe en dos ejemplares: uno funciona sobre Node.js, el otro sobre PHP. No son dos productos, ni una versión recortada y otra completa. Son los mismos 51 espacios, el mismo esquema de 142 tablas, los mismos 16 idiomas, las mismas pantallas. Esta página dice qué los separa de verdad, y no es gran cosa.

Por qué dos#

Un producto de empresa tiene que poder instalarse allí donde la empresa ya está. Algunas tienen un servidor, un systemd y un administrador; otras tienen un alojamiento compartido de cuatro euros al mes y un acceso FTP. La edición Node se dirige a las primeras, la edición PHP a las segundas. Rechazar a las segundas habría sido rechazar a la mitad de las empresas que más necesitan una herramienta de gestión.

Lo que es estrictamente idéntico#

ElementoNodePHP
Espacios de negocio5151
Tablas en la base142142
Columnas13111311
Idiomas de interfaz1616
Claves de traducción27652792
Módulos opcionales77
Eventos de webhook88
Recursos de la API99

Como el esquema es el mismo, una base pasa de una edición a otra sin conversión: detenga una, copie app.sqlite y las carpetas de archivos, arranque la otra. Las contraseñas siguen funcionando: ambas ediciones leen el mismo formato de huella. Es la prueba de paridad más honesta que existe, y está superada.

Lo que difiere#

La forma de unas cuantas direcciones#

531 rutas del lado Node, 513 del lado PHP. La diferencia no es una carencia: son las mismas funciones escritas de forma más compacta.

  • La API. Node declara sus nueve recursos uno a uno (/api/v1/collaborateurs, /api/v1/services…); PHP los sirve bajo una sola ruta con parámetro. Los nueve responden, la raíz los anuncia los nueve, y una prueba los llama uno a uno para demostrarlo.
  • La instalación. Node guía en cinco pasos, PHP cabe en una página y un solo envío. Se piden las mismas cinco informaciones: idioma, requisitos, empresa, días de vacaciones anuales, cuenta de administración.
  • Los permisos transversales. Node tiene una ruta por permiso, PHP una sola ruta con parámetro /admin/droits/{flag}.

Estas veintiocho diferencias de forma no se afirman de memoria: el archivo tests/test_parity.php las ejercita todas, una por una.

El barrido periódico#

Node lleva su propio planificador: el servidor funciona de continuo, se despierta solo. PHP solo vive durante una petición: las mismas ocho operaciones pasan por tools/cron.php, llamado por el cron del alojamiento. Mismo código de negocio, mismo efecto, disparador distinto.

Las fechas#

Node escribe sus fechas con Intl, integrado en V8. PHP hace lo mismo cuando la extensión intl está presente: mismo motor ICU, mismos resultados carácter a carácter. Cuando falta, los nombres de días y meses vienen de los diccionarios de traducción: la fecha sigue siendo correcta y traducida, pero el orden de los elementos puede diferir en algunos idiomas.

Lo que no difiere y uno creería que debería#

AsuntoEn ambas ediciones
Códigos QR (doble autenticación)Codificador escrito a mano del lado PHP, validado byte a byte contra la biblioteca empleada del lado Node, con dieciséis longitudes de texto.
Archivos de copia de seguridadtar.gz escrito sin dependencias en ambos lados, mismo contenido, mismas huellas SHA-256.
Buzón contable IMAPCliente IMAP escrito dentro del producto en ambos lados.
PDF, CSV, importaciónEscritos dentro del producto, mismos archivos de salida.
Registro de auditoríaEncadenado de huellas idéntico: una línea modificada rompe la cadena, en ambos lados.
Política de seguridad HTTPMismas cabeceras, misma CSP con nonce, misma ausencia de JavaScript imprescindible.

Cuál elegir#

Su situaciónLa edición
Alojamiento compartido, acceso FTP, sin línea de comandosPHP: exactamente el caso previsto
Servidor propio, systemd, un administradorNode
Ya sabe administrar una de las dosEsa. La paridad hace reversible la elección.
Muchas personas a la vezNode: un proceso permanente, la base ya abierta
DudaPHP: menos piezas que mantener, y migrar a Node sigue siendo copiar archivos

Cómo se mantiene la paridad#

No es una intención, es una verificación. En cada modificación se pasan cuatro comparaciones:

  1. Las rutas: extraídas de ambos lados y comparadas; toda discrepancia debe ser una diferencia documentada.
  2. Las funciones: los nombres exportados por cada módulo, comparados módulo a módulo.
  3. El esquema: tablas y columnas leídas en ambas bases y comparadas.
  4. Las pantallas: ambas ediciones arrancadas una al lado de la otra y recorridas por un navegador real, página a página, comparando el código de respuesta y la estructura.

Estas cuatro pasadas han encontrado defectos reales, dos de ellos presentes en ambas ediciones. Eso es lo que las hace útiles: una paridad que no se mide es una paridad que se ha perdido sin saberlo.

A lo que se añaden las baterías de pruebas: 802 casos del lado Node, 572 del lado PHP, 1374 en total.

Documentación de Toutadmin, construida el 2026-09-13. Sitio autónomo, independiente del software.