I write frontend code. The interface is where a product earns trust or loses it, usually through things nobody files a bug about: what the screen does while it waits, whether a failed request says what to do next, whether tapping pay twice creates one order or two.
How I work
I start from the states nobody demos: loading, failure, and a value changing underneath the user. Getting those right is most of what separates an interface that feels solid from one that feels improvised.
In practice that means typed API contracts, caching defined in one place, and components small enough to hold in your head. On Glam n Go that was Redux Toolkit Query. On Jeba Pesa it was scoped CSS Modules and one rule: no screen invents its own error treatment.
Where behaviour matters, I write the failing test first. Not for coverage, but because naming the behaviour forces me to decide what a component is responsible for. That is far cheaper to change in a test than in six screens that already call it.
Shipping is where measuring starts
A release is a hypothesis, so the measurement goes in before it goes out. Analytics 4 or Tag Manager wired up, events named after the behaviour rather than the button, and the conversions the product actually cares about tracked from day one.
Search is the same job. I build in the parts a crawler needs: server-rendered titles and descriptions, one canonical per page, structured data, a sitemap and Search Console verified. That is setup and integration rather than an SEO campaign. I get the foundation right and leave the strategy and content to whoever owns it.
What I care about
Performance, because my audiences are on mid-range Android and networks that are not generous. Accessibility, because a keyboard trap is a bug with a person on the other end of it. Readable code, because the fix that also removes the ambiguity beats the fix alone.
Outside the editor
I read about rendering and the browser platform, and I use tools before I need them so I am not learning under deadline. This site is one of those: TanStack Start, with a design system written from the token layer up.
Capabilities
The detail
Grouped by what the work actually involves rather than by logo.
Core
The stack I reach for by default and have shipped production work in every year of my career.
- React
- TypeScript
- JavaScript (ES2023)
- Redux Toolkit
- RTK Query
- React Router
- TanStack Query
- TanStack Router
- TanStack Start
- TanStack Table
- TanStack Form
Interface & styling
Turning design files into interfaces that hold up across breakpoints, themes and input methods.
- Tailwind CSS
- CSS Modules
- Styled Components
- SASS
- Design systems
- Responsive layout
- WCAG 2.2 AA
Performance
Making pages fast on the devices and networks the audience actually has.
- Core Web Vitals
- Code splitting
- Render optimisation
- Bundle analysis
- Image and font strategy
- Caching
Testing & quality
Writing the failing test first, so the design of the code answers to how it gets used.
- Test-driven development
- Vitest & Jest
- React Testing Library
- Integration testing
- End-to-end testing
- Mocking & test doubles
- Coverage as a signal, not a target
Analytics & SEO setup
Wiring measurement and the search essentials into a build. Integration and setup rather than campaigns or content strategy.
- Google Analytics 4
- Google Tag Manager
- Google Search Console
- Event & conversion tracking
- Meta & canonical tags
- Structured data (JSON-LD)
- Open Graph & social cards
- Sitemaps & robots.txt
Engineering practice
How the work gets from a branch to live.
- Git & GitHub
- GitHub Actions
- CI/CD pipelines
- Agile delivery
- Cross-browser debugging
Technical leadership
What I take responsibility for beyond my own tickets.
- Code review
- Mentoring & onboarding
- Technical decisions
- Scoping & estimation
- Setting conventions
- Documentation & handover
Experience
Every role so far
Every role, listed most recent first.
Frontend Lead
CurrentMookhRemoteRemoteFull-time
Jan 2026 — Present
- Lead frontend direction across the platform, setting the standards the rest of the work is reviewed against.
- Own architecture decisions on state, component boundaries and performance budgets.
- Review code and mentor engineers, focusing on the reasoning behind a change rather than only its output.
- Next.js
- React
- TypeScript
- Tailwind CSS
- CI/CD pipelines
Frontend Engineer
MookhRemoteRemoteFull-time
Sep 2024 — Dec 2025
- Improve app speed and efficiency by optimising component rendering across the product surface.
- Refactor existing code for readability and performance, splitting oversized components into composable units.
- Identify and fix defects reported by users or caught during testing, tracing each to root cause.
- Next.js
- React
- Tailwind CSS
- Git workflows
- CI/CD
Frontend Engineer
Jeba Jeba LimitedKampala, UgandaOn-siteContract
Aug 2023 — Sep 2024
- Implemented Figma designs in React at high fidelity for Jeba Pesa, a consumer fintech product.
- Integrated API endpoints and handled data flows through Redux Toolkit Query, giving every screen consistent caching and error handling.
- Optimised application performance and built responsive layouts with mobile treated as the primary case.
- React
- Redux
- Redux Toolkit
- JavaScript
- CSS3
Frontend Engineer
DavsafarisRemoteRemoteFreelance
Jan 2023 — Dec 2023
- Built new features on a live tours and travel booking platform without disrupting existing flows.
- Collaborated with cross-functional developer teams on work spanning frontend and backend boundaries.
- Resolved bugs, errors and cross-browser compatibility issues affecting real customer sessions.
- React
- Axios
- JavaScript
- CSS Modules
- Material UI
Web Developer
Crabtree Technology LimitedKampala, UgandaOn-sitePart-time
Jun 2022 — Jan 2023
- Built and designed client websites and web applications to brief, in HTML, CSS, JavaScript and React.
- Developed the interface and interaction layer so sites stayed usable and responsive across devices and browsers.
- Tested and debugged builds, resolving bugs, errors and compatibility issues before handover.
- JavaScript
- HTML/CSS
- jQuery
- React
Frontend Engineer
Moxtech Software DevelopersRemoteRemoteFull-time
Jan 2021 — Sep 2023
- Developed and maintained production React applications in TypeScript across multiple client engagements.
- Optimised applications for speed and scalability, from bundle size through to render performance.
- Wrote and maintained unit and integration tests to hold code quality steady as the team grew.
- TypeScript
- React
- Redux
- Tailwind CSS
- JavaScript
Frontend Developer
STRATCOMKampala, UgandaOn-siteInternship
Sep 2020 — Dec 2020
- Built an e-commerce platform end to end and deployed it on Firebase.
- Assisted on client websites and web applications, contributing interface and interaction work.
- Tested builds across devices and browsers, identifying and fixing bugs and compatibility issues.
- React
- JavaScript
- HTML/CSS
- Firebase
Available for work
Have something worth building?
I'm open to frontend roles and freelance work. Tell me what you're working on and I'll tell you honestly whether I'm the right fit.