B2B2C micro-frontend platform
20+ Vue apps living in single-spa, talking to each other in real time. GraphQL, REST and SignalR under one roof.
10+ years turning complex products into fast, typed, maintainable interfaces. Vue 3 · Nuxt · TypeScript. Tech lead by habit, not by title.
Performance is your money.
Every wasted request is a line on someone's invoice. I hunt them down.
I never listen passively.
Refinements are for challenging ideas. Including mine.
Quality is automated, not negotiated.
Strict types, lint rules and git hooks. Standards that hold when nobody is watching.
I build interfaces I'd want to use myself.
I click through them like an end user. If something bothers me, I fix it before anyone else notices.
Numbers, not adjectives.
10+
Years shipping production frontends
20+
Micro-frontends in one living platform
5+
Years with the same client — and counting
11+
Projects shipped to production
Classified work.
Most of my projects live behind NDAs. So here are the case files — names redacted, results intact.
20+ Vue apps living in single-spa, talking to each other in real time. GraphQL, REST and SignalR under one roof.
A rewrite that was slow before it shipped. Hard lint rules, a centralised query layer and real-time invalidation made it as fast as it gets.
Every translation publish fanned out across all clusters, languages and apps. I traced it and cut it to one app, one request. Plus a script that merged per-feature i18n files and rewrote every key in code.
I proposed drag & drop everywhere. Planning a week of meals went from clicking through forms to rearranging the screen in seconds.
Designed and shipped a Vue component library in Storybook, standardising UI patterns and speeding up feature development.
Used Docker and Kubernetes to stand up isolated environments per feature, and worked on the micro-frontend ecosystem's Azure CI/CD pipelines.
Vue 2 + TypeScript with SSR and complex screen transitions. Service Worker caching for assets and data, IntersectionObserver-driven lazy loading, and canvas-based weather visualisations. My first big one — fitting, given my taste in films.
Tools I trust.
What I think in. Daily, for years.
1// one typed source of truth2export const orderKeys = {3 all: ['orders'] as const,4 detail: (id: string) => [...orderKeys.all, id] as const,5}6 7// real-time: invalidate exactly what changed8hub.on('OrderUpdated', ({ id }: OrderEvent) =>9 queryClient.invalidateQueries({10 queryKey: orderKeys.detail(id),11 }),12)AI-assisted workflow and LLM integrations — a multiplier, not a replacement for thinking.
Yes, I know how to exit. I just rarely want to.
:wq
How I work.
“He compiles code just by looking at it.”
01
I challenge the ticket before I write the code. The cheapest bug is the one never built.
02
Clear boundaries, typed contracts, no hidden coupling. Components built to be reused.
03
Strict linting, formatting, pre-commit and pre-push hooks. Reviews that notice what isn't obvious.
04
Fast for users, cheap to run for the client, readable for the next developer. Along the way: mentoring and technical interviews with candidates.
Got a productworth doing right?
Available part-time, B2B, remote. Tell me what you're building — I reply within one business day.