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 toolsGetting an idea out of your head and into something a machine can act on.
- SuperwhisperCore
Dictation that produces clean, formatted text instead of a transcript.
- RaycastCore
Launcher and command palette for the whole machine, extensible with AI actions.
Build
5 toolsWhere the AI actually writes and reviews code alongside you.
- Claude CodeCore
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
- PlaywrightCore
Browser tests across Chromium, Firefox, WebKit and mobile viewports.
playwright.config.ts
Ship
3 toolsTurning a working branch into something running in front of people.
- Next.jsCore
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
- Tailwind CSSCore
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 toolsKeeping it alive: data, auth, payments, and the boring parts that matter.
- PostgreSQLCore
The database behind all of it.
drizzle.config.ts, apps/*/prisma/schema.prisma
- Drizzle ORMCore
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
- EasyPostCore
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.