The situation
This one is a surf school in Hawaii. Like a lot of tourism businesses, many of their customers are visitors planning a trip from a phone. Someone is sitting in a hotel room or on a plane, deciding between a few schools, and they want to see the lessons, pick a time, and pay. If any of that is slow or confusing, they book somewhere else.
Behind the scenes, a lesson is more than a booking. Every surfer has to sign a waiver. Kids need a parent to sign for them. Some people add a photo package. Someone on the team needs to know who is showing up tomorrow morning and how to reach them.
I wanted all of it to live in one place.
What they needed
- A site that sells lessons well on a phone, with real photos and clear packages
- Online booking that only shows times that actually have room
- Payment at the time of booking, with taxes and local and military discounts handled correctly
- A waiver for every person in the group, signed before they paddle out
- Reminder and thank-you emails that go out on their own
- A simple dashboard to see the day, the customers, and the money
- A private place to deliver lesson photos to the people in them
What I built
The public side is a fast, photo-led site: lessons, a surf camp page, the team, FAQs and real reviews. Most of the words and images can be changed from the admin, so they're not waiting on me to swap a hero photo.
Booking is the center of it. A visitor picks a package, a date and a time slot. Each slot has a capacity, and the calendar only offers what still has space. They add everyone in the group, choose any add-ons, and pay through Stripe. Taxes and any local or military discount are applied automatically.
Once they've paid, things run on their own:
- Every surfer gets a waiver link. Each person signs their own, and a parent or guardian signs for anyone under age. Signed waivers are saved as PDFs the team can pull up any time.
- A reminder goes out before the lesson, with a nudge to sign the waiver if anyone in the group hasn't yet.
- A thank-you email goes out after, with a link to leave a review. Reviews come back into the admin, where the owner chooses which ones show on the site.
- A daily summary lands in the owner's inbox with that day's lessons, party sizes and phone numbers.
The admin has a "today" view, a calendar, customers, payments, availability, packages, reviews and FAQs. It also handles photo galleries: the team uploads a session, and the customer gets a private, password-protected gallery where they can download one photo or the whole set.
One decision I'm proud of
Speed. The site worked, but on a phone the home page was heavy. When I dug into the reports, I found the real problem wasn't one big image. It was a pile of medium ones all loading at the same time and fighting over a slow connection, so the main photo at the top waited its turn.
I moved every image onto the site itself and resized each one for the space it actually fills. I turned a 335KB logo into a 15KB one. I told the browser to load the top photo first and the rest only as you scroll. I also put the photos the owner uploads through the admin behind a cache, so they come from the same place as the rest of the site instead of a slower outside server.
The home page went from 4.8MB to about 700KB, and the owner can still upload a new hero photo whenever they want.
The results
All scores below were measured with Google PageSpeed (mobile), which runs Lighthouse against the live site.
- Home page weight: 4.8MB down to about 700KB
- Mobile performance: between 63 and 78 in June and July, then between 96 and 99 in the September and early October checks
- Largest Contentful Paint (how long until the main content shows): between 4 and almost 10 seconds early on, then 1.2 to 2 seconds in those same later checks
- Accessibility: 96 up to 100, after fixing a light grey line of text that was hard to read
- SEO and best practices: 100
One honest note: these scores move from run to run, and a couple of the most recent checks came in lower. That's normal for Lighthouse, and it's why I check the site every week rather than quoting one good day.
The bigger change is quieter. Bookings, waivers, reminders and review requests now happen without anyone chasing them.
What this means for your business
- If you sell time slots, your calendar should know what's full. Customers shouldn't be able to book what you can't deliver, and you shouldn't have to call them back to fix it.
- Paperwork can travel with the booking. Waivers, forms and reminders tied to each booking save you a front desk job you didn't want.
- Most "slow site" problems are images. The fix usually isn't fancy. Right-sized photos, loaded in the right order, do most of the work.
- Your site can ask for reviews for you. A short email at the right moment does more than a sign at the counter.
If this sounds like your business
If you run lessons, tours, rentals or anything else people book by the hour, I'd love to take a look at what you have now. You can run a free check of your site at mewebsites.com/audit, or tell me a bit about your business at mewebsites.com/start. No pressure either way. I'm always happy to talk it through.
