Duas edições, um produto
O Toutadmin existe em dois exemplares: um corre sobre Node.js, o outro sobre PHP. Não são dois produtos, nem uma versão reduzida e outra completa. São os mesmos 51 espaços, o mesmo esquema de 142 tabelas, os mesmos 16 idiomas, os mesmos ecrãs. Esta página diz o que realmente os separa — e não é muito.
Porquê duas#
Um produto de empresa tem de poder instalar-se onde a empresa já está. Algumas têm um
servidor, um systemd e um administrador; outras têm um alojamento partilhado
de quatro euros por mês e um acesso FTP. A edição Node dirige-se às primeiras, a edição
PHP às segundas. Recusar as segundas teria sido recusar metade das empresas que mais
precisam de uma ferramenta de gestão.
O que é rigorosamente idêntico#
| Elemento | Node | PHP |
|---|---|---|
| Espaços de negócio | 51 | 51 |
| Tabelas na base | 142 | 142 |
| Colunas | 1311 | 1311 |
| Idiomas de interface | 16 | 16 |
| Chaves de tradução | 2765 | 2792 |
| Módulos opcionais | 7 | 7 |
| Eventos de webhook | 8 | 8 |
| Recursos da API | 9 | 9 |
Sendo o esquema o mesmo, uma base passa de uma edição à outra sem
conversão: pare uma, copie app.sqlite e as pastas de ficheiros,
arranque a outra. As palavras-passe continuam a funcionar — as duas edições leem o mesmo
formato de resumo. É o teste de paridade mais honesto que há, e está passado.
O que difere#
A forma de alguns endereços#
531 rotas do lado Node, 513 do lado PHP. A diferença não é uma falta: são as mesmas funções escritas de forma mais compacta.
-
A API. O Node declara os seus nove recursos um a um
(
/api/v1/collaborateurs,/api/v1/services…); o PHP serve-os sob uma única rota com parâmetro. Os nove respondem, a raiz anuncia-os todos, e um teste chama-os um a um para o provar. - A instalação. O Node guia em cinco passos, o PHP cabe numa página e um só envio. São pedidas as mesmas cinco informações: idioma, pré-requisitos, empresa, dias de férias anuais, conta de administração.
-
As permissões transversais. O Node tem uma rota por permissão, o PHP
uma única rota com parâmetro
/admin/droits/{flag}.
Estas vinte e oito diferenças de forma não são afirmadas de memória: o ficheiro
tests/test_parity.php exercita-as a todas, uma a uma.
A varredura periódica#
O Node traz o seu próprio agendador: o servidor corre em permanência, acorda sozinho. O
PHP só vive durante um pedido: as mesmas oito operações passam por
tools/cron.php, chamado pelo cron do alojamento. Mesmo código de negócio,
mesmo efeito, gatilho diferente.
As datas#
O Node escreve as suas datas com Intl, integrado no V8. O PHP faz o mesmo
quando a extensão intl está presente — mesmo motor ICU, mesmos resultados ao
carácter. Quando falta, os nomes de dias e meses vêm dos dicionários de tradução: a data
continua certa e traduzida, mas a ordem dos elementos pode diferir nalguns idiomas.
O que não difere e que se julgaria dever diferir#
| Assunto | Nas duas edições |
|---|---|
| Códigos QR (dupla autenticação) | Codificador escrito à mão do lado PHP, validado byte a byte contra a biblioteca usada do lado Node, em dezasseis comprimentos de texto. |
| Arquivos de cópia de segurança | tar.gz escrito sem dependências dos dois lados, mesmo conteúdo, mesmos resumos SHA-256. |
| Caixa de correio contabilística IMAP | Cliente IMAP escrito dentro do produto dos dois lados. |
| PDF, CSV, importação | Escritos dentro do produto, mesmos ficheiros à saída. |
| Registo de auditoria | Encadeamento de resumos idêntico: uma linha alterada quebra a cadeia, dos dois lados. |
| Política de segurança HTTP | Mesmos cabeçalhos, mesma CSP com nonce, mesma ausência de JavaScript indispensável. |
Qual escolher#
| A sua situação | A edição |
|---|---|
| Alojamento partilhado, acesso FTP, sem linha de comandos | PHP — é exatamente o caso previsto |
Servidor seu, systemd, um administrador | Node |
| Já sabe administrar uma das duas | Essa. A paridade torna a escolha reversível. |
| Muitas pessoas ao mesmo tempo | Node — um processo permanente, a base já aberta |
| Está indeciso | PHP — menos peças a manter, e passar ao Node continua a ser copiar ficheiros |
Como a paridade se mantém#
Não é uma intenção, é uma verificação. Em cada alteração passam quatro comparações:
- As rotas — extraídas dos dois lados e comparadas; qualquer desvio tem de ser uma diferença documentada.
- As funções — os nomes exportados por cada módulo, comparados módulo a módulo.
- O esquema — tabelas e colunas lidas nas duas bases e comparadas.
- Os ecrãs — as duas edições arrancadas lado a lado e percorridas por um navegador real, página a página, comparando código de resposta e estrutura.
Estas quatro passagens encontraram defeitos reais — dois deles presentes em ambas as edições. É o que as torna úteis: uma paridade que não se mede é uma paridade que se perdeu sem se saber.
A que se juntam as baterias de testes: 802 casos do lado Node, 572 do lado PHP, 1374 ao todo.
Instalar a edição Node
Serviço, proxy inverso, TLS, cópias de segurança, atualização.
Instalar a edição PHP
Alojamento partilhado, permissões, cron, TLS.
Documentação do Toutadmin — construída em 2026-09-13. Site autónomo, independente do software.