Fictional business / The appointment business
Emberline Light Studio
Pages that sell: the same site carries three one-job landing pages from the landing page course. The first-visit guide opt-in, the membership offer with a coupon and a countdown, and the first-session booking page.


Purpose
Turn visits into booked sessions. The one job of this site is the booking button: in the header, sticky on the phone, and on every page.
Who it is for
Any appointment business. Studios, salons, clinics, trainers.
Essential features, and why
- Booking link everywhere, because every page should lead to the same next action.
- Sessions with plain-text prices, because visitors need to compare the $20 targeted session, $35 full-body session, packs, and $129 membership.
- The first-visit FAQ, because a new visitor needs to know what happens before booking.
- Hours and address, because a session must fit the visitor’s day.
- Click-to-call, because questions should not block a booking.
- A named owner and host with portraits and a first-person story, because a visitor books with a person, not a panel.
- Reviews as quotes with a first name and a member-since line, because proof reads better as people than as stars.
- No medical claims, because the site describes a wellness experience without promising treatment results.
Add if you want more
- Packages and membership checkout.
- An intake form for first visits.
- Gift cards.
- An answer library: one page per question people ask about red light therapy.
- Google Business Profile posts.
Get found (SEO and AI search)
- LocalBusiness and FAQ schema on the contact page.
- llms.txt with sessions, prices, hours, and how to book.
- Prices as text, never as an image.
- One plain sentence: red light therapy sessions in Riverbend from $20.
- Google Business Profile linked both ways.
Secure and mobile
- Turnstile on the contact form when it goes live.
- Privacy and terms pages, because the site takes bookings.
- HTTPS and the four security headers.
- The 375px check with the book button under the thumb.
What this build teaches
3.x, 5.1, 5.4: build the baseline, connect the booking path, then check the phone experience.
Ship-checklist scorecard
194 passed · 0 failed. Folder checks only. Staged headers, live routing, form delivery, and phone interactions are not verified.
- Pass Site directory
- Pass HTML pages
- Pass 404.html: Unique title
- Pass 404.html: Unique description
- Pass 404.html: Canonical
- Pass 404.html: One H1
- Pass 404.html: Favicon
- Pass 404.html: OG image
- Pass 404.html: JSON-LD parses
- Pass 404.html: Noindex
- Pass 404.html: Example banner
- Pass about/index.html: Unique title
- Pass about/index.html: Unique description
- Pass about/index.html: Canonical
- Pass about/index.html: One H1
- Pass about/index.html: Favicon
- Pass about/index.html: OG image
- Pass about/index.html: JSON-LD parses
- Pass about/index.html: Noindex
- Pass about/index.html: Example banner
- Pass book/index.html: Unique title
- Pass book/index.html: Unique description
- Pass book/index.html: Canonical
- Pass book/index.html: One H1
- Pass book/index.html: Favicon
- Pass book/index.html: OG image
- Pass book/index.html: JSON-LD parses
- Pass book/index.html: Noindex
- Pass book/index.html: Example banner
- Pass contact/index.html: Unique title
- Pass contact/index.html: Unique description
- Pass contact/index.html: Canonical
- Pass contact/index.html: One H1
- Pass contact/index.html: Favicon
- Pass contact/index.html: OG image
- Pass contact/index.html: JSON-LD parses
- Pass contact/index.html: Noindex
- Pass contact/index.html: Example banner
- Pass first-session/index.html: Unique title
- Pass first-session/index.html: Unique description
- Pass first-session/index.html: Canonical
- Pass first-session/index.html: One H1
- Pass first-session/index.html: Favicon
- Pass first-session/index.html: OG image
- Pass first-session/index.html: JSON-LD parses
- Pass first-session/index.html: Noindex
- Pass first-session/index.html: Example banner
- Pass guide/index.html: Unique title
- Pass guide/index.html: Unique description
- Pass guide/index.html: Canonical
- Pass guide/index.html: One H1
- Pass guide/index.html: Favicon
- Pass guide/index.html: OG image
- Pass guide/index.html: JSON-LD parses
- Pass guide/index.html: Noindex
- Pass guide/index.html: Example banner
- Pass guide/thanks/index.html: Unique title
- Pass guide/thanks/index.html: Unique description
- Pass guide/thanks/index.html: Canonical
- Pass guide/thanks/index.html: One H1
- Pass guide/thanks/index.html: Favicon
- Pass guide/thanks/index.html: OG image
- Pass guide/thanks/index.html: JSON-LD parses
- Pass guide/thanks/index.html: Noindex
- Pass guide/thanks/index.html: Example banner
- Pass index.html: Unique title
- Pass index.html: Unique description
- Pass index.html: Canonical
- Pass index.html: One H1
- Pass index.html: Favicon
- Pass index.html: OG image
- Pass index.html: JSON-LD parses
- Pass index.html: Noindex
- Pass index.html: Example banner
- Pass membership/index.html: Unique title
- Pass membership/index.html: Unique description
- Pass membership/index.html: Canonical
- Pass membership/index.html: One H1
- Pass membership/index.html: Favicon
- Pass membership/index.html: OG image
- Pass membership/index.html: JSON-LD parses
- Pass membership/index.html: Noindex
- Pass membership/index.html: Example banner
- Pass membership/thanks/index.html: Unique title
- Pass membership/thanks/index.html: Unique description
- Pass membership/thanks/index.html: Canonical
- Pass membership/thanks/index.html: One H1
- Pass membership/thanks/index.html: Favicon
- Pass membership/thanks/index.html: OG image
- Pass membership/thanks/index.html: JSON-LD parses
- Pass membership/thanks/index.html: Noindex
- Pass membership/thanks/index.html: Example banner
- Pass privacy/index.html: Unique title
- Pass privacy/index.html: Unique description
- Pass privacy/index.html: Canonical
- Pass privacy/index.html: One H1
- Pass privacy/index.html: Favicon
- Pass privacy/index.html: OG image
- Pass privacy/index.html: JSON-LD parses
- Pass privacy/index.html: Noindex
- Pass privacy/index.html: Example banner
- Pass reviews/index.html: Unique title
- Pass reviews/index.html: Unique description
- Pass reviews/index.html: Canonical
- Pass reviews/index.html: One H1
- Pass reviews/index.html: Favicon
- Pass reviews/index.html: OG image
- Pass reviews/index.html: JSON-LD parses
- Pass reviews/index.html: Noindex
- Pass reviews/index.html: Example banner
- Pass sessions/index.html: Unique title
- Pass sessions/index.html: Unique description
- Pass sessions/index.html: Canonical
- Pass sessions/index.html: One H1
- Pass sessions/index.html: Favicon
- Pass sessions/index.html: OG image
- Pass sessions/index.html: JSON-LD parses
- Pass sessions/index.html: Noindex
- Pass sessions/index.html: Example banner
- Pass terms/index.html: Unique title
- Pass terms/index.html: Unique description
- Pass terms/index.html: Canonical
- Pass terms/index.html: One H1
- Pass terms/index.html: Favicon
- Pass terms/index.html: OG image
- Pass terms/index.html: JSON-LD parses
- Pass terms/index.html: Noindex
- Pass terms/index.html: Example banner
- Pass thanks/index.html: Unique title
- Pass thanks/index.html: Unique description
- Pass thanks/index.html: Canonical
- Pass thanks/index.html: One H1
- Pass thanks/index.html: Favicon
- Pass thanks/index.html: OG image
- Pass thanks/index.html: JSON-LD parses
- Pass thanks/index.html: Noindex
- Pass thanks/index.html: Example banner
- Pass 404.html present
- Pass robots.txt present
- Pass sitemap.xml present
- Pass llms.txt present
- Pass .assetsignore present
- Pass Asset exclusion: .git
- Pass Asset exclusion: plans/
- Pass Asset exclusion: *.md
- Pass Asset exclusion: wrangler.jsonc
- Pass Header: Strict-Transport-Security
- Pass Header: X-Content-Type-Options
- Pass Header: X-Frame-Options
- Pass Header: Referrer-Policy
- Pass 404 routing
- Pass No forbidden strings
- Pass Fictional phone numbers
- Pass Fictional email addresses
- Pass HTTP /
- Pass HTTP /: Strict-Transport-Security
- Pass HTTP /: X-Content-Type-Options
- Pass HTTP /: X-Frame-Options
- Pass HTTP /: Referrer-Policy
- Pass HTTP /robots.txt
- Pass HTTP /robots.txt: Strict-Transport-Security
- Pass HTTP /robots.txt: X-Content-Type-Options
- Pass HTTP /robots.txt: X-Frame-Options
- Pass HTTP /robots.txt: Referrer-Policy
- Pass HTTP /sitemap.xml
- Pass HTTP /sitemap.xml: Strict-Transport-Security
- Pass HTTP /sitemap.xml: X-Content-Type-Options
- Pass HTTP /sitemap.xml: X-Frame-Options
- Pass HTTP /sitemap.xml: Referrer-Policy
- Pass HTTP /llms.txt
- Pass HTTP /llms.txt: Strict-Transport-Security
- Pass HTTP /llms.txt: X-Content-Type-Options
- Pass HTTP /llms.txt: X-Frame-Options
- Pass HTTP /llms.txt: Referrer-Policy
- Pass HTTP /404.html
- Pass HTTP /404.html: Strict-Transport-Security
- Pass HTTP /404.html: X-Content-Type-Options
- Pass HTTP /404.html: X-Frame-Options
- Pass HTTP /404.html: Referrer-Policy
- Pass HTTP /missing-78ff1e51685b4a8cbaf1236f30bf346f
- Pass HTTP /missing-78ff1e51685b4a8cbaf1236f30bf346f: Strict-Transport-Security
- Pass HTTP /missing-78ff1e51685b4a8cbaf1236f30bf346f: X-Content-Type-Options
- Pass HTTP /missing-78ff1e51685b4a8cbaf1236f30bf346f: X-Frame-Options
- Pass HTTP /missing-78ff1e51685b4a8cbaf1236f30bf346f: Referrer-Policy
- Pass HTTP /wrangler.jsonc
- Pass HTTP /wrangler.jsonc: Strict-Transport-Security
- Pass HTTP /wrangler.jsonc: X-Content-Type-Options
- Pass HTTP /wrangler.jsonc: X-Frame-Options
- Pass HTTP /wrangler.jsonc: Referrer-Policy
- Pass HTTP /plans/SPEC.md
- Pass HTTP /plans/SPEC.md: Strict-Transport-Security
- Pass HTTP /plans/SPEC.md: X-Content-Type-Options
- Pass HTTP /plans/SPEC.md: X-Frame-Options
- Pass HTTP /plans/SPEC.md: Referrer-Policy