Privátní hub

MADHOUSE Roadbook

Katalog destinací a kurátorské kolekce pro jednotlivé výjezdy — privátně, za CF Access.

Aktivní kolekce

Kolekce

Návrat z Pagu 2026

Cesta domů z Chorvatska, červenec 2026

Komunikace s kempy

Auto-log odeslaných poptávek + ruční poznámky napříč destinacemi.

Načítám…

Vývoj webu

Posledních 50 commitů

Kde a co se hnulo. Generováno při buildu z gitu.

5b9e879 2026-06-21

changelog modal: 8 → 50 commits

The modal body is already scrollable (max-height: 86vh, overflow-y: auto), so the 8-commit cap was leaving a lot of recent history off-screen for no reason. Bumped RECENT_COMMITS to 50. Build still ru

— Kamil Hrbáček

f10079d 2026-06-21

landing: long-form prose section — "Jízda velkým autem"

A first-time visitor reading the popeláři tagline + lead doesn't know WHY a big rig matters or what living on board feels like. The nav cards send them straight into the catalog without the story. Add

— Kamil Hrbáček

84908e5 2026-06-21

i18n: detail page structural labels + rating filter clarity

Detail page (CS + EN) ───────────────────── - Section headers: Parcela & vůz / Příjezd / Wellness & vybavení / Cena / Ověřit před rezervací / Kontakt / Naše zkušenost — all routed through tr("deta

— Kamil Hrbáček

acd91be 2026-06-21

i18n round 3: missing nav key, locale-aware homepage link, sidebar lang switcher, landing breathing room

Three bugs from a fresh visitor traversal:

— Kamil Hrbáček

b8b506b 2026-06-21

admin: changelog modal triggered by sidebar link, not inline section

The sidebar's "changelog →" link in the build footer was supposed to open the dev-changelog as a modal — instead the dev section sat inline on /roadbook/plan/ next to "Komunikace s kempy". Fixed.

— Kamil Hrbáček

d4bf405 2026-06-21

i18n: per-locale /<locale>/roadbook/* + Pages Function for Accept-Language

Architecture ──────────── Public Roadbook surfaces (landing, catalogue, map, detail pages) are now prerendered per locale under /<locale>/roadbook/*. LOCALES = ["en", "cs"] with EN as BASE_LOCALE (def

— Kamil Hrbáček

7fd9c26 2026-06-21

url: unify planning surfaces under /roadbook/*

/admin/ → /roadbook/plan/ /collections/ → /roadbook/collections/ /api/ stays as-is (technical endpoint)

— Kamil Hrbáček

5067f3a 2026-06-21

roadbook copy + layout: VELKÁ gold, drop italic SKUTEČNĚ, CTA out of title zone

Catalog /roadbook/destinations/ ────────────────────────────── - H1: "Destinace pro VELKÁ obytná auta" — VELKÁ now wrapped in gold <em>, matching the landing's emphasis. Was lowercase plain text. -

— Kamil Hrbáček

a555eed 2026-06-21

roadbook landing: 2-col hero, copy refinement, locale-aware quote

Landing /roadbook/ — ask before answer, action on the right ─────────────────────────────────────────────────────────── - H1 is now "Vejdeme se?" — leading question instead of statement - Bulleted ans

— Kamil Hrbáček

5ce72dc 2026-06-21

roadbook: /roadbook namespace, sidebar fix, public-facing polish

URL restructure — BIG Camper Guide is now a proper portal ───────────────────────────────────────────────────────── - /roadbook/ landing portal (popeláři + 3 dlaždice) - /roadboo

— Kamil Hrbáček

17eb5f4 2026-06-21

feat(destinations): 4-bucket taxonomy + Bohinj rewrite + Lucide swaps

Taxonomy (#128) - 4 buckets: Kempy (campsite+resort), Aires & Stellplatzy (aire), Zastávky (overnight-stop, was "Přespávací"), Na divoko (wild-camp). - "Přespávací" was slangy and conflated quality

— Kamil Hrbáček

80f53ea 2026-06-21

copy(verdict): "Ověřit kriticky" → "Ověřit konkrétní stání"

"Kriticky" sounded like an accident report. The actual semantics for `verify-critical` are: the camp is fine, the SPECIFIC pitch number matters (low trees, garage roofs, slope side). The new label nam

— Kamil Hrbáček

3020c74 2026-06-21

copy(verdict-chips): "Sedí" → "Vejde se" — drop the slang, keep the semantics

The "Sedí" label was Czech vehicular slang. In context it meant "the vehicle fits the pitch" but could also be read as "is sitting" or even the imperative "sit down". New labels are unambiguous:

— Kamil Hrbáček

9ced48d 2026-06-21

fix(sidebar): rename public nav item "Kempy" → "Destinace"

The catalogue actually contains two sections (Kempy + Přespávací) so labelling the nav menu literally "Kempy" was misleading. The H1 / tagline copy stays — those are positioning statements where "Kemp

— Kamil Hrbáček

d4d04d5 2026-06-21

fix(istra): correct Valamar web URL, hero, address, description

The Valamar Camping Istra entry pointed at a stale URL (/en/camping-istra/camping-istra-funtana) which lands on a 404, and the PiNCAMP hero src I'd grabbed turned out to belong to a different camp alt

— Kamil Hrbáček

b84f2fc 2026-06-21

copy(public-hero): rewrite charter CTA copy

"Plánujete trip v půjčeném Madhousu? Přihlaste se a uložíme vám termíny, automaticky pošleme poptávky a budeme s vámi v kontaktu před cestou." was clunky — CTA stuffed mid-sentence, "trip" reads as an

— Kamil Hrbáček

7525303 2026-06-21

fix(public): tighten visual hierarchy + drop legacy private footer

After flipping /destinations/* public, the chrome carried over too many shouty elements and one piece of contextless boilerplate.

— Kamil Hrbáček

57466fe 2026-06-20

fix(sidebar): MADHOUSE.vip brand mark — caps + gold .vip + real Morelo

The Roadbook sidebar wordmark drifted from the public site brand — lowercase "madhouse.vip" with the favicon in a rounded-square tile lost the license-plate brand promise.

— Kamil Hrbáček

ff4f90f 2026-06-20

feat(public): expose /destinations/ as public big-RV camp guide

The Roadbook destination catalogue becomes a public SEO asset on madhouse.vip — there's no comparable big-RV-friendly camp guide anywhere in CZ/EU, and prospective Madhouse charter customers want to s

— Kamil Hrbáček

6a7fcee 2026-06-20

feat(sidebar): two-level brand hierarchy — madhouse.vip → Roadbook

Sidebar reflects the product structure: "madhouse.vip" is the master brand (top-left, clickable, leads back to /), "Roadbook" is the current sub-section sitting underneath.

— Kamil Hrbáček

bc3ea13 2026-06-20

feat(admin): Recent activity widget + /api/status/list endpoint

The auto-log writes to KV per (collection, destination) but until now there was no way to see "what's happened lately" without clicking into every destination. The admin home now surfaces a cross-cutt

— Kamil Hrbáček

ef556b5 2026-06-20

fix(email-composer): unify the modal across collection + detail pages, add inline trip inputs, auto-log every send

You were right to call out the asymmetry — the collection page was still rendering an older inline modal (no signature picker, no warn) while the detail page used the new email_modal_html_for_detail()

— Kamil Hrbáček

011bfb3 2026-06-20

feat(destinations): catalog search + amenity / rating filter

Up until now the only way to find a destination was scroll-and-pray. Now the /destinations/ page has a top filter bar:

— Kamil Hrbáček

de183a3 2026-06-20

feat(roadbook): build stamp, no-cache headers, map view, EN i18n fill-in, broken-hero map fallback

After Monika hit two UX bugs on the road (signature stuck on Kamil, verify-list mixed-language) it became impossible to know which build her mobile Safari was actually serving. Plus the catalog still

— Kamil Hrbáček

78fe77c 2026-06-20

feat(email): per-language verify list via verify_before_booking_i18n

The Czech verify items leaked into German/English/Slovenian e-mail bodies (Monika → Toblacher See bug). New optional schema field `verify_before_booking_i18n: {lang: [items]}` overrides the CS fallbac

— Kamil Hrbáček

b65676b 2026-06-20

fix(email-composer): signature picker, Sygic copy, verify lang warning, detail-page parity

UX bugs surfaced on a real send (Monika → Toblacher See): - Email signed "Kamil" even though Monika was logged in. /api/me may not have resolved before the modal opened, or her CF Access e-mail do

— Kamil Hrbáček

a6bc726 2026-06-20

feat(destinations): mini-map fallback for cards without a hero photo

Park4night-style overnight stops (Klaus, Gmünd, Veselské pískovny, P4N Slovenia hilltop) don't have a proper hero photo — until now they rendered as a blank "?" tile. Now they get a small Leaflet prev

— Kamil Hrbáček

9a8846e 2026-06-20

feat(destinations): add two overnight stops — Veselské pískovny (CZ) and P4N Slovenia hilltop (SI)

Veselské pískovny (Veselí nad Lužnicí, South Bohemia) - Late-departure-from-Prague save-the-day stop on the Austria run. - Tested-ok: football-pitch parking (VIP for Empire Liner), bike trails along

— Kamil Hrbáček

fc0480f 2026-06-20

feat(destinations): camperguru-style amenity icon grid on detail page

Replace the comma-separated tags chip strip with a 21-category icon grid distilled from amenities.tags. Each tile has a Lucide SVG icon (gold), a Czech label and a hover state. Tags themselves stay be

— Kamil Hrbáček

69c8bdc 2026-06-20

feat: travel quote + Sexten wellness hero + meta-editor centering + 5 PiNCAMP hero swaps

Public site - Add bilingual travel pull quote between the "from the bed" section break and the gallery — Příliš staří na práci... / Too old to work. Titillium Web italic, gold (bright cs / soft en

— Kamil Hrbáček

c6d8f9e 2026-06-20

fix(meta-editor): drop "Čvc" — use all-numeric d.m.Y in flatpickr

The 'M' token rendered the Czech month abbreviation ("Čvc" for July) in the visible input, which both looked odd and duplicated the dd.mm.yyyy safety-hint below it. Switching altFormat to 'd.m.Y' give

— Kamil Hrbáček

b0d8281 2026-06-20

feat(destinations): manual our_rank tiebreaker + visits-based ordering

Within the same star bucket, alphabetic ordering put loved-but-late destinations behind alphabetically-luckier ones (Sexten was 4th of the 5-star tested-ok group). Add:

— Kamil Hrbáček

44f0ff2 2026-06-20

feat(destinations): navigation deep-links, catalog split, real hero URLs

- detail page: nav panel under the Leaflet map with deep-links to Apple Maps (?daddr=lat,lon&dirflg=d), Google Maps (/dir/?api=1& destination=lat,lon&travelmode=driving) and Sygic (com.sygic.aur

— Kamil Hrbáček

c0a1033 2026-06-20

fix(ui): clickable admin stat cards, legible LOGIN nav, dd.M.Y date picker

- admin/: DESTINACE and KOLEKCE stat cards become anchors to /destinations/ and /collections/. Hover lights the border, the gold subhead arrow signals navigation. - public nav: LOGIN link gets bol

— Kamil Hrbáček

65231eb 2026-06-20

fix(destinations): meta-editor alignment + Danica/Sexten pitch intel

- Meta-editor (collection page): replace flex flex-end (which pushed shorter columns to the bottom, misaligning labels) with a 3-row grid track shared by every field. Label, input and hint line up

— Kamil Hrbáček

7816d51 2026-06-20

fix(destinations): meta-editor grid alignment + Danica/Sexten pitch intel

- Meta-editor: replace flex flex-end (which pushed shorter columns to the bottom, misaligning labels) with a 3-row grid track shared by every field. Label, input and hint now line up across column

— Kamil Hrbáček

3d02c01 2026-06-20

fix(destinations): make collection cards fully clickable + enable email composer without direct email

- CSS: tier-card__link z-index lifted above body so the overlay link catches clicks on the whole card; .card-actions and inline anchors stay above the link via z-index:3. - Build: email button gat

— Kamil Hrbáček

9c82df7 2026-06-20

feat: 4 destinations + kind enum (overnight-stop / resort / aire)

New destinations - Camping Wörthersee (AT, Carinthia). Tested-mixed — we know the town more from the hotel; the camp itself is tight for the Empire Liner. Pitch #426 captured as "bad" — we got it

— Kamil Hrbáček

5b9eb03 2026-06-20

feat: Camp Danica + Camp Bohinj (SI duo with cross-reference)

Camp Danica (SI, Bohinjska Bistrica) - Tested-ok, our_rating 5 ★. Riverside camp, our regular SI base for Bohinj-region trips. Pitch #58 saved as our_pitch_intel. - approach.warnings flag the actual

— Kamil Hrbáček

a5d0fea 2026-06-20

feat: Sexten + Vidor + Schnals (3 IT alpine destinations)

Caravan Park Sexten (IT, Dolomites / Sexten) - Tested-ok, our_rating 5 ★. Top alpine destination — we go back regularly. Membership #91766917 captured in loyalty_card. - New links fields: ski_pass (

— Kamil Hrbáček

1624263 2026-06-20

feat: Valamar Lanterna + Street View CTA pattern + Pitchup/Park4Night backlog

Valamar Camping Lanterna (HR, Poreč) - Premium Valamar resort with private beaches and fireplace pitches. - Year-over-year pitch history: #124 perfect in 2025 (private beach, sea entry, fireplace, n

— Kamil Hrbáček

a71d3ad 2026-06-20

feat: tested destinations + pitch intel schema + resort map CTA

New destinations - Aminess Style Camping Avalona (HR, Pag, Povljana). Currently on-site (KH 2026/06). Detailed pitch intel: 6 rated numbers (310 top, 207 favourite, 259 / 212 good, 253 ok, 199 occ

— Kamil Hrbáček

7698ceb 2026-06-20

feat: add Resort Stromovka (CZ) to destination catalog

- Litvínovická 12b, České Budějovice. Bungalow / apartment resort, not a classic campsite. vehicle_fit.verdict = "verify" with a prominent warning that the 11 m liner needs explicit parking conf

— Kamil Hrbáček

88fb7b0 2026-06-20

feat: add Resort Stromovka (CZ) to destination catalog

- Litvínovická 12b, České Budějovice. Bungalow / apartment resort, not a classic campsite. vehicle_fit.verdict = "verify" with a prominent warning that the 11 m liner needs explicit parking conf

— Kamil Hrbáček

b84f729 2026-06-20

fix: sidebar overlap on mobile, per-user signature, dd.mm.yyyy hint

- /api/me Function echoes the CF Access user's e-mail back to the client. The email composer hydrates a per-user signature (Kamil / Monika) so emails sent by either spouse carry the right name and

— Kamil Hrbáček

ca9018c 2026-06-20

feat: localised hero images + editable trip meta + email composer

Phase A — destination hero images - Pull 7 hero photos from each camp's CDN via curl (SSL-safe on macOS) and optimise with sips (max 1600px long edge, JPEG q=82). Saved to assets/img/destinations/

— Kamil Hrbáček

387e442 2026-06-20

feat: editable collection meta + email composer (5 langs)

- New /api/collection/<slug>/meta Function persists trip dates, guest count and vehicle string to KV (per CF Access user). - Collection page hydrates the inputs from KV on load; saves on every cha

— Kamil Hrbáček

7aa9a52 2026-06-20

feat: evidence chips, Lucide icons, SSL-safe image download

- Add evidence.status to every destination JSON (independent of vehicle_fit.verdict): untested / to-verify / verified-open / tested-ok / tested-mixed / tested-bad. Defaults all 7 current destina

— Kamil Hrbáček

2b559cb 2026-06-20

chore: localise destination hero images, drop hot-link dependency

- Download 7 hero photos from camp CDNs, optimise via ImageMagick (max 1600px long edge, q=82, stripped metadata) and host locally under assets/img/destinations/<slug>/hero.jpg. - Rewrite each dat

— Kamil Hrbáček

e1baeab 2026-06-20

fix: clickable cards + hero photos with attribution

- Cards render as full <a> blocks (previous absolute-overlay pattern lost clicks to z-indexed children). Entire card surface now reaches the destination detail page. - Each destination JSON gains

— Kamil Hrbáček