T ToutadminDocumentação

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#

ElementoNodePHP
Espaços de negócio5151
Tabelas na base142142
Colunas13111311
Idiomas de interface1616
Chaves de tradução27652792
Módulos opcionais77
Eventos de webhook88
Recursos da API99

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#

AssuntoNas 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çatar.gz escrito sem dependências dos dois lados, mesmo conteúdo, mesmos resumos SHA-256.
Caixa de correio contabilística IMAPCliente IMAP escrito dentro do produto dos dois lados.
PDF, CSV, importaçãoEscritos dentro do produto, mesmos ficheiros à saída.
Registo de auditoriaEncadeamento de resumos idêntico: uma linha alterada quebra a cadeia, dos dois lados.
Política de segurança HTTPMesmos cabeçalhos, mesma CSP com nonce, mesma ausência de JavaScript indispensável.

Qual escolher#

A sua situaçãoA edição
Alojamento partilhado, acesso FTP, sem linha de comandosPHP — é exatamente o caso previsto
Servidor seu, systemd, um administradorNode
Já sabe administrar uma das duasEssa. A paridade torna a escolha reversível.
Muitas pessoas ao mesmo tempoNode — um processo permanente, a base já aberta
Está indecisoPHP — 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:

  1. As rotas — extraídas dos dois lados e comparadas; qualquer desvio tem de ser uma diferença documentada.
  2. As funções — os nomes exportados por cada módulo, comparados módulo a módulo.
  3. O esquema — tabelas e colunas lidas nas duas bases e comparadas.
  4. 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.

Documentação do Toutadmin — construída em 2026-09-13. Site autónomo, independente do software.