Digital Knight
Knowledge and strength to create.
Strategic vision that invites the future.
Courage to consider what is right.
Free · 30 minutes · One click
Let's talk digital.
Pick a time. I'll bring strategy, recommendations, and an honest read on what to build next.
Services · The studio's four pillars
Spencer McKnight's personal agency,
built around four commitments.
- 01
Partnership
Long-term digital partnerships.
Advisory, ideation, strategy and development under one continuing engagement — so the work compounds instead of resetting every quarter.
- Advisory
- Ideation
- Strategy
- Development
- 02
Web craft
Websites built as the pillar of the business.
Design, build, evolve and maintain — a single surface the rest of your digital work can relate through. No CMS sprawl, no template drift.
- Design
- Build
- Evolve
- Maintain
- 03
AI integration
Process integrations that evolve past manual labour.
Agents, pipelines and production tooling wired into the business you actually run — prepared to build on ideas, not just demo them.
- Agents
- Pipelines
- Operations
- Tooling
- 04
Research
Evolution research — understand the market, set the trend.
Specialist market and technology research. Input new ideas. Pressure-test assumptions. Inform every other decision in the engagement.
- Markets
- Signals
- Reports
- Briefs
Tech · The stack, stated
A modern React stack, argued into its parts.
Every choice is defensible. Each row is a role with one stance. No frameworks chosen because they're popular; each is chosen because it is correct for its role on this site.
R/01Runtime
The shell is instant; the experience hydrates.
- Next.jsv16App Router, Server Components
- Reactv19Transitions, useActionState
- TypeScriptv6Strict, isolated modules
- TurbopackDev HMR
R/02Styling
Bespoke authorship. No utility classes arguing with design.
- SCSSDart Sass, canonical
- CSS ModulesScope without runtime
- Design tokensThree-layer cascade
- Ground inversionA mixin, not a prop
R/03Motion
Motion acknowledges change. Nothing is loud for sport.
- GSAPv3Timelines, cursor
- ScrollTriggerNative scroll, linked
- SplitTextPer-word heading reveals
- Reduced motionOne gate, one fallback
R/04Dimension
Matte metal where it earns its fold. Not a particle field.
- R3FReact renderer for Three
- dreiEnvironment, Float, suspense
- three.jsWebGL substrate
R/05State
Global signals stay small. Everything else stays local.
- Zustandv5No providers, no boilerplate
- useReducerPer-feature UI machines
- useActionStateServer actions, typed
R/06Data
The booking is its own service. Writes through the server, only.
- SupabasePostgres + RLS
- Server ActionsTyped boundary
- ResendReact Email templates
- @internationalized/dateTimezone-safe week math