What I reach for when I sit down to build.
Editor config, the dev stack, and hosting. Updated when something meaningful changes.
Editor
- VS CodePrimary editor. TypeScript language server, ESLint and Prettier on save. Keeps style consistent across projects without manual effort.
- ESLint + PrettierLint and format baked into every project. One less thing to argue about in code review.
- Claude CodeAI coding assistant. Used for scaffolding, refactoring, and working through unfamiliar APIs. Runs in the terminal alongside VS Code.
Dev stack
- Next.js (App Router)Framework of choice for new web projects. Server Components by default; client components only where interactivity genuinely requires it.
- TypeScript (strict)Strict mode on every project. The compiler catches more bugs at write time than any amount of defensive runtime checking would.
- pnpmFast installs, content-addressable storage, and reliable lockfiles. Consistent across machines without the disk bloat.
- Tailwind CSSUtility-first. Avoids the dead-CSS problem that builds up in long-lived codebases. The constraint of working with a design system pays off on every project.
- shadcn/uiCopy-in components built on Radix primitives. The code lives in the repo, not inside a node_modules black box. Easy to read, easy to modify.
- Magento / Adobe CommercePHP-based ecommerce platform. Fifteen years across OSS and Enterprise editions: builds, upgrades, performance work, and security audits.
- PHPStill a significant part of the day job via Magento. Modern PHP (8.x typed, strict) is a different language from what most people remember.
- MySQL / SQLThe database behind Magento and most of the long-running projects. Query optimisation and schema design are part of the ecommerce performance work.
- Git + GitHubVersion control and code review. One branch per task, squash on merge. Linear history makes bisect and blame actually useful.
Services
- VercelHosting for Next.js projects. Preview deployments per pull request, production on main. Zero-config for the cases that matter most.
- ResendTransactional email. Simple API, reliable delivery, no mail server to maintain. React Email for templates.
- GitHub ActionsCI/CD. Lint, typecheck, and build run on every pull request. Third-party actions pinned to commit SHAs.
- DependabotAutomated dependency update PRs on GitHub. Keeps the supply chain current without a manual audit cycle.