Strona, narzędzia i badanie rynku
krystianjawor.pl
Moja własna strona: 176 podstron, kalendarz rezerwacji z regułami po stronie serwera, analityka bez ciasteczek i badanie 106 lokalnych firm — wszystko napisane od zera.
Zobacz na żywo
Najuczciwszym portfolio web developera jest jego własna strona. Trudno sprzedawać szybkie, dobrze zoptymalizowane serwisy z witryny, która ładuje się pięć sekund. Ten projekt jest więc jednocześnie wizytówką i poligonem: wszystko, co proponuję klientom, najpierw działa u mnie.
Wyzwanie
Jednoosobowa działalność konkuruje z agencjami, które mają większe budżety, zespoły i historię. Nie wygram z nimi liczbą realizacji ani wielkością portfolio. Mogę wygrać czymś innym: pokazując, że rozumiem rzeczy, których większość konkurencji nie tyka — i udowadniając to działającymi narzędziami, a nie deklaracjami.
Drugie wyzwanie jest techniczne. Strona miała obsłużyć naraz treści blogowe, katalog usług, strony lokalne pod kilkanaście miast i branż, kreatory formularzy i narzędzia — a przy tym pozostać szybka i możliwa do utrzymania przez jedną osobę.
Decyzje, które podjąłem
Build statyczny zamiast WordPressa. Cały serwis to wygenerowane pliki HTML serwowane bezpośrednio przez nginx. Nie ma bazy przy każdym wejściu, nie ma wtyczek do aktualizowania, nie ma powierzchni do włamania. 176 podstron powstaje z danych: opisy miast, branż i usług żyją w plikach, a nie w kopiowanych ręcznie szablonach — zmiana ceny w jednym miejscu przechodzi przez cennik, strony usług i dane strukturalne naraz.
Kalendarz rezerwacji z logiką po stronie serwera. Klient wybiera termin rozmowy w kreatorze krok po kroku, ale o dostępności decyduje wyłącznie serwer: wyłączone niedziele, polskie święta liczone algorytmem (łącznie z ruchomą Wielkanocą), minimalne wyprzedzenie i blokada podwójnej rezerwacji na poziomie bazy danych. Gdyby zostawić to w JavaScripcie, wystarczyłoby otworzyć narzędzia deweloperskie, żeby umówić się na termin, który nie istnieje.
Własna analityka zamiast Google Analytics. Licznik odwiedzin napisany w PHP i SQLite: bez ciasteczek, bez zapisywania adresu IP, z dzienną solą, dzięki której po dobie nie da się powiązać wizyt tej samej osoby. Efekt uboczny jest praktyczny — skoro nie ma ciasteczek analitycznych, baner zgody nie musi o nie pytać.
Badanie zamiast opinii. Zamiast pisać, że lokalne firmy mają słabe strony, przebadałem 106 z nich i policzyłem. Wyniki są opublikowane w całości, razem z metodologią i ograniczeniami metody, na licencji pozwalającej je cytować.
Co powstało
- 176 indeksowanych podstron generowanych z danych, w tym strony lokalne dla sześciu miast i 24 branż
- kalendarz rezerwacji rozmów z regułami dostępności po stronie serwera
- interaktywny kreator wyceny i osobny brief prowadzący klienta przez siedem kroków
- darmowy audyt strony oparty o silnik Lighthouse — to samo narzędzie, którego używa Google
- własny licznik odwiedzin bez ciasteczek, zintegrowany z bazą zgłoszeń, więc widać nie tylko ruch, ale i to, która podstrona przynosi kontakty
- automatyczne zgłaszanie zmian do wyszukiwarek po każdej publikacji, wysyłające wyłącznie te adresy, które faktycznie się zmieniły
- badanie 106 lokalnych stron z pełnym pipeline’em: pomiar, analiza, publikacja
Efekt mierzalny
- wynik wydajności 96/100 w PageSpeed Insights dla wersji mobilnej
- czas odpowiedzi serwera znacznie poniżej mediany rynkowej wynoszącej 307 ms w moim badaniu
- wszystkie 177 tytułów i opisów mieści się w wynikach wyszukiwania — sprawdzane automatycznym audytem liczącym szerokość w pikselach, nie w znakach
- zero problemów w raporcie ręcznych działań Google
- pełne dane strukturalne: osoba, firma, usługi z cenami, okruszki nawigacji, FAQ
Czego nauczył mnie ten projekt
Że mierzenie bije zgadywanie. Audyt liczący znaki twierdził, że tytuły są w porządku — dopiero policzenie ich szerokości w pikselach pokazało, że osiemnaście z nich ucinało się w wynikach. Podobnie z badaniem: dopiero pomiar pokazał, że co dwunasta lokalna firma ma w wizytówce Google adres prowadzący donikąd.
To samo podejście stosuję u klientów. Zamiast obiecywać „wysokie pozycje”, pokazuję liczby przed i po.