The Stack

Everything below is in real use on the apps this site runs — not a list of things that looked interesting. Where a choice was contested, the reasoning is written down. Where something is still being trialled, it says so.

The point is that you could adopt this, not just read it.

Capture

2 tools

Getting an idea out of your head and into something a machine can act on.

  • Dictation that produces clean, formatted text instead of a transcript.

  • Launcher and command palette for the whole machine, extensible with AI actions.

Build

5 tools

Where the AI actually writes and reviews code alongside you.

  • Agentic coding in the terminal - reads the repo, makes the change, runs the build.

    The important part isn't the chat, it's the context. This repo carries a .claude.md that states the monorepo layout, the conventions, and the rules an assistant is expected to follow, so a session starts already knowing the project instead of rediscovering it every time.

    .claude.md, .claude/rules/

  • CursorCore

    AI-first editor for the work that's easier to do with the file in front of you.

    Shares its rules with Claude through matching .mdc files: project-indexing for producing structured context maps, project-eval for diagnostic passes that explicitly do not edit code. Both are set to always-apply and tracked in git, so behaviour is the same on every machine.

    Why this one: Keeping the rules in the repo rather than in editor settings is what makes them portable between tools.

    .cursor/rules/, mirrored in .claude/rules/

  • v0Trying

    Generating a first-pass UI from a prompt when starting from a blank file.

  • BiomeCore

    Formatter and linter in one binary, fast enough to never think about.

    Why this one: Replaces the ESLint and Prettier pair with a single dependency and a single config.

    biome.json

  • Browser tests across Chromium, Firefox, WebKit and mobile viewports.

    playwright.config.ts

Ship

3 tools

Turning a working branch into something running in front of people.

  • The App Router framework every app here is built on.

    Why this one: Server components and route handlers mean one codebase covers the UI and the API, which matters a lot when you're the only person maintaining five of them.

    every app in this monorepo

  • Styling without maintaining a parallel stylesheet tree.

    tailwind.config.ts

  • VercelCore

    Deploys on push, with a preview URL per pull request.

    Each app in the monorepo is its own Vercel project pointed at its own subdirectory, so one repo produces several independently deployable sites.

    vercel.json

Run

6 tools

Keeping it alive: data, auth, payments, and the boring parts that matter.

  • The database behind all of it.

    drizzle.config.ts, apps/*/prisma/schema.prisma

  • Typed schema and queries for this site.

    Why this one: Schema is TypeScript, so the types the app uses and the types the database enforces can't drift apart.

    drizzle.config.ts, src/db/

  • PrismaCore

    ORM and migrations for the heavier apps.

    Used where the schema is doing real work - TCG Ship's orders, labels, wallet transactions and audit log - and migrations need to run cleanly on deploy.

    apps/tcg-ship/prisma/, apps/backdoor-cover-club/prisma/

  • ClerkCore

    Authentication without building session handling from scratch.

    src/components/NavAuthControls.tsx

  • Buying real postage programmatically.

    Powers label purchase and refunds in TCG Ship. One API covers rate shopping and label generation, which is what makes automatic service selection by order value possible.

    apps/tcg-ship/src/app/api/labels/

  • SupabaseTrying

    Postgres with auth, storage and realtime attached.