Skip to content

Landing page: capability page for prospective sitters#26

Merged
bradburch merged 2 commits into
mainfrom
landing-page
Jul 15, 2026
Merged

Landing page: capability page for prospective sitters#26
bradburch merged 2 commits into
mainfrom
landing-page

Conversation

@bradburch

@bradburch bradburch commented Jul 14, 2026

Copy link
Copy Markdown
Owner

What

Grows the root page (/) from a single "open the dashboard" button into a real landing page aimed at a prospective dog walker / pet sitter deciding whether to adopt Pawbook. Keeps the warm ledger / day book aesthetic and the locked-CSP constraint — inline styles only, no JavaScript (the served body contains no <script> tag; the displayed embed snippet is HTML-escaped).

Two commits: the initial capability page, then a redesign that sheds the templated / AI-generated feel after reviewing it rendered in a browser.

Design

  • Hero — tilted day-book card + BOOKED paw-stamp + serif wordmark + penciled marginalia. Primary CTA is the live demo (not the admin login a prospect can't pass); secondary "Already set up? Sign in" and "View source / self-host". A visible line states it's open-source/self-hosted with no signup button yet.
  • "What the book does" — real hierarchy instead of a uniform feature list: one lead statement ("It lives on your site, not ours."), then the capabilities as a ledger book of accounts (mono account-label → plain-English value) grouped under running sub-heads (Your rules / Every request / The money). Asymmetric two-column on desktop, stacks on mobile.
  • "Paste one line where you want it" — the embed <script>/iframe snippet shown in a receipt-style slip, with Squarespace/Wix + script-stripping-host fallback.
  • "Straight answers" — a two-column, always-visible Q&A (no accordion), so the honest limits can't be missed. Every limit stated plainly and leading in bold: payments are tracking, not processing; Google Calendar sync is one-way push (won't block busy-elsewhere); pricing is flat per service, no per-pet; clients are invite-only; dogs and cats only; and no self-serve signup yet (open-source, self-hosted today).
  • Alternating recto/verso running heads and asymmetric sections break the single-column monotony so no two sections open the same way.

Verification

  • npm test — 46 files / 336 tests pass; the landing test confirms the served body is script-free and X-Frame-Options: DENY holds. tsc -b clean.
  • Rendered and reviewed in a browser at desktop and ~400px mobile — no horizontal overflow; two-column sections collapse cleanly; the embed code block scrolls internally.
  • Structural: 0 <details>, 0 No. N numbered rows, 0 literal <script in the served body.

Scope: one file, server/index.ts (the LANDING_HTML template). Based on origin/main, independent of the custom-services work.

🤖 Generated with Claude Code

bradburch and others added 2 commits July 14, 2026 15:47
The root page (`/`) was a single button into the admin dashboard. Grow the
`LANDING_HTML` template into a full landing page aimed at a dog walker / pet
sitter deciding whether to adopt Pawbook, while keeping the existing warm
"ledger / day book" aesthetic and the locked-CSP constraint (inline styles
only, no JS — FAQ uses native <details>).

- Tells the real capability story (embed on your site, set your own
  services/rates/rules, capacity & time-off, confirm/decline bookings,
  clients & pets & CSV import, payment tracking + earnings, Google Calendar
  push) instead of a generic feature grid.
- Honest about the limits up front: primary CTA is the live demo (not the
  admin login a prospect can't pass), a visible line states it's open-source
  and self-hosted with no signup button yet, and the payments + signup FAQ
  answers are expanded by default so the real constraints aren't hidden.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The first version had good copy and theme but a templated skeleton that
read as AI-generated when rendered: five identical numbered rows, a +/-
FAQ accordion, and a single centered column repeating one section formula.
Rebuild the skeleton (hero card, embed slip, and honest copy kept as-is):

- Capabilities: drop the "No. 1-5" clone rows for real hierarchy — one lead
  statement given room, then the rest as a ledger "book of accounts" (mono
  account-label -> plain value) grouped under running sub-heads. Asymmetric
  two-column on desktop, stacks on mobile.
- FAQ: remove the accordion; answers are always visible in a two-column grid
  with the honest limits (no card payments, one-way calendar sync, no per-pet
  pricing, invite-only, dogs/cats only, no signup yet) leading in bold.
- Break the single-ribbon monotony: alternating recto/verso running heads and
  two genuinely asymmetric sections so no two sections open the same way.

Rendered and reviewed at desktop and ~400px mobile; no horizontal overflow.
Still script-free under the locked CSP; tsc + landing tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bradburch bradburch merged commit 1a3d299 into main Jul 15, 2026
2 checks passed
@bradburch bradburch deleted the landing-page branch July 15, 2026 15:55
bradburch added a commit that referenced this pull request Jul 15, 2026
Restore aria-hidden="true" on the decorative .ledger sample-entries
card so screen readers stop announcing fictional bookings (Bella
$180 boarding, Otis $22 dog walk, ...) as real content — the redesign
in #26 dropped it while the inner stamp/marginalia kept theirs.

Also correct the LANDING_HTML doc comment, which still claimed the
FAQ used <details>/<summary>; the redesign made it a static Q&A with
no <details> element, so the comment now says the page has no
interactivity at all.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant