Tech stack
The tools I reach for.
59 technologies across 8 areas — grouped by the problem each one solves, with how long I have actually used it.
24
in orbit
of 59
24 in orbit — switch to Reference for all 59, grouped and annotated.
Core
The languages and frameworks everything rests on.
TypeScript
5 yrsDefault for every new project. Strict mode, no implicit any.
JavaScript
7 yrsES6+ from the event loop up to module bundling.
React
6 yrsServer components, suspense boundaries, and knowing when not to memo.
Next.js
5 yrsApp and Pages Router, streaming, route handlers, caching semantics.
React Native
2 yrsShipped cross-platform client apps alongside their web counterparts.
HTML5
7 yrsSemantics and accessibility first — the markup is the API.
CSS3
7 yrsGrid, container queries, custom properties, cascade layers.
State & data
Keeping client state predictable and server data fresh.
Zustand
2 yrsPrimary store on the live betting platform — small, typed, no ceremony.
Redux Toolkit
5 yrsNormalised entities and typed slices on larger codebases.
Redux Saga
3 yrsLong-running side effects where a thunk stops being enough.
TanStack Query
3 yrsServer-state caching, background refetching and optimistic updates.
Context API
6 yrsFor genuinely global, low-frequency state — nothing more.
REST
7 yrsService-layer clients with typed responses, never ad-hoc fetch calls.
GraphQL
3 yrsSchema-first consumption with generated types.
WebSocket
3 yrsReal-time odds and presence, with reconnection and backoff handled properly.
UI & styling
Design systems, layout and visual implementation.
Tailwind CSS
3 yrsMain styling layer on the current platform, driven by design tokens.
Sass
7 yrsToken-driven systems with CSS Modules for scoping — this site included.
Material UI
4 yrsHeavily themed installs, not defaults straight out of the box.
Mantine
2 yrsFast path to an accessible admin surface with good defaults.
Ant Design
2 yrsDense, data-heavy interfaces where the table is the product.
HeroUI
1 yrHeadless primitives when the design demands full visual control.
Styled Components
4 yrsRuntime theming on projects that predate the zero-runtime shift.
PostCSS
4 yrsCustom pipelines, autoprefixing and modern-syntax lowering.
Quality
What keeps a large refactor from becoming an incident.
Jest
4 yrsUnit and component coverage where the logic actually lives.
Cypress
3 yrsEnd-to-end journeys for the flows that cost money when broken.
ESLint
5 yrsFlat config, typed rules, no warnings left in the baseline.
Prettier
5 yrsFormatting is not worth a review comment.
Core Web Vitals
4 yrsBudgets set up front, measured in CI, defended in review.
Forms & visualisation
Validated input, and turning numbers into something readable.
React Hook Form
3 yrsUncontrolled by default, so large forms stay fast.
Zod
3 yrsOne schema shared by validation and the TypeScript types.
Formik
3 yrsLegacy form estates.
Yup
3 yrsPaired with Formik.
Recharts
3 yrsComposable charts that theme cleanly — used on this site.
Chart.js
3 yrsCanvas-based dashboards.
ApexCharts
3 yrsFinancial and time-series views with rich interaction.
D3.js
2 yrsWhen the visualisation is bespoke enough that a chart library fights you.
Framer Motion
4 yrsLayout animations, gestures and orchestrated sequences.
Media & maps
Live video and geospatial work — the specialisms my recent roles leaned on.
Video.js
3 yrsMigrated a live TV player to it: HLS, PiP, channel routing, maintenance modes.
HLS
1 yrLive vs. archive playback, latency tuning and Safari-specific behaviour.
Cesium.js
2 yrs3D globe and terrain rendering on a geospatial ERP product.
Leaflet
2 yrs2D mapping with custom layers and heavy marker sets.
Three.js
2 yrsWebGL scenes — and knowing when a CSS transform is the better answer.
GeoJSON
2 yrsData pipelines feeding map layers at scale.
Backend
APIs, auth and the data contracts in between.
Node.js
4 yrsService layers, auth flows and BFF endpoints.
Express.js
4 yrsREST APIs with JWT sessions, rate limiting and helmet.
Prisma
2 yrsTyped data access with migrations that survive a team.
PostgreSQL
2 yrsSchema design and the queries behind the dashboards.
Firebase
3 yrsAuth, Firestore and hosting for products that need to ship fast.
NextAuth.js
3 yrsSession and JWT strategies, provider wiring, middleware guards.
.NET Razor Pages
1 yrFrontend work inside an existing .NET server-rendered estate.
Delivery
Version control, pipelines and everything after "it works locally".
Git
7 yrsTrunk-based flows, readable history, reviewable diffs.
Yarn 4
2 yrsMonorepo workspaces with strict resolution.
Docker
3 yrsReproducible local environments and build images.
Nginx
2 yrsReverse proxying, caching headers and TLS termination.
PM2
2 yrsProcess management and zero-downtime reloads on VPS deploys.
Vercel
5 yrsPreview deployments, edge config, analytics.
Netlify
4 yrsStatic hosting with build plugins and redirects.
DigitalOcean
3 yrsDroplets, DNS and monitoring for self-hosted client work.
GTM & DataLayer
2 yrsE-commerce event schemas, owned end to end on a revenue surface.