Dwie edycje, jeden produkt
Toutadmin istnieje w dwóch egzemplarzach: jeden działa na Node.js, drugi na PHP. To nie są dwa produkty ani wersja okrojona i pełna. To te same przestrzenie (jest ich 51), ten sam schemat o 142 tabelach, te same 16 języki, te same ekrany. Ta strona mówi, co je naprawdę różni — a różni niewiele.
Dlaczego dwie#
Produkt dla firm musi dać się zainstalować tam, gdzie firma już jest. Jedne mają serwer,
systemd i administratora; inne mają hosting współdzielony za cztery euro
miesięcznie i dostęp FTP. Edycja Node zwraca się do pierwszych, edycja PHP do drugich.
Odprawić te drugie znaczyłoby odprawić połowę firm, które narzędzia do zarządzania
potrzebują najbardziej.
Co jest ściśle identyczne#
| Element | Node | PHP |
|---|---|---|
| Przestrzenie robocze | 51 | 51 |
| Tabele w bazie | 142 | 142 |
| Kolumny | 1311 | 1311 |
| Języki interfejsu | 16 | 16 |
| Klucze tłumaczeń | 2765 | 2792 |
| Moduły opcjonalne | 7 | 7 |
| Zdarzenia webhooków | 8 | 8 |
| Zasoby API | 9 | 9 |
Skoro schemat jest ten sam, baza przechodzi z jednej edycji do drugiej bez
konwersji: zatrzymaj jedną, skopiuj app.sqlite oraz katalogi
plików, uruchom drugą. Hasła działają dalej — obie edycje czytają ten sam format skrótu.
To najuczciwszy test zgodności, jaki istnieje, i jest zdany.
Co się różni#
Kształt kilku adresów#
531 tras po stronie Node, 513 po stronie PHP. Ta różnica nie jest brakiem: to te same funkcje zapisane zwięźlej.
-
API. Node deklaruje swoje dziewięć zasobów po kolei
(
/api/v1/collaborateurs,/api/v1/services…); PHP obsługuje je jedną trasą z parametrem. Wszystkie dziewięć odpowiada, korzeń ogłasza wszystkie dziewięć, a test wywołuje je pojedynczo, żeby to udowodnić. - Instalacja. Node prowadzi w pięciu krokach, PHP mieści się na jednej stronie i jednym wysłaniu. Pytania są te same: język, wymagania, firma, dni urlopu rocznego, konto administratora.
-
Uprawnienia przekrojowe. Node ma jedną trasę na uprawnienie, PHP jedną
trasę z parametrem
/admin/droits/{flag}.
Tych dwudziestu ośmiu różnic w kształcie nie stwierdza się z pamięci: plik
tests/test_parity.php sprawdza każdą z nich, jedną po drugiej.
Przebieg okresowy#
Node niesie własny harmonogram: serwer działa bez przerwy i budzi się sam. PHP żyje tylko
w czasie żądania: te same osiem operacji przechodzi przez tools/cron.php,
wywoływany przez cron hostingu. Ten sam kod dziedzinowy, ten sam skutek, inny wyzwalacz.
Daty#
Node zapisuje daty przez Intl, wbudowany w V8. PHP robi to samo, gdy obecne
jest rozszerzenie intl — ten sam silnik ICU, ten sam wynik co do znaku. Gdy
go brak, nazwy dni i miesięcy pochodzą ze słowników tłumaczeń: data pozostaje poprawna i
przetłumaczona, ale kolejność elementów może się w kilku językach różnić.
Co się nie różni, choć wydawałoby się, że powinno#
| Zagadnienie | W obu edycjach |
|---|---|
| Kody QR (uwierzytelnianie dwuskładnikowe) | Koder napisany ręcznie po stronie PHP, sprawdzony bajt po bajcie względem biblioteki używanej po stronie Node, na szesnastu długościach tekstu. |
| Archiwa kopii zapasowych | tar.gz zapisywany bez żadnej zależności po obu stronach, ta sama zawartość, te same skróty SHA-256. |
| Księgowa skrzynka IMAP | Klient IMAP napisany wewnątrz produktu po obu stronach. |
| PDF, CSV, import | Napisane wewnątrz produktu, te same pliki na wyjściu. |
| Dziennik audytu | Identyczne łańcuchowanie skrótów: zmieniony wiersz zrywa łańcuch, po obu stronach. |
| Polityka bezpieczeństwa HTTP | Te same nagłówki, ta sama CSP z wartością jednorazową, ten sam brak niezbędnego JavaScriptu. |
Którą wybrać#
| Twoja sytuacja | Edycja |
|---|---|
| Hosting współdzielony, dostęp FTP, brak wiersza poleceń | PHP — dokładnie ten przypadek |
Własny serwer, systemd, administrator | Node |
| Umiesz już administrować jedną z nich | Tą. Zgodność sprawia, że wybór jest odwracalny. |
| Wielu użytkowników naraz | Node — jeden stały proces, baza już otwarta |
| Wahasz się | PHP — mniej elementów do utrzymania, a przejście na Node nadal jest kopiowaniem plików |
Jak utrzymywana jest zgodność#
To nie zamiar, tylko sprawdzenie. Przy każdej zmianie przechodzą cztery porównania:
- Trasy — wyciągnięte z obu stron i porównane; każda rozbieżność musi być udokumentowaną różnicą.
- Funkcje — nazwy udostępniane przez każdy moduł, porównywane moduł po module.
- Schemat — tabele i kolumny odczytane z obu baz i porównane.
- Ekrany — obie edycje uruchomione obok siebie i obejrzane przez prawdziwą przeglądarkę, strona po stronie, z porównaniem kodu odpowiedzi i struktury.
Te cztery przejścia znalazły prawdziwe usterki — w tym dwie dotykające obu edycji. To właśnie czyni je użytecznymi: zgodność, której się nie mierzy, jest zgodnością, którą się utraciło, nie wiedząc o tym.
Do tego dochodzą zestawy testów: 802 przypadków po stronie Node, 572 po stronie PHP, razem 1374.
Zainstalować edycję Node
Usługa, serwer pośredniczący, TLS, kopie zapasowe, aktualizacja.
Zainstalować edycję PHP
Hosting współdzielony, uprawnienia, cron, TLS.
Dokumentacja Toutadmin — zbudowana 2026-09-13. Witryna samodzielna, niezależna od oprogramowania.