Languages & Frameworks
The core languages and frameworks I build with daily, from HTML and CSS fundamentals through React, Next.js, and React Native for mobile.
Languages
- The foundation. Every project starts here regardless of what's rendering it.
- Core styling language, still the ground truth under Tailwind and every other CSS tool I use.
- Where I started writing structured, maintainable stylesheets before utility-first CSS took over my workflow.
- The language underneath everything, even now with TypeScript as my default for anything non-trivial.
- Used it heavily early in my career for client sites without a JS framework. Still shows up on legacy codebases.
- My default for anything beyond a quick prototype. Catches bugs before they reach production and makes collaborating on client codebases way smoother.
Web Framework
- The core of everything I build. Even when Next.js is the framework on top, hooks and component patterns are how I actually think through UI.
- I use Next as the frontend for all of my projects. Its server-side capabilites make it great for SEO and with small apps a separate backend may not be necessary.
Mobile
- My go-to for mobile builds, iOS and Android from one codebase, no need to maintain two separate native apps.
- My toolchain on top of React Native. Handles builds, OTA updates, and native modules without me touching Xcode or Android Studio directly.
Routing
- Used when a project doesn't need Next's file-based routing, mainly in Vite or CRA setups.
- A newer pick for projects that want fully type-safe routing without Next.js's file conventions.
State Management
- A lightweight state manager for when Context or component state isn't enough, but Redux feels like overkill.
- My pick on larger client apps with complex, shared state across many screens. Not my default, but solid when the app actually needs it.
- The way I actually write Redux now. Cuts the boilerplate down to something reasonable.