Mira Astro documentation

Booking, hours and clinics

Connect your online booking, set opening hours with split shifts, and add one or more clinics with maps.

Online booking

Mira doesn’t take bookings itself. It sends patients to the booking system you already use, such as Jane, Cliniko, Calendly, Setmore or Practo, and adds phone, WhatsApp and email beside it.

// src/site.config.ts
booking: {
  url: 'https://yourclinic.janeapp.com/',
  embed: true,
  provider: 'Jane',
  page: '/book/',
},
Setting What it does
url Your online booking page. Leave it empty ('') to book by phone and WhatsApp only.
embed true shows the booking page inside your site when the visitor clicks Show available times. Nothing from the provider loads before that click, so it never slows your pages. false opens it as a normal link instead.
provider Shown as “Booking by Jane” under the button. Leave it empty to hide the line.
page Your booking page on this site. Every Book button goes here.

Some booking systems don’t allow their page to be shown inside another site. If yours shows a blank box, set embed: false.

The demo points url at /demo-booking/, a pretend calendar. Delete src/pages/demo-booking.astro once you’ve set your own.

Phone and WhatsApp

Call buttons use contact.phone. WhatsApp buttons open a chat with contact.whatsapp and a ready-written first message (“Hello, I would like to book an appointment.”), which you can change in src/i18n/ui.ts under book.whatsappText.

Clinics

Each clinic is a file in src/content/locations/en/, published at /locations/<file-name>/. The first one (lowest order) is your main clinic: the footer and the hero’s “Open now” use it.

---
name: Riverside Clinic
summary: Our main clinic, with four treatment rooms and a rehab gym.
address:
  - 12 Wharf Road
  - Riverside
  - London N1 7GR
phone: "+44 20 7946 0388"     # optional; otherwise contact.phone
hours:
  mon: ["08:00-13:00", "16:00-20:00"]
  tue: ["08:00-13:00", "16:00-20:00"]
  sat: ["09:00-14:00"]
  sun: []
note: Closed on bank holidays. For an urgent problem out of hours, call 111.
map: https://www.google.com/maps/embed?pb=…
image: location-riverside.jpg
imageAlt: A treatment room at Riverside Clinic
order: 1
---

Opening hours

Write each day as a list of times, "HH:MM-HH:MM". A day with two times has a split shift. Leave a day out, or give it [], to show it closed. Days with the same hours are joined in the table (Monday – Friday), and note appears under them, for bank holidays or emergency numbers.

“Open now · until 13:00”, “Opens at 16:00” and today’s row are worked out in the visitor’s browser using your timezone, so they’re always right without rebuilding the site. Without JavaScript the table still shows.

Maps and directions

  • Directions buttons open Google Maps searching for the clinic’s address. They work with no setup.
  • Maps load only when the visitor clicks Show map. For Google Maps, open your place, choose Share → Embed a map and copy the address inside src="…" into map:. For OpenStreetMap, choose Share → HTML and copy the src address. Without map, the block shows the clinic photo instead.

Showing them on a page

- type: hours
  variant: table       # or compact
  location: riverside  # optional; defaults to the first clinic

- type: locations
  variant: cards       # or map