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#
| Elemento | Node | PHP |
|---|---|---|
| Espacios de negocio | 51 | 51 |
| Tablas en la base | 142 | 142 |
| Columnas | 1311 | 1311 |
| Idiomas de interfaz | 16 | 16 |
| Claves de traducción | 2765 | 2792 |
| Módulos opcionales | 7 | 7 |
| Eventos de webhook | 8 | 8 |
| Recursos de la API | 9 | 9 |
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#
| Asunto | En 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 seguridad | tar.gz escrito sin dependencias en ambos lados, mismo contenido, mismas huellas SHA-256. |
| Buzón contable IMAP | Cliente IMAP escrito dentro del producto en ambos lados. |
| PDF, CSV, importación | Escritos dentro del producto, mismos archivos de salida. |
| Registro de auditoría | Encadenado de huellas idéntico: una línea modificada rompe la cadena, en ambos lados. |
| Política de seguridad HTTP | Mismas cabeceras, misma CSP con nonce, misma ausencia de JavaScript imprescindible. |
Cuál elegir#
| Su situación | La edición |
|---|---|
| Alojamiento compartido, acceso FTP, sin línea de comandos | PHP: exactamente el caso previsto |
Servidor propio, systemd, un administrador | Node |
| Ya sabe administrar una de las dos | Esa. La paridad hace reversible la elección. |
| Muchas personas a la vez | Node: un proceso permanente, la base ya abierta |
| Duda | PHP: 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:
- Las rutas: extraídas de ambos lados y comparadas; toda discrepancia debe ser una diferencia documentada.
- Las funciones: los nombres exportados por cada módulo, comparados módulo a módulo.
- El esquema: tablas y columnas leídas en ambas bases y comparadas.
- 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.
Instalar la edición Node
Servicio, proxy inverso, TLS, copias de seguridad, actualización.
Instalar la edición PHP
Alojamiento compartido, permisos, cron, TLS.
Documentación de Toutadmin, construida el 2026-09-13. Sitio autónomo, independiente del software.