Case study · 08.2026
kajakipodwarszawą
Przewodnik po ponad 150 wypożyczalniach kajaków na 14 rzekach wokół Warszawy, oparty na mapie, z samoobsługowym panelem dla firm, płatnościami online i powiadomieniami push.
Informacje o projekcie
- Rola
- Produkt, projekt i development
- Czas
- ~2 tygodnie, sierpień–wrzesień 2026
- Zakres
- Aplikacja web, panel B2B, płatności
- Status
- Działa produkcyjnie
01
Kontekst
W promieniu 150 km od Warszawy działa ponad 150 wypożyczalni kajaków na kilkunastu rzekach. To w większości małe, rodzinne i sezonowe firmy. Informacje o nich są rozproszone po nieaktualnych stronach, profilach w mediach społecznościowych i numerach telefonów przekazywanych z ust do ust.
Kto planował weekend na wodzie, nie miał jednego miejsca, w którym porówna rzeki, znajdzie wypożyczalnię na wybranym odcinku i przed wyjazdem sprawdzi prognozę.
02
Wyzwanie
Celem było stworzenie podstawowego źródła wiedzy o spływach wokół Warszawy: na tyle przydatnego, by kajakarze do niego wracali, i na tyle wartościowego, by właściciele wypożyczalni chcieli płacić za widoczność. Projekt miał jasno określone ograniczenia:
- Trzy grupy odbiorców o różnych potrzebach: kajakarze, właściciele wypożyczalni i wyszukiwarki.
- Tani hosting współdzielony: wyłącznie PHP, bez Node.js, bez Pythona i bez zarządzanej bazy danych.
- Klienci sezonowi, którzy logują się kilka razy w roku i wolą decydować przez telefon.
- Standard prywatności na tyle wysoki, by baner cookies w ogóle nie był potrzebny.
- Jednoosobowy zespół pracujący wieczorami i w weekendy.
03
Rozwiązanie
Jeden serwis w trzech warstwach: publiczny przewodnik oparty na mapie dla kajakarzy, generowana warstwa SEO dla wyszukiwarek i asystentów AI oraz samoobsługowy panel, w którym firmy zarządzają swoją obecnością i kupują promocję.
Interaktywna mapa
Ponad 150 pinezek na 14 rzekach i w 38 miejscowościach, każda z telefonem, stroną www i wizytówką firmy. Bezpośrednie linki prowadzą do każdej rzeki, miejscowości i wypożyczalni.
Pogoda na spływ
Kilkudniowa prognoza na stronie każdej rzeki i miejscowości, z prostą podpowiedzią, czy zabrać kurtkę przeciwdeszczową.
Strony SEO
54 strony generowane z bazy, po jednej dla każdej rzeki i miejscowości, z danymi strukturalnymi, kartami do social mediów i plikiem llms.txt dla asystentów AI.
Panel dla firm
Samoobsługowe konta z aktywacją i resetem hasła przez e-mail. Właściciele sami zarządzają wizytówką, filmem i promocjami.
Płatności online
Stripe Checkout dla wizytówek i promocji. Płatność jest potwierdzana webhookiem, dodatkowo weryfikowana w Stripe po powrocie klienta, a rachunek trafia na konto firmy.
Powiadomienia push
Kajakarze obserwują rzekę, miejscowość albo konkretną wypożyczalnię. Firmy płacą za dotarcie do nich, a dzienne i tygodniowe limity chronią subskrybentów przed spamem.

