kajakipodwarszawą

Case Study
kajakipodwarszawa.pl 8-bit edition

A map-first guide to 162 kayak rentals on 14 rivers around Warsaw, with a self-service panel for businesses, online payments and push notifications.

Role
Product, design & engineering
Timeline
~2 weeks, Aug–Sep 2026
Scope
Web app, B2B panel, payments
Status
Live

Context

Within 150 km of Warsaw there are more than 150 kayak rentals spread across a dozen rivers. Most are small, family-run, seasonal businesses. Their information is scattered across outdated websites, social media profiles and phone numbers passed on by word of mouth.

For someone planning a weekend on the water, there was no single place to compare rivers, find a rental on the right stretch and check the forecast before setting off.

The Challenge

The goal was to build the reference guide to kayaking around Warsaw. It had to be useful enough for paddlers to come back to, and valuable enough for rental owners to pay for visibility. The work came with a clear set of constraints:


The Solution

One service with three layers: a public, map-first guide for paddlers, a generated SEO layer for search engines and AI assistants, and a self-service panel where businesses manage their presence and pay for promotion.

Interactive Map

162 pins across 14 rivers and 38 towns, each with a phone number, website and business profile. Deep links lead straight to any river, town or rental.

Trip Weather

A multi-day forecast on every river and town page, with a plain-language hint on whether to pack a rain jacket.

SEO Landing Pages

54 pages generated from the database, one for each river and town, with structured data, social cards and an llms.txt file for AI assistants.

Business Panel

Self-service accounts with email activation and password reset. Owners manage their profile, video and promotions themselves.

Online Payments

Stripe Checkout for profiles and promotions. Payments are confirmed by webhook, verified again with Stripe on return, and each receipt is saved to the account.

Push Notifications

Paddlers follow a river, a town or a single rental. Businesses pay to reach them, with daily and weekly limits that protect subscribers from spam.

Kajaki pod Warszawą homepage in dark mode, with the headline, key numbers and a weather widget
Homepage, classic edition in dark mode

Key Product Decisions

01

Static-first, on a deliberately simple stack

Public pages are generated as static HTML from a single SQLite database, with a small plain-PHP API behind the panel. There's no framework and no backend dependencies. The service runs on low-cost hosting, loads fast and costs almost nothing to operate. Components that would normally come from a library, such as Web Push encryption and VAPID signing, were built in-house and validated against the reference test vectors in RFC 8291.

02

Privacy by design, not by banner

The site sets no cookies, so it needs no consent banner. Analytics runs in PostHog's EU region without persistent identifiers, fonts are self-hosted and YouTube videos load only on click. Spam protection uses rate limits, a honeypot field and timing checks instead of a third-party CAPTCHA. Password rules follow NIST SP 800-63B.

03

Pricing that fits a seasonal business

Every rental gets a free pin. A full business profile is a one-time fee of 299 PLN, with no subscription. Promotions are sold per push notification and priced by reach, from 10 PLN for a rental's own followers to 100 PLN for all subscribers, plus a surcharge for links that lead off the site.

04

A visual identity that doesn't look generated

The classic edition has its own typography and a palette in which every colour pairing is checked for a11y contrast. On top of that, the whole service has a second, fully functional skin, described below.


The 8-bit Edition

Available at /8bit/ and switchable from the theme menu, the 8-bit edition presents the same live data as an 8-bit RPG world map. Rivers are drawn from real coordinates, towns appear as houses, rentals become quests and the weather turns into a game HUD.

It runs on a small custom engine with no libraries, which renders ASCII-defined sprites as SVG. Typefaces were chosen by measurement: one popular pixel font was rejected because it lacks Polish characters. A soundtrack of three Creative Commons tracks from OpenGameArt is credited in the built-in player.

The 8-bit edition: pixel-art hero, weather HUD and a pixel map of Mazovian rivers
The same service and data, presented as an 8-bit overworld

Results

~2
Weeks to Launch
162
Kayak Rentals
14
Rivers
38
Towns
54
SEO Landing Pages
16
Issues Caught in Review
0
Cookies
0
Backend Dependencies

Tech Stack

PHP 8.1 SQLite Vanilla JS MapLibre GL OpenFreeMap Open-Meteo Stripe Checkout Web Push (VAPID) PostHog EU PWA Hostinger Claude Code

How AI Changed the Process

Claude Code handled most of the implementation. That shifted my role toward product owner and architect: setting direction, making trade-offs and verifying the output. Three working practices made the biggest difference.

01

Build in one focused loop, review with many agents

Day-to-day work happened in a single session with small, frequent commits. Multi-agent workflows were reserved for review. An adversarial review of the notification system with 45 agents confirmed 16 issues, and every significant one was fixed before launch. That depth has a cost: a single review of this kind can use a full five-hour usage window.

02

Persistent project memory

Key decisions are recorded once and carried into every new session: no third-party CAPTCHA, the database as the single source of truth, and no system emails sent to businesses listed in the catalogue.

03

Guardrails for real-world side effects

During one test, a faulty configuration edit switched email from file mode to live delivery, and a real invitation reached a real business — luckily, it was Wincent Sport, a company run by friends of mine, which has a sample business profile on the site. Since then, live email tests go only to my own inboxes, demo data contains nothing but an admin account, and every automated configuration change is verified afterwards.

AI makes building cheap, so the value moves to judgement: what to build, which data to trust and where to draw the line.


What's Next

Once the site is indexed and the business model is validated, I'll scale the product under the splywykajakowe.eu domain. The same engine will power a nationwide guide to rivers, lakes and canals in all 16 Polish regions.

The next challenge is commercial rather than technical. The job now is to reach rental owners who run their businesses on the phone rather than in dashboards, and show them that a place on the map is worth their time and money. The off-season is the right moment for that conversation, because it's when owners plan for the year ahead.

In parallel, I'm working on an SEO case study for wincentsport.pl, the first rental partner of kajakipodwarszawa.pl.

kajakipodwarszawa.pl 8-bit edition