Tools & technologies
Tech stack
What I reach for when building products—languages, frameworks, and tools that ship.
Daily drivers
The core set I use most often.
ReactUI layer for most projects. Hooks, composition, and ecosystem.
TypeScriptTyped JS everywhere. Fewer bugs, better DX.
Node.jsRuntime for APIs, scripts, and tooling.
DockerContainers for consistent dev and deploy.
CursorAI-assisted editing. Day-to-day coding.
Frontend
ReactUI layer for most projects. Hooks, composition, and ecosystem.
TypeScriptTyped JS everywhere. Fewer bugs, better DX.
TanStack RouterType-safe routing with loaders and search params.
ViteFast dev server and builds. Default choice for new apps.
SassVariables, mixins, and structure for maintainable styles.
React Three FiberReact renderer for Three.js. 3D and WebGL when needed.
ZustandLightweight state. No boilerplate, scales well.
Next.jsSSR, static export, and Vercel when the project fits.
Backend
Node.jsRuntime for APIs, scripts, and tooling.
StrapiHeadless CMS with GraphQL and REST. Fast content backends.
Craft CMSFlexible headless CMS for marketing and e-commerce.
ExpressMinimal server framework. Middleware and routing.
MongoDBDocument store for flexible schemas and rapid iteration.
GraphQLAPIs when clients need precise, nested data.
REST APIStable, cacheable endpoints for integrations.
WebSocketsReal-time updates and live features.
DevOps & infra
DockerContainers for consistent dev and deploy.
AWSCompute, storage, and services when we need scale.
GitLabCI/CD, repos, and issue tracking in one place.
GitHubRepos, Actions, and collaboration.
Tools
CursorAI-assisted editing. Day-to-day coding.
GitVersion control and branching workflows.
VS CodeEditor and extensions when not in Cursor.
GSAPComplex animations and timeline-based motion.
FigmaDesign handoff and UI specs.
LinuxPrimary dev environment. Servers and desktop.
macOSSecondary environment and Apple-specific work.