Skip to content
All posts
5 min read

Spray Tanning by Rosie: a website that is a phone number

What a solo service business actually needs from the web — zero forms, fifteen tap-to-call links, prices on the page, and structured data that lets Google do the selling.

Case studyClient workLocal SEO

Rosie runs a one-woman spray-tanning studio in Midwood, Brooklyn, with by-appointment service in Deal, New Jersey. Her clients book by calling or texting her — that's the business, and the website was designed to respect it. There is no booking widget, no contact form, and no backend. Every call to action on the site terminates in her phone: fifteen tel: links and six sms: links, prices printed on the page, and a contact page that leads with two oversized tap-to-call and tap-to-text cards.

Static pages
12
Dependencies
4
Client components
2
Forms
0

Local SEO does the selling

With no forms to optimize, the site's job is to be found and to answer questions before the call. The structured-data layer is deeper than most agency work: a BeautySalon with a full offer catalog, opening-hours specification, and four-city service area on the home page; Service and FAQPage schema on the bridal landing page; Blog markup on the index, with BlogPosting and breadcrumbs on every post. All the Open Graph images, the favicon, and the apple icon are code-generated with next/og — the repo ships zero binary icon files.

The content does real work too: a dedicated bridal landing page with a four-step wedding-tan timeline and package pricing, and a five-post editorial blog written as narrative journalism — one post explains the chemistry of why a tan looks best on day two, and quietly feeds the bridal funnel. The typography kit behind it (drop caps, serif pull quotes, asides) is 115 lines of reusable components.

The audience is in the details

The business is rooted in Brooklyn's Jewish community and follows its calendar, and the site treats that as a product requirement rather than trivia: hours read “Friday: 9:00 AM – 1 hr before sunset,” the site answers motzei-Shabbat scheduling, and one blog post covers the Brooklyn-to-Deal summer migration its clientele actually makes. Serving a community well means encoding how it actually lives.

Small site, senior habits

  • One typed source of truth (245 lines) holds the phone number, hours, services, prices, testimonials, and FAQs — changing the phone number touches exactly one file.
  • Four runtime dependencies, React Compiler on, and only two client components in the whole site; entrance animation is pure CSS with a full reduced-motion opt-out.
  • Hover effects are gated to hover-capable, fine-pointer devices; the mobile drawer locks body scroll; fluid clamp() type keeps the hero working at 375px.
  • Full metadata plumbing: metadataBase, sitemap with real post dates, robots, and a PWA manifest.

Honest edges

The photography is staged placeholder imagery until Rosie's own studio shoot happens — documented in the repo with attribution and marked for replacement. And with a phone-native booking flow there is deliberately no analytics layer yet; when measurement matters, a call-tracking number is the likely first step, not a form.

The highest-converting feature on a solo service business's website is the owner's phone number, reachable in one tap from anywhere on the page.

What we'd tell a client

  • Match the medium to the business: if every booking happens by phone, a form is friction pretending to be a feature.
  • Structured data is the highest-leverage work on a local site — it sells while you sleep.
  • Editorial content outranks thin service pages, and it can carry your positioning somewhere a price list can't.
  • Cultural specificity converts: encode your client's real calendar, language, and geography instead of sanding them off.