HudsonLake

HudsonLake

Strategic Communications for High-Stakes Decisions

Next.jsTypeScriptSanity CMSTailwind CSSMuxSendGridEmbla Carousel
Visit live site

Overview

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.

Related projects