SELECTED WORK / BOAT RENTALS

St. Joseph Boat Rentals.

St. Joseph, Michigan

A new website and a custom booking platform for pontoon rentals on Lake Michigan, from hourly harbor rentals to delivery on 45 inland lakes.

Visit live website (opens in a new tab)Explore the project
St. Joseph Boat Rentals homepage with the St. Joseph lighthouse and pier on Lake Michigan
CLIENT
St. Joseph Boat Rentals
INDUSTRY
Boat rentals
OUR WORK
Website, booking platform & technical SEO
WEBSITE
stjosephboatrentals.com

THE PROJECT

Pontoons on Lake Michigan.
Booked in a few taps.

St. Joseph Boat Rentals runs pontoon rentals from the St. Joseph harbor on Lake Michigan. Guests can take a boat out by the hour, add a licensed captain, or have a pontoon delivered to a lake house on one of 45 inland lakes across Berrien, Cass, Van Buren and St. Joseph counties.

The old WordPress site had a separate booking page for every rental length. We designed and built a new website and a custom booking platform behind it: customers check availability, choose a boat, sign their paperwork and pay online, and the team runs bookings, the fleet and deliveries from one admin.

DESIGN STRATEGY

A calm day on the lake,
with booking a tap away.

We built the look around a calm morning on Lake Michigan: cream backgrounds, deep navy and a lake-teal accent, with moving water under every hero. A live, GPU-drawn water surface rolls from each hero into the page.

The rest of the design stays out of the way of booking. Prices, delivery fees and what’s included sit on the cards, “Book a boat” is always in the navigation, and the booking flow asks for one decision per step, with a calendar that marks each day’s price tier.

TYPOGRAPHY

Playfair Display for headlines, with one italic accent word, and Inter for everything people read or tap.

COLOR

Cream, navy and Lake Michigan teal, with a warm orange kept for the booking flow’s next-step button.

MOTION

A WebGL water surface, gentle scroll reveals and a desktop-only hero film, all of which stop for visitors who prefer reduced motion.

HOW IT’S BUILT

One codebase for the website
and the booking engine.

The website and the booking platform share one Next.js and TypeScript codebase. Bookings, boats and lakes live in PostgreSQL, payments run through Stripe on the client’s own account, and email and texts go out through Amazon SES and Twilio. Scheduled AWS Lambda jobs send reminders and follow-ups.

A rule in the database rejects overlapping bookings, so the same boat can never be sold twice for the same time, even when two customers check out at once.

FRAMEWORK
Next.js 15 (App Router) and React 19
LANGUAGE
TypeScript
STYLING
Tailwind CSS, shared design tokens and Radix UI
DATA
PostgreSQL with Prisma, and DynamoDB for timed slot holds
PAYMENTS
Stripe on the client’s own account
HOSTING
AWS Amplify and CloudFront, with scheduled Lambda jobs

SEARCH, BUILT IN

Every lake gets a page.
Every old address still works.

The move from WordPress kept what the business had built in search, and the new platform gives each delivery lake a page of its own.

We kept the old site’s content addresses, including its lake pages and blog posts, and added 70 permanent redirects, most of them sending retired booking pages to the matching option in the new booking flow.

One lake-page template reads the booking system’s lake list, so each of the 45 delivery lakes has a page with delivery fees, the boats available, a local write-up, FAQs and links to nearby lakes.

Every page carries structured data for the business, and Service, FAQ, breadcrumb and blog-post markup appear on the pages they describe.

The sitemap and an llms.txt file for AI tools are generated from the same live data as the pages, so new lakes and posts appear in both automatically.

Pages are server-rendered with preloaded fonts, and the hero film loads only on larger screens, so phones get the page without downloading it.

The St. Joseph Boat Rentals homepage on a phone, with buttons for hourly rentals and multi-day drop-offs

THE SAME WEBSITE. A SMALLER SCREEN.

PROJECT HIGHLIGHTS

The details
that make it work.

Custom booking engine

Hourly, captained and drop-off rentals run through one engine with live availability, timed holds on a chosen slot and a database check that blocks double bookings.

A page per lake

One template turns the booking system’s lake list into a page for each of the 45 delivery lakes, with fees, boats and FAQs.

Paperwork online

Customers sign their waiver and upload ID online, before paying or afterwards in a customer portal, depending on the owner’s settings.

YOUR NEXT WEBSITE

Planning a website
your customers will use?

Let’s talk about your business, your customers and what your website needs to do.