The problem

Someone locked out at night is cold, stressed and holding a phone at 4% battery. They want your number, what to do right now, and roughly what it will cost. Most locksmith sites give them the first one, if they can find it.

KEYWAY GIVES THEM ALL THREE, ON EVERY SCREEN.

Three questions. One honest price.

The "Locked out?" guide asks at most three questions, then tells your customer what to do while they wait and what it will typically cost. Like a key, every answer has to line up.

  1. 01

    Is anyone in danger right now?

    No, everyone is safe

    If they say yes, the guide stops and tells them to call 911 first. No price, no delay.

  2. 02

    What are you locked out of?

    Home or apartment

    Home, car or business.

  3. 03

    What happened?

    My keys are inside

    Keys inside, lost or stolen, broke in the lock, or the lock itself is broken.

RESULT

We can open your door, usually without damage

$75–$150

Typical price. After hours, a flat $50 is added to both ends, and the guide says so.

(555) 014-2290

SAMPLE PRICES FROM KEYSTONE LOCK & KEY. YOURS COME FROM YOUR PROFILE.

Everything your customers come for. Nothing they don't.

01 A call button that never leaves

On a phone it sits in a bar at the bottom of every screen. On a laptop it's in the header. It always shows the actual number, so people know who they're calling, and one tap dials it.

02 A "Locked out?" guide with real prices

Up to three questions, then two to four plain steps, a reminder to have photo ID ready, and a typical price range for that exact situation. Eleven situations, each priced by you. Closed right now? It adds your after-hours fee and says so.

03 Key cutting prices, by the dozen

A table of key types with a price for each quantity break, and an estimator: pick a key and a number, see the total and what bulk saves. Over 20 keys, it tells them to call for a quote.

04 Open now, in your time zone

Your hours and the towns you cover, with today highlighted. "Open now · closes 6:00 PM" is worked out from your shop's clock, not the visitor's, so it's right even for someone driving in from another state.

  • LIGHT & DARK THEME
  • REDUCED MOTION
  • 44 PX TAP TARGETS
  • KEYBOARD FOCUS THAT NEVER GETS LOST
  • NO COOKIES, NO TRACKING

One file. Your shop.

Everything that makes the site yours lives in one profile: your name, tagline, phone number, time zone, opening hours, the towns you cover, your services, your guide prices, your after-hours fee and your key prices.

Change it, rebuild, upload the folder. There's no admin panel to log into, no database to look after, and no monthly fee to a website builder.

  • Up to 9 services, 30 towns and 12 key types
  • Every price in whole cents, so $3.50 stays $3.50
  • Hours checked against your own time zone
src/businessProfile.ts
export const businessProfile = {
  name: "Keystone Lock & Key",
  tagline: "Fast, friendly locksmiths. Open around the clock for lockouts.",
  phone: { display: "(555) 014-2290", dial: "+15550142290" },
  timeZone: "America/New_York",
  hours: {
    mon: { open: "08:00", close: "18:00" },
    // ...tue to fri the same
    sat: { open: "09:00", close: "14:00" },
    sun: null,
  },
  afterHoursFeeCents: 5000, // $50, added at night
  lockoutPrices: {
    "home.inside": { minCents: 7500, maxCents: 15000 },
    // ...ten more situations
  },
};

Make a typo and it tells you where. The site won't start with a mistake in your profile. It lists every one it finds, so you fix them all in one go:

Validator output for a profile with two mistakes
Business profile has problems:
hours.sat: close "13:00" must be after open "14:00"
phone.dial: must look like +15550142290 (+ then 7 to 15 digits)