iKidz English
Szkoła języka angielskiego dla dzieci z Torrejón de Ardoz (Madryt) miała stronę, blog i aplikację edukacyjną rozrzucone po trzech miejscach, na hostingu, który lada dzień miał się sam odnowić, i z elementami zepsutymi od lat. Połączyłem wszystko w jej własnej domenie, na jej własnym serwerze i z panelem, dzięki któremu zarządza tym bez zależności od kogokolwiek. Strona i blog działały w produkcji, z HTTPS, w niecałe 48 godzin od zlecenia.
Wyzwanie: trzy elementy, trzy miejsca i tykający zegar
iKidz English to szkoła języka angielskiego z Torrejón de Ardoz z programami dla dzieci, nastolatków i dorosłych, modelem franczyzowym i dekadą własnych treści edukacyjnych. Jej obecność w sieci rosła warstwami, a każda warstwa żyła osobno:
- Strona firmowaDziałała na starym hostingu, który za kilka dni miał się sam odnowić. Po wejściu przez „https” pojawiało się ostrzeżenie o zagrożeniu i strona innej firmy, formularze kontaktowy i franczyzowy niczego nie wysyłały, a przycisk w menu prowadzący do aplikacji kierował na martwą stronę.
- Blog „Vamos Creciendo”Dziesięć lat artykułów w innej domenie i na innym hostingu, z linkami, które przez lata rozeszły się po całym internecie. Dostawca nie pozwalał nawet wyeksportować bazy danych.
- iKidz Space, aplikacja uczniówJej serwer odpowiadał „ta aplikacja nie istnieje”, aplikacji na Androida nie było już w Google Play, a z oryginalnego programu został tylko kod, bez jednego rekordu danych.
- PocztaSkrzynki szkoły działały na tym samym hostingu, który właśnie wygasał.
I jeden jasny warunek od pierwszego e-maila: wygląd zostaje. Klient był zadowolony ze swojej strony, więc zadanie polegało na wymianie wszystkiego pod spodem tak, żeby z zewnątrz nic nie było widać.
Co zbudowałem
1. Własny serwer i ta sama strona, nowa w środku
- Serwer w chmurze zarejestrowany na szkołęnginx, PHP 8.3 i MariaDB, z firewallem, fail2ban i automatycznie odnawianym HTTPS od Let's Encrypt. Za hosting płaci i kontroluje go sam klient: nie zależy to ode mnie.
- Sześć podstron przebudowanych w PHP, z tymi samymi adresami URLWspólny nagłówek, menu i stopka, porównane zrzut po zrzucie z oryginałami: ten sam wygląd i te same adresy, żeby nie stracić ani jednej pozycji w Google.
- Strona główna z 4 001 KB do 1 902 KB i zero żądań do zewnętrznych serwerówCzcionki i baner cookies są serwowane z własnego serwera, bez Google Fonts i zewnętrznych CDN. Na stronie dla dzieci, z własną polityką prywatności, to ma znaczenie.
- Formularze napisane od zeraWiadomości trafiają na skrzynkę, a do tego zapisują się w panelu i w osobnym pliku, na wypadek gdyby e-mail zaginął albo wylądował w spamie.
- Dostępność i analityka28 zdjęć z tekstem alternatywnym pisanym po obejrzeniu każdego z nich i podłączone Google Analytics 4: stara analityka nie mierzyła niczego od 2023 roku.
2. Blog: dziesięć lat treści bez utraty ani jednego linku
- Pełny zrzut przez REST API WordPressaHosting nie pozwalał na eksport, więc wszystko wyciągnięto przez API: 166 artykułów, 3 strony, 706 kategorii i tagów, 737 komentarzy i 2 414 plików (812 MB), policzonych i sprawdzonych jeden po drugim.
- Własny importer do edytowalnych blokówKażdy artykuł zamienia się w bloki, które zespół może edytować. Sprawdzone, że ponowne zapisanie dowolnego z nich daje dokładnie ten sam HTML: 166 na 166.
- 875 przekierowań 301, każde jednym skokiemKażdy stary link prowadzi prosto do swojego artykułu w nowej domenie, a właśnie to chroni pozycje w wyszukiwarce. Stare zdjęcia i kanał RSS nadal odpowiadają pod swoimi dotychczasowymi adresami.
- Lista wpisów, która wreszcie dobrze wyglądaZdjęcie przy 164 ze 166 artykułów (prawie żaden nie miał obrazka wyróżniającego, więc używane jest pierwsze zdjęcie z treści), przyciski udostępniania, które nie ładują trackerów, i filmy z YouTube w trybie bez cookies.
3. iKidz Space: aplikacja uczniów wskrzeszona w przeglądarce
- Przebudowana w PHP, w tym samym paneluDzieli bazę danych ze stroną, działa we własnej subdomenie i jest zarządzana z tego samego backoffice'u co blog.
- Wszystkie 23 oryginalne aktywności, bez ponownej kompilacjiTo gry HTML5 z 2017 roku stworzone z myślą o aplikacji na Androida. Most w JavaScripcie daje im to, co wcześniej zapewniała natywna aplikacja, i działają w każdej przeglądarce. Wszystkie 23 przetestowane w prawdziwym Chrome, bez ani jednego błędu.
- Bezpieczny dostęp oparty na sesjiKażde dziecko widzi i zapisuje tylko swoje postępy. Trzygodzinne sesje, żeby nie tracić wyników w połowie lekcji, i limit prób logowania, który nie blokuje całej klasy łączącej się z internetem przez to samo łącze.
- Uczniowie, zaproszenia i postępyRejestracja uczniów z zaproszeniem wysyłanym e-mailem do rodziny (można podać dwa adresy), śledzenie postępów aktywność po aktywności oraz kontrola nad tym, które aktywności są widoczne i w jakiej kolejności.
- Bez analityki w strefie dla dzieciTo decyzja projektowa: ich nawigacja nie wychodzi poza serwer szkoły.
4. Children's Day Map, uratowana (i z przedłużoną datą ważności)
- Osierocona aplikacja wraca do domuPubliczna aplikacja z 2014 roku, do której linkował blog, została bez domu: jej pierwotna domena przekierowywała do sieci reklamowej, a samej aplikacji nie było już ani w App Store, ani w Google Play. Teraz jest serwowana z domeny szkoły, bez zależności od kogokolwiek.
- Przeterminowana od 2024 roku i naprawionaAkceptowała tylko lata od 2014 do 2023, więc od 1 stycznia 2024 nie dało się przejść dalej niż pierwszy ekran. Załatałem kod z 2014 roku, żeby przenieść kalendarz na lata 2021–2030, z nowymi ilustracjami i nagraniami lat wygenerowanymi przez AI na podstawie oryginalnego głosu.
5. Poczta przeniesiona bez utraty ani jednej wiadomości
- 4 skrzynki i 8 438 e-mailiOdebrane, wysłane, szkice i foldery, z oryginalnymi datami, plus 80 kontaktów, przeniesione do nowego hostingu poczty.
- Zmiana bez przerwPrzejście z jednego serwera pocztowego na drugi zaplanowano tak, żeby nic nie zginęło po drodze, a przy okazji poprawiono konfigurację antyspamową domeny, w której błąd sprawiał, że w ogóle nie działała.
6. Panel, dzięki któremu szkoła radzi sobie sama
- Backoffice na zamówienieStrona główna edytowalna sekcjami, podstrony, blokowy edytor bloga, biblioteka obrazów, która sama odchudza zdjęcia z telefonu i usuwa z nich lokalizację, wiadomości z formularzy, uczniowie, aktywności, użytkownicy i ustawienia.
- Bezpieczeństwo w standardzieHasła w Argon2id, ochrona CSRF we wszystkich formularzach i oczyszczanie publikowanego HTML-a.
- Siatka bezpieczeństwaJeśli baza danych nie odpowiada, strony nadal są serwowane. Codzienne kopie zapasowe w kilku miejscach, sprawdzone przez rzeczywiste odtworzenie.
- Instrukcja przekazania w PDFŻeby zespół mógł zmieniać teksty, zdjęcia, artykuły i dostępy bez dzwonienia do kogokolwiek.
Rezultat
Strona, blog i aplikacja działają teraz w jednej domenie, na serwerze należącym do szkoły i są zarządzane z jednego panelu, z dotychczasowym wyglądem. Po drodze nic nie zginęło: ani artykuł, ani zdjęcie, ani e-mail, ani link, a wszystko zostało policzone jedno po drugim, żeby to potwierdzić.
Hosting potaniał z około 650 dolarów rocznie do niecałych 100 € (około 500 € oszczędności rocznie), i to na znacznie mocniejszej maszynie. Przy okazji naprawiono około dziesięciu odziedziczonych błędów, których nikt wcześniej nie zauważył: od formularzy, które niczego nie wysyłały, po promocję z 2016 roku wciąż wyświetlaną na telefonach.
Kilka zrzutów ekranu
Strona i blog na wszystkich urządzeniach
iKidz Space, Day Map i panel
Stack
Strona klienta: ikidzenglish.com — szkoła języka angielskiego w Torrejón de Ardoz.
Twoja strona, blog albo aplikacja są rozproszone i poza Twoją kontrolą? Poznaj moją usługę tworzenia stron internetowych na zamówienie.
Inne projekty
Tu Póliza de Salud
Ratowanie strony brokera ubezpieczeniowego, 1600+ postów i własny backoffice.
Cristina Tol-2
Od strony bez wersji mobilnej do dwujęzycznego, dobrze pozycjonowanego WordPressa.
Mi Cuadro Médico
Krajowy katalog sieci medycznych z tysiącami stron programatycznych.
Chcesz uporządkować i uratować swoją stronę?
Migracje bez strat, PHP na zamówienie i panele, z których Twój zespół korzysta samodzielnie. Rozmowa 30 minut bez zobowiązań.
Poproś o bezpłatną wycenę