04
Kluczowe decyzje produktowe
Statyczne strony na celowo prostym stosie
Strony publiczne są generowane jako statyczny HTML z jednej bazy SQLite, a panel obsługuje niewielkie API w czystym PHP. Nie ma frameworka ani zależności po stronie serwera. Serwis działa na tanim hostingu, ładuje się szybko i prawie nic nie kosztuje w utrzymaniu. Elementy, po które zwykle sięga się do bibliotek, takie jak szyfrowanie Web Push i podpisy VAPID, powstały od podstaw i zostały zweryfikowane na referencyjnych danych testowych ze standardu RFC 8291.
Prywatność w projekcie, nie w banerze
Serwis nie zapisuje ciasteczek, więc nie potrzebuje baneru zgody. Analityka działa w PostHog w regionie UE bez trwałych identyfikatorów, fonty są serwowane z własnego serwera, a filmy z YouTube ładują się dopiero po kliknięciu. Ochronę przed spamem zapewniają limity prób, ukryte pole-pułapka i pomiar czasu wypełnienia formularza zamiast zewnętrznej CAPTCHY. Zasady haseł są zgodne z NIST SP 800-63B.
Cennik dopasowany do sezonowego biznesu
Każda wypożyczalnia ma darmową pinezkę. Pełna wizytówka to jednorazowe 299 zł, bez abonamentu. Promocje są sprzedawane jako pojedyncze powiadomienia push i wyceniane według zasięgu: od 10 zł za dotarcie do obserwujących daną firmę do 100 zł za wszystkich subskrybentów, z dopłatą za link prowadzący poza serwis.
Identyfikacja wizualna, która nie wygląda na wygenerowaną
Edycja klasyczna ma własną typografię i paletę, w której każda para kolorów ma sprawdzony kontrast pod kątem a11y. Do tego cały serwis ma drugą, w pełni funkcjonalną skórkę, opisaną niżej.
05
Edycja 8-bit
Edycja 8-bit jest dostępna pod adresem /8bit/ i można ją włączyć z menu motywów. Pokazuje te same dane na żywo jako mapę świata z 8-bitowej gry RPG: rzeki są rysowane z prawdziwych współrzędnych, miejscowości to domki, wypożyczalnie to questy, a pogoda to growy HUD.
Napędza ją własny, mały silnik bez bibliotek, który renderuje sprite'y zapisane jako ASCII art do formatu SVG. Kroje pisma zostały dobrane na podstawie pomiarów: jeden z popularnych fontów pikselowych odpadł, bo nie obsługuje polskich znaków. Ścieżkę dźwiękową tworzą trzy utwory na licencjach Creative Commons z OpenGameArt, z podpisami autorów we wbudowanym odtwarzaczu.

06
Wyniki
- Tygodnie do startu
- ~2
- Wypożyczalnie
- 150+
- Rzeki
- 14
- Miejscowości
- 38
- Strony SEO
- 54
- Problemów wykrytych w przeglądzie
- 16
- Ciasteczek
- 0
- Zależności backendu
- 0
07
Stack technologiczny
- PHP 8.1
- SQLite
- Vanilla JS
- MapLibre GL
- OpenFreeMap
- Open-Meteo
- Stripe Checkout
- Web Push (VAPID)
- PostHog EU
- PWA
- Hostinger
- Claude Code
08
Jak AI zmieniła proces
Większość implementacji przejął Claude Code. Moja rola przesunęła się w stronę product ownera i architekta: wyznaczania kierunku, podejmowania kompromisów i weryfikowania efektów. Największą różnicę zrobiły trzy praktyki.
Budowa w jednej pętli, przegląd z udziałem wielu agentów
Bieżąca praca toczyła się w jednej sesji, z małymi i częstymi commitami. Workflowy z wieloma agentami były zarezerwowane na przeglądy. Adwersarialny przegląd systemu powiadomień z udziałem 45 agentów potwierdził 16 problemów, a wszystkie istotne zostały naprawione przed startem. Taka głębia ma swoją cenę: jeden przegląd tego typu potrafi zużyć całe pięciogodzinne okno limitu.
Trwała pamięć projektu
Kluczowe decyzje są zapisywane raz i przenoszone do każdej kolejnej sesji: brak zewnętrznej CAPTCHY, baza danych jako jedyne źródło prawdy, zakaz wysyłki maili systemowych do firm z katalogu.
Zabezpieczenia przed skutkami w realnym świecie
Podczas jednego z testów błędna edycja konfiguracji przełączyła wysyłkę maili z trybu plikowego na prawdziwą, a zaproszenie trafiło do prawdziwej firmy - na szczęście była to zaprzyjaźniona firma moich kolegów Wincent Sport, która posiada przykładową wizytówkę w serwisie. Od tego czasu testy z prawdziwą pocztą idą wyłącznie na moje skrzynki, dane demo zawierają tylko konto administratora, a każda automatyczna zmiana konfiguracji jest weryfikowana po fakcie.
AI sprawia, że budowanie jest tanie, więc wartość przesuwa się w stronę osądu: co budować, którym danym ufać i gdzie postawić granicę.
09
Co dalej
Po zaindeksowaniu strony i walidacji modelu biznesowego przystąpię do skalowania produktu w oparciu o domenę splywykajakowe.eu. Ten sam silnik będzie napędzał ogólnopolski przewodnik po rzekach, jeziorach i kanałach we wszystkich 16 województwach, a docelowo – po potwierdzeniu skuteczności na rynku krajowym – rozwiązanie będzie gotowe do ekspansji na rynki europejskie i światowe.
Kolejne wyzwanie jest bardziej handlowe niż techniczne. Teraz trzeba dotrzeć do właścicieli wypożyczalni, którzy prowadzą biznes przez telefon, a nie w dashboardach, i pokazać im, że miejsce na mapie jest warte ich czasu i pieniędzy. Najlepszy moment na tę rozmowę to poza sezonem, kiedy właściciele planują kolejny rok.
Równolegle tworzony jest case study SEO dla wypożyczalni wincentsport.pl, który jest pierwszym partnerem kajakipodwarszawa.pl.