Skip to main content
Tools of the trade

The stack
I trust to ship.

Opinionated defaults for speed, typed foundations for safety, and selective reach-fors for edge cases. Nothing trendy for its own sake. Everything here earns its place in production.

Stack principles
Typed end-to-endBoring by defaultAI-assisted delivery
4
domains
32
tools
1
coherent stack

Philosophy

01

Boring is a feature.

I reach for established tools with deep ecosystems, not whatever topped HN last week. Boring technology ships faster, hires easier, and fails less.

02

Types are documentation.

TypeScript end-to-end means the shape of your data is a first-class citizen. No runtime surprises. No stale wikis. The types are the spec.

03

Observability is not optional.

Error tracking, analytics, and logging go in on day one. You can't improve what you can't see. Production is where assumptions meet reality.

04

AI is leverage, not a shortcut.

AI accelerates the scaffolding, drafting, and repetitive decisions. Every line that ships is shaped by deliberate review. Speed ≠ carelessness.

Everything the user touches. Performance, accessibility, and type-safety aren't negotiable — they're load-bearing.

Next.js

Core

App Router + RSC for zero-waste loading. The default for anything server-rendered.

React

Core

The component model that everything else is built on. Nothing else comes close for complex interactive UIs.

TypeScript

Core

Types are documentation that can't drift. Non-negotiable on anything that ships.

Tailwind CSS

Core

Utility-first means the design system lives in tokens, not in a sprawling CSS file nobody wants to touch.

Framer Motion

Reach for

The animation primitive that plays well with React's rendering model. Used selectively.

shadcn/ui

Reach for

Copy-paste components with full ownership. No vendor lock-in on UI primitives.

Radix UI

Reach for

Unstyled, accessible headless components for anything custom.

Zod

Reach for

Schema validation at system edges. Pairs with tRPC and form libraries naturally.

Full list

Frontend
  • Next.jsCore
  • ReactCore
  • TypeScriptCore
  • Tailwind CSSCore
  • Framer MotionReach for
  • shadcn/uiReach for
  • Radix UIReach for
  • ZodReach for
Backend
  • Node / BunCore
  • tRPCCore
  • Drizzle ORMCore
  • PostgreSQLCore
  • RedisReach for
  • StripeReach for
  • Clerk / Auth.jsReach for
  • ResendReach for
Infra
  • VercelCore
  • GitHub ActionsCore
  • CloudflareCore
  • SentryCore
  • PostHogReach for
  • Neon / SupabaseReach for
  • UpstashReach for
  • PlanetScaleSituational
AI & Tooling
  • CursorCore
  • ClaudeCore
  • OpenAI SDKReach for
  • Vercel AI SDKReach for
  • Pinecone / pgvectorReach for
  • LangChain / LlamaIndexSituational
  • EvalsReach for
  • ReplicateSituational
09 / Get in touch

Gotathingyouneedshipped?

Stack — Studio Seahorse