Work Workout 24/7

A Next.js gym website the owner runs without a developer

Workout 24/7 needed a website the owner could update without calling a developer for every price change. The rebuild models the business itself in Sanity CMS: locations, membership plans and FAQs are content, so adding a town means adding one document, and the page, the navigation and the SEO metadata all follow from it.

Role
Sole developer: content model, build and ongoing maintenance
Stack
Next.js 16 · React 19 · TypeScript · Tailwind CSS · Sanity · Upstash Redis · Resend · Vercel
01

A Sanity content model built around the business

Locations, membership plans and FAQ entries are their own document types, and they share one SEO field set, so every page gets a proper title and description. A single dynamic route renders any location from its slug, which keeps Osakis and Wells consistent with each other as the site grows.

02

Edits go live in seconds with on-demand revalidation

When the owner publishes a change, a signed Sanity webhook tells the site exactly which pages it affects, and only those are refreshed. A price edit is live in seconds while the rest of the site stays cached and fast, with no full rebuild to wait for.

03

A contact form that keeps out spam and keeps every lead

The form pairs a honeypot with a Redis-backed sliding-window rate limiter. Serverless functions do not share memory, so the limiter keeps its count in Upstash Redis, where every instance can see it.

It is built to put customers first: if Redis is ever unreachable, enquiries still go through and the honeypot keeps catching bots, so a real customer's message always reaches the gym.