
HudsonLake
Strategic Communications for High-Stakes Decisions
Next.jsTypeScriptSanity CMSTailwind CSSMuxSendGridEmbla Carousel
Visit live siteOverview
Strategic communications firm delivering senior counsel and hands-on execution — partners with organizations navigating change, growth, and high-stakes decisions, recently joining forces with MikeWorldWide to broaden reputation-management impact.
What I did
- Architected the Next.js 16 App Router site under app/(site) with Sanity CMS as the editorial backbone — typed document schemas for home, capabilities, case studies, insights, news, our-people, team-members, contact, and settings under sanity/schemaTypes/documents.
- Wired Sanity Presentation Tool with live preview and draft-mode flows via app/api/draft-mode/{enable,disable} and a draftMode() guard in app/(site)/layout.tsx so editors review unpublished content with one click.
- Built the Mux video hero and case-study showcase using sanity-plugin-mux-input and hls.js in components/common/muxVideo — adaptive-bitrate playback streamed straight from Sanity-managed Mux assets.
- Shipped the Connect form with React Hook Form + Zod validation and a SendGrid send-email route at app/api/send-email/route.ts, plus a newsletter-subscribe endpoint with env-keyed mail targets and resilient error handling.
- Modelled orderable capability, case-study, and team-member lists via @sanity/orderable-document-list with reusable seo and link objects, surfaced through Sanity TypeGen output (sanity/lib/query.ts → sanity.types.ts) for end-to-end type safety.
Outcome
Delivered a content-managed brand surface where the comms team publishes capabilities, case studies, insights, news, and team profiles — and previews unpublished work end-to-end — without engineering involvement.
Building something similar?
I take on Sanity CMS + Next.js builds for startups and agencies. Typical engagements ship a polished marketing site or headless rebuild in 3–6 weeks.


