Skip to content
Sean Swanson_
All work

Web / 2026 / Live

Lakes Area Web Design

Websites for businesses that earn in five months and get booked in the other seven. The gap between those two facts is the entire brief, and almost no small business site is built for it.

Screenshot of Lakes Area Web Design

The mismatch the site is built on

A resort, an outfitter or a lake bar makes most of its year between Memorial Day and early October. The bookings that fill those months are made in February and March, by somebody several hundred miles away comparing three places they have never seen.

The earning months and the buying months barely overlap. Nearly every small business website is built as though they are the same months, which means the site is at its least convincing exactly when the decision is being made. The home page opens with a twelve month strip showing the two seasons side by side, because that is faster to understand than any paragraph I could write about it.

What a seasonal site has to do differently

It has to keep selling while the business is shut. The worst thing a resort site can do is read as closed in January, and plenty of them do, because they were built to describe a business that is currently open.

So the pages are built to hold next season's rates, dates and booking enquiries before the season exists, and to say plainly what is open and when. The rates page carries a note about booking the build in March rather than the week before opening, because a site delivered in June has already missed most of what it was for.

The fourth design, checked with a diff

This is the third local site I have built and it shares zero class names with the second one. I verified that by diffing the stylesheets rather than by looking at them, because two sites can read as completely different and still be the same document underneath, and the DOM is what gives a template farm away.

Dusk plum and rust on warm bone, Fraunces and Karla, squared three-pixel corners with hard offset shadows, a low sun motif. The only lines the two stylesheets share are a generic reset.

The bug worth writing down

The social card rendered in the wrong typeface and the code was correct. Fraunces installs under the family name "Fraunces 144pt", so asking for "Fraunces" in an SVG silently falls back to a default sans and still produces a perfectly valid image at the wrong width.

Nothing throws, nothing logs, and every check passes. The only way to catch it is to look at the finished picture or to confirm the font name resolves before rendering anything with it. I check that on every project now. A silent fallback that produces valid output is worse than a crash, because a crash tells you.