OSEAD Demo: coastal rentals and sales, rebuilt from a 2017 jQuery memory

How jjheffernan/osead-demo grew from an Astro Cloudflare starter into a white-label coastal real-estate template — Svelte islands, AFK waves, and what the commit log actually shipped.

osead-demo started as a memory exercise: rebuild the feel of an old Outer Banks / Jersey Shore rental site from 2017 — the one that lived on jQuery and hope — as a modern, forkable template. The public pitch is blunt: high-end coastal inventory for weekly rentals and second-home sales, without looking like Zillow or Airbnb.

Repo: github.com/jjheffernan/osead-demo. Also listed on Demos.

What it is (and is not)

North star from docs/PLAN.md: a brokerage or property-management demo can fork the repo, replace brand + seed listings, and deploy to Cloudflare Pages without standing up a database or CMS.

Audience from docs/VISION.md:

  1. Primary — portfolio demo
  2. Secondary — white-label product template others can spin up quickly
  3. Brand — O-sea-D in product UI (OSEAD in repo shorthand)

Hard constraints that shaped every overnight slice:

  • Stay lightweight: Markdown inventory, Svelte UI, Cloudflare Pages, light Functions
  • No mandatory CMS / DB / IDX for the demo path
  • Always show Fair Housing language and a demo disclaimer where listings appear
  • Contact / “booking” CTAs must not imply a confirmed paid reservation

Non-goals (unless someone asks later): full calendar payments, live MLS sync, multi-tenant SaaS admin, native apps.

Authoring stack (locked)

The repo is strict about order so AFK agents do not invent a second frontend:

  1. Astro 7 — pages, layouts, content loading, SEO head, endpoints
  2. Svelte 5 — all site UI; SSR by default; client:* only when interaction pays off
  3. TypeScript — config, Zod / content schemas, lib queries, Pages Functions, tests

Starter base: astro-cloudflare-starter, with React islands swapped for Svelte early in the log (refactor(ui): convert presentational Astro UI to SSR Svelte, refactor(ui): move interactive widgets to Svelte islands).

What the commit history actually shipped

Roughly seventy-eight commits on main in a few days of AFK + HITL waves. Collapsed by theme:

Scaffold and brand

  • feat: scaffold OSEAD coastal rentals and sales site
  • docs: lock OSEAD vision and local-first after-hours policy
  • feat: give OSEAD a coastal brand-first home
  • Starter SaaS surfaces removed so the IA is rentals / sales / markets / properties, not leftover pricing pages

Listing experience

  • Property gallery Svelte island (feat: add PropertyGallery Svelte island → wired into PDPs)
  • Listing filters scoped by page type (feat: add ListingFilters Svelte island)
  • Related homes on property detail pages, breadcrumbs, housing + demo notices
  • Varied coastal rental inventory until the demo felt like a large PMC, not an eight-home brochure

SEO destinations

  • Collections content type (oceanfront, pets, bedroom counts, pool, …)
  • Nested town landings under markets
  • Journal posts for coastal keywords
  • Sitemap URL priorities, VacationRental + RealEstateListing JSON-LD (including collection pages later)

Conversion (light)

  • Inquiry intents, rental availability flow → contact
  • Thank-you page, honeypot, rate-limit hardening on Functions
  • Conversion UX P0 pass from a research plan (docs + feat(s26))
  • Testimonials / ratings for listing staff and business entities
  • Beachfront media presence pass after a dedicated research doc

Admin and analytics (Wave F–G)

Not just a pretty public site — the later log densifies an admin shell:

  • Dashboard overview, deals/market pulse, KPI strip
  • Sales trend sparkline, employee leaderboard bars, market-split stats
  • Admin analytics JSON endpoint + loading skeleton
  • Optional Metabase embed stub and vendor-adapter notes
  • Collection-page JSON-LD and a Cloudflare Pages deploy checklist (docs(h1))

Process that made the pace possible

The repo carries the same overnight machinery as this site: after-hours loop, caveman, ponytail. Tickets live in TODO.md / docs/afk/*. Waves A–G are visible in commit subjects (chore(afk): arm Wave E…, docs(wave-f): admin analytics…). Granular commits, local merge to main, push often — PR creation deliberately HITL-gated so agents do not hang on permissions.

Architecture choices worth copying

ChoiceWhy
Dual inventory (rent + buy)Homepage is a 50/50 customer path, rentals primary in presentation
Filters-first browseMarkets exist for SEO depth; primary IA is inventory + filters, not “pick a coast first”
Markdown collectionsType-safe, git-native, demo-friendly
Dual JSON-LDVacationRental and RealEstateListing match the two listing types
Coastal tokens, not MLS chromePhotography-forward; no map-first commodity grids

Status today

Public GitHub repo, active through mid-July 2026. Homepage field and Pages API still empty at time of writing — treat the repo as the source of truth until a Cloudflare Pages URL is published. White-label steps live in docs/TEMPLATE.md; the phased plan is docs/PLAN.md.

If you fork it: swap brand config, replace seed properties/markets, keep the Fair Housing + demo disclaimer, deploy to Pages. That was the whole point of rebuilding the 2017 idea with adult tooling.

Похожие записи

Heff.world - сайт heff.industries.

© 2026 Heff.world. Все права защищены.