Stack
What I use to build.
Tools and infrastructure I rely on to design, build, and ship.
→︎ 24 tools, all actively in use
Editor & Terminal
- cmux
Native macOS terminal for running coding agents in parallel. One workspace per agent and branch.
- VS Code
My editor for everything — PHP, TypeScript, and reviewing what the agents wrote.
- Warp
AI completions and block-based output. Replaced iTerm after the first session.
- tmux
Persistent sessions across projects. I lost work before I used it — never since.
- MonoLisa
The only coding font I've kept for more than a month.
- Dracula Pro
Dark theme across editor, terminal, and browser devtools. Consistent everywhere.
Frontend
- TypeScript
Strict mode everywhere. Explicit types at public boundaries, no `any`.
- Astro
My default for content-driven sites and landings. Near-zero JS by default, excellent DX.
- React
The other half of my frontend work. The ecosystem is unavoidable — and often the right call.
- Vue
The component model I keep coming back to, especially with Inertia on Laravel products.
- Tailwind CSS
Utility-first CSS with consistent design tokens. Fast iteration without naming things.
Backend & Data
- Laravel
My framework for full products — with Inertia and Vue on top. Batteries included, still elegant.
- Node.js
Runtime for APIs, scripts, and tooling — always with pnpm, never npm.
- PostgreSQL
Relational DB for anything serious. JSON support covers the edge cases.
- Redis
Caching and queues when Postgres alone isn't enough.
Infrastructure
- Cloudflare Pages
Edge deploys globally in seconds. Free at my scale, fast everywhere.
- Cloudflare Workers
Serverless at the edge with no cold starts. My default backend — Durable Objects included, deployed with wrangler.
- GitHub Actions
CI/CD for all projects. Simple enough for solo work, scales well for teams.
AI & Productivity
- Claude Code
Agentic coding in the terminal. Where most of my code gets written and reviewed these days.
- Claude API
The API behind my AI-powered products and internal agents. Tool use and structured outputs do the heavy lifting.
- Linear
Issue tracking that doesn't get in the way. The keyboard-first UX is excellent.
- Notion
Team knowledge base and async docs. Works for everything from team wikis to product specs.