Back to themes

Tonic

A bold, fast Astro booking template for salons, barbershops, spas, nail studios and clinics. Four colour presets, a four-step booking flow, a filterable services page, and three booking modes: request form, Cal.com or Calendly embed, or external link.


Cost

Paid


Tonic is a website template for local service businesses that take bookings: salons, barbershops, spas, nail studios and skin or wellness clinics. It gives a client a sharp, fast site where booking is the easiest thing to do.

What you get

  • Home, services and prices (with a category filter), a four-step booking flow, a confirmation page, a privacy page and a 404 page
  • Four colour presets (forest, midnight, plum, graphite) or any two colours of your own
  • Three booking modes: a request form, a Cal.com or Calendly embed, or an external booking link
  • Services, team, reviews, hours and business details in simple settings and JSON files
  • Local SEO built in: LocalBusiness structured data, Open Graph tags, canonical URLs, sitemap and robots.txt
  • Smooth page transitions and scroll reveals in pure CSS, off for visitors who prefer reduced motion
  • Nine plain-language guides for people who have never used Astro

Fast and accessible

  • Static output with a few KB of JavaScript, self-hosted fonts, images optimised to AVIF and WebP
  • Lighthouse mobile 100 across all four categories in local builds, 97 to 100 on the live demo
  • axe-core: 0 violations on every page, in all four presets

How booking works

Form mode sends each booking as a request to your form service and shows "Request sent". It is a request, not a confirmed booking. For live availability, use embed mode with Cal.com or Calendly. There is no built-in calendar, payment processing or CMS.

Licence and support

Single project ($49): one live website, which can be a client's. Unlimited projects ($129): any number of your own and client websites. 12 months of updates, email support with a reply within 2 to 3 business days, and a 14-day refund if Tonic does not work as described and support cannot fix it. Requires Node 22.19 or newer and Astro 7.