iKidz English — strona główna szkoły angielskiego dla dzieci, przeniesiona na własny serwer
166 Przeniesionych artykułów bloga
875 Przekierowań 301, zero martwych linków
23 Uratowanych aktywności z aplikacji
8 438 Przeniesionych e-maili, 0 utraconych

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

PHP 8.3 (bez frameworka) MariaDB nginx Hetzner Cloud Let's Encrypt Backoffice na zamówienie TinyMCE Migracja WordPressa (REST API) Przekierowania 301 Phaser (gry HTML5) Migracja poczty IMAP Automatyczne kopie zapasowe ElevenLabs (głos AI) Google Analytics 4

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.

Twoja strona działa na hostingu, którego nie kontrolujesz, albo ma martwe elementy?

Powiem Ci, co tam jest, co da się uratować i jak przenieść wszystko w miejsce, które należy do Ciebie, bez utraty treści i pozycji w Google. Pierwszy przegląd bez zobowiązań i wiążąca wycena na piśmie.

Porozmawiajmy o Twojej stronie →

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ę