Every craftsperson has their tools. Here's a deep dive into the technology stack that powers my work—the frameworks, the languages, the infrastructure that makes everything possible.
The Philosophy
Before diving into specifics, the underlying philosophy:
- Choose boring technology for critical paths
- Embrace new tools when they solve real problems
- Optimize for developer experience without sacrificing user experience
- Keep it simple until complexity is necessary
Frontend
Next.js + React
Next.js is my go-to for anything web. The combination of:
- Server components for performance
- App router for modern patterns
- Edge runtime for global performance
- Built-in optimization
// Server component by default
export default async function Page() {
const data = await fetchData();
return <Component data={data} />;
}
TypeScript
Non-negotiable. The productivity gains from type safety far outweigh the initial investment.
Tailwind CSS
After years of various CSS approaches, Tailwind hits the sweet spot:
- Utility-first for rapid development
- Design system constraints
- Zero context switching
- Easy to maintain
Backend
Node.js + TypeScript
For most web backends, Node.js provides:
- Shared language with frontend
- Excellent async performance
- Rich ecosystem
- Easy deployment
Rust
For performance-critical work:
- Systems programming
- CLI tools
- WebAssembly
- Anything that needs to be fast
PostgreSQL
The database that can do everything:
- Relational when needed
- JSONB for flexibility
- Full-text search
- Excellent performance
Infrastructure
Vercel
For frontend deployments:
- Zero configuration
- Automatic previews
- Edge functions
- Global CDN
GitHub Actions
CI/CD that lives where the code lives:
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
Development Tools
Cursor
The AI-powered code editor that's genuinely useful. Not a gimmick—actually accelerates development.
Linear
Project management that respects developers. Keyboard-driven, fast, focused.
Raycast
macOS launcher that's become the command center for everything.
Monitoring
Vercel Analytics
For web vitals and performance monitoring.
Sentry
For error tracking and debugging in production.
The Workflow
- Idea → Linear ticket
- Branch → GitHub
- Code → Cursor
- Preview → Vercel
- Review → GitHub PR
- Deploy → Vercel
- Monitor → Analytics + Sentry
What I'm Exploring
- Rust for more backend work
- Astro for content-heavy sites
- Drizzle ORM for type-safe database access
- tRPC for end-to-end type safety
The Meta-Lesson
The specific tools matter less than:
- Understanding your requirements
- Knowing your tools deeply
- Being willing to change when something better comes along
- Keeping complexity proportional to the problem
The best stack is the one that lets you ship quality work consistently.
What's in your stack? Always interested in hearing what's working for others.