Piętnaście papierowych kalendarzy
Krysiak Schoonmaakbedrijf to firma sprzątająca spod Haarlemu, prowadzona przez Anetę Krysiak. Piętnaście pracownic, stali klienci prywatni i biura. Każda pracownica miała własny papierowy kalendarz, w którym szefowa rozpisywała jej godziny i zarobki.
To nasza kolejna realizacja na rynek zagraniczny - projekt w całości pod odbiorcę holenderskiego: strona wyłącznie po niderlandzku, pełne lokalne SEO na Haarlem i sąsiednie gminy, dane strukturalne pod holenderskie wyniki wyszukiwania i wielojęzyczny system dla zespołu, który po niderlandzku dopiero się uczy.
Na koniec miesiąca wszystko trzeba było zliczyć ręcznie. Codziennie rozmowa z każdą dziewczyną osobno: ustalenie grafiku, wysłanie go, rozliczenie pracy. Nawet trzy godziny dziennie na czynność, która nie jest sprzątaniem i nie zarabia. Do tego zeszyty musiały jeździć z klientką wszędzie - na wakacje też - bo w każdej chwili mógł zadzwonić klient albo pracownica z pytaniem o termin czy wynagrodzenie.
Wąskie gardło, którego nie widać w tabelce
Pół roku wcześniej założyliśmy klientce wizytówkę w Google Moja Firma. Koszt: 500 zł, około 117 euro. Po półtora miesiąca zaczęły się codzienne telefony o sprzątanie domów i mieszkań, a inwestycja zwróciła się po trzech miesiącach.
I wtedy pojawił się problem, o którym dowiedzieliśmy się dopiero we wrześniu 2026: klientka nie była w stanie przyjmować więcej zleceń. Nie dlatego, że brakowało rąk do pracy, tylko dlatego, że każde kolejne zlecenie oznaczało kolejny wpis w zeszycie, kolejny telefon i kolejną pozycję do policzenia na kartce. Marketing działał, a firma nie mogła urosnąć, bo administracja była limitem.
15 papierowych kalendarzy, jeden komplet - u szefowej
Do 3 godzin dziennie na grafik, telefony i liczenie
Ręczne sumowanie godzin i zarobków na koniec miesiąca
Gotówka pobierana u klientów bez ewidencji
Zeszyty jeżdżą ze szefową wszędzie, także na urlop
Brak strony - klienci tylko z wizytówki i polecenia
Jeden grafik online, ten sam u szefowej i u każdej pracownicy
Wizyta wpisana raz, powtarza się co tydzień automatycznie
Godziny, zarobki i saldo liczone przez system na bieżąco
Gotówka pobrana u klienta odliczana od wypłaty automatycznie
Podgląd z telefonu z dowolnego miejsca
Strona po niderlandzku z lokalnym SEO na Haarlem i okolice
Odzyskany czas to nie tylko wygoda. To możliwość przyjęcia większej liczby klientów i zatrudnienia kolejnych osób bez obawy, że administracja przerośnie firmę. Każda nowa pracownica to dziś jeden wpis w systemie, nie kolejny zeszyt do prowadzenia.
Etap 1: strona schoonhaarlem.nl
Telefon jako jedyna konwersja
Klientka odbiera telefony osobiście i tak domyka wszystkie zlecenia. Cały układ strony podporządkowano jednemu działaniu: zadzwonić. Numer jest w nagłówku każdej podstrony, w kaflu hero, w stopce i w sekcjach usług. Formularz ofertowy istnieje, ale jako druga ścieżka dla osób, które wolą pisać.
- Numer telefonu widoczny bez przewijania na każdej podstronie
- Kafle hero z konkretami zamiast sloganów: liczba pracownic, obszar, forma płatności
- 26 podstron wyłącznie po niderlandzku, pisanych pod holenderskiego odbiorcę
- Formularz ofertowy obsługiwany skryptem PHP na tym samym hostingu
Pełne lokalne SEO na rynek holenderski
Cała warstwa wyszukiwarkowa jest budowana pod Holandię, nie tłumaczona z polskiego. Treść pisana po niderlandzku pod frazy, których naprawdę używają mieszkańcy Haarlemu, osobne strony dla każdej gminy z lokalnym kontekstem, dane strukturalne LocalBusiness z obszarem obsługi i promieniem, NAP spójny z holenderskim adresem firmy i numerem BTW, oraz wizytówka w Google Moja Firma jako fundament całości.
- Treść i metadane wyłącznie po niderlandzku, pisane pod lokalnego odbiorcę
- Osobna strona lokalna dla Haarlemu, Bloemendaal i Heemstede
- JSON-LD z obszarem obsługi: centrum Haarlemu i promień 10 km
- Dzielenie wyrazów zgodne z regułami niderlandzkiego - złożenia typu bedrijfsaansprakelijkheidsverzekering nie rozpychają widoku na telefonie
- Google Moja Firma jako pierwsze źródło telefonów, strona jako jej rozwinięcie
SEO lokalne zawężone do realnego zasięgu
Pierwsza wersja obejmowała siedem miejscowości. Po rozmowie z klientką obszar zawężono do trzech - Haarlem, Bloemendaal, Heemstede - bo pracownice poruszają się komunikacją miejską i rowerem, a do dalszych miejscowości po prostu nie dojadą. Usunięte strony lokalne dostały przekierowania 301, dane strukturalne przepisano na promień 10 km wokół centrum Haarlemu.
Podobnie wypadła usługa mycia okien: wycofana na życzenie klientki, żeby firma nie kojarzyła się z myciem elewacji biurowców. Mycie okien od wewnątrz zostało częścią sprzątania domowego.
Strona schudła z 32 do 26 podstron i to była dobra zmiana. Każda usunięta strona to zapytanie, którego firma nie mogła obsłużyć, i telefon, który kosztowałby czas bez przychodu.
Jedno źródło treści
Wszystkie dane firmy - numer telefonu, adres, godziny, opisy usług, treści lokalne, cennik i FAQ - siedzą w jednym katalogu z plikami danych. Zmiana numeru w jednym miejscu propaguje się na wszystkie wezwania do działania, stopkę, dane strukturalne JSON-LD i mapę strony. Nie ma sytuacji, w której stary numer został zapomniany w kodzie podstrony.
Etap 2: system, który zastąpił zeszyty
System powstał po godzinnej rozmowie, w której klientka opisała dokładnie to, co robi w kalendarzu. Nic nie zostało dodane „na wszelki wypadek" - system robi to, co papier, tylko liczy sam i jest w telefonie każdej pracownicy.
Tydzień jak rozłożone zeszyty
Siatka pracownice na dni, dokładnie tak, jak klientka rozkładała kalendarze na stole. Puste kratki z plusem to wolne miejsca - dotknięcie od razu wstawia w nie wizytę. Nauka obsługi zajęła kilkanaście minut, bo układ odwzorowuje to, co i tak było w głowie
Kopiowanie poprzedniego tygodnia
Grafik firmy sprzątającej jest w większości powtarzalny. Jeden przycisk przepisuje cały poprzedni tydzień - bez odwołanych wizyt, z wyzerowaną gotówką i aktualnymi stawkami. Zostaje tylko poprawienie różnic. To sam w sobie zjada większość dawnych trzech godzin dziennie
Wizyty cykliczne z wykrywaniem kolizji
Stały klient wpisywany jest raz, z powtarzaniem co tydzień. Jeśli któraś z kopii nachodzi na inną wizytę tej pracownicy, system zatrzymuje zapis i pokazuje, z czym konkretnie koliduje. Podwójne wpisanie dziewczyny w dwa miejsca naraz przestało być możliwe
Wakacje klienta, urlop pracownicy
Jedna data od-do zamiast odwoływania kilkunastu wizyt pojedynczo. Usunięcie nieobecności przywraca dokładnie te wizyty, które odwołała - operacja jest w pełni odwracalna
Rozliczenie zamiast kartki
Zarobek to godziny razy stawka, do wypłaty to zarobek minus gotówka pobrana u klientów minus już wypłacone. Saldo liczone od początku współpracy, więc niedopłata sprzed miesiąca nie ginie. Koniec miesiąca przestał być osobnym zadaniem - podsumowanie jest gotowe cały czas
Grafik w kalendarzu iPhone'a
Subskrypcja kalendarza po adresie z tokenem: szefowa widzi wszystkie wizyty, pracownica wyłącznie swoje. Zmiana w systemie trafia do telefonu sama. To koniec codziennych telefonów „gdzie dzisiaj idę" - najdroższej pozycji w dawnym dniu pracy szefowej
Cztery języki i test, który tego pilnuje
Zespół jest wielonarodowy - Polki i Ukrainki, część słabo mówi po niderlandzku. System mówi po polsku, niderlandzku, angielsku i ukraińsku, a każda osoba wybiera swój język przy logowaniu. Odmieniają się nazwy dni i miesięcy, szyk daty też - „maandag 7 september" i „понеділок, 7 вересня" wychodzą poprawnie, a nie jako sklejka z angielskiego szablonu.
Tłumaczeń pilnuje test: skanuje kod i oblewa, gdy w którymkolwiek słowniku brakuje klucza, gdy został martwy wpis albo gdy parametry w tłumaczeniu nie zgadzają się z oryginałem. Wdrożenie zatrzymuje się na czerwonym teście, więc nieprzetłumaczony tekst nie ma jak trafić na produkcję.
Świadomie bez frameworka
Hosting współdzielony klientki daje PHP z ograniczeniem katalogów i zero procesów w tle. Zamiast walczyć z tym ograniczeniem, system napisano na czystym PHP z PDO, bez ani jednej zależności produkcyjnej. HTML renderuje serwer, JavaScript to 130 linii dodających wygodę - system działa też z wyłączonym skryptem. Nie ma kroku budowania, nie ma czego aktualizować pod kątem podatności, a wdrożenie to rsync i migracje.
Skrypt wdrożeniowy kopiuje kod do katalogu roboczego obok produkcyjnego, instaluje zależności deweloperskie i uruchamia tam pełny zestaw 50 testów. Dopiero zielony wynik podmienia kod produkcyjny. Czerwony test przerywa wdrożenie, a działająca wersja pozostaje nietknięta.
Bezpieczeństwo
System trzyma dane osobowe klientów i zarobki pracownic, więc traktowany był jak system produkcyjny, a nie wewnętrzny notatnik.
- Hasła bcrypt, weryfikacja w stałym czasie także dla nieistniejącego loginu
- Limit prób logowania per login i per adres IP, blokada na 15 minut
- Token CSRF wymagany w każdym żądaniu zapisu, sesja w ciasteczku z prefiksem
__Host- - Wszystkie zapytania przez parametry przygotowane, każda wartość w szablonie escapowana
- Nagłówki HSTS, CSP, X-Frame-Options, Referrer-Policy; cała subdomena z
noindex - Kod aplikacji poza zasięgiem HTTP - żądanie pliku konfiguracji zwraca 403
- Rozdzielone role: pracownica dostaje wyłącznie dane powiązane z własnym kontem
Stack technologiczny
Tailwind CSS 4
Alpine.js
PHP 8.3
MariaDB
PDO
PHPUnit
Schema.org JSON-LD
Google Tag Manager
GA4 z Consent Mode
iCalendar (ICS)
Google Moja Firma
Rezultaty
Wnioski
Ta firma nie miała problemu z brakiem klientów - wizytówka w Google przyniosła ich tyle, ile trzeba, i zwróciła się w trzy miesiące. Miała problem z obsłużeniem tego, co już przychodziło. Piętnaście zeszytów i kartka z sumowaniem to był realny sufit, o który firma się oparła.
Dla nas to również kolejny projekt prowadzony w całości zdalnie dla klienta z zagranicy - od researchu fraz w obcym języku, przez treść pisaną pod holenderskiego odbiorcę, po wdrożenie i obsługę techniczną na miejscowym hostingu.
Reszta decyzji polegała na odejmowaniu, nie dodawaniu. Cztery miejscowości usunięte z pozycjonowania, bo zespół tam nie dojedzie. Usługa wycofana, bo psuła pozycjonowanie firmy w głowie klienta. System bez frameworka, bo prosty PHP będzie działać za pięć lat bez aktualizacji.
Kilkunastoosobowa firma sprzątająca nie potrzebuje systemu ERP za dziesiątki tysięcy. Potrzebuje dokładnie tego, co robiła na papierze - tylko żeby liczyło się samo i było w telefonie każdej pracownicy. Od pierwszej rozmowy do strony i działającego systemu na produkcji: miesiąc.