Interfaces for the people who use it every day.
React and TypeScript front-ends for the tools teams actually work in — admin panels, operations dashboards and data-heavy apps. Built to stay fast when the table has 10,000 rows, not just the ten in a demo. And because I build the API underneath too, the frontend and backend are designed to fit. Remote, worldwide.
Front-ends that stay fast under real data.
Marketing sites are one thing; the app your team lives in all day is another. This is the second kind — and there are working demos of it in my portfolio.
Operations dashboards
KPI cards, charts, filterable data tables — see seven working dashboard demos on sample data in the portfolio, from travel to fintech to SaaS. Or Power BI, if the data lives in SQL →
Single-page applications
Full React apps with routing, state and clean component structure — the interface for a product, not just a page.
Data-heavy tables & grids
Sorting, filtering, pagination and exports over large datasets, kept smooth with virtualisation and server-side paging.
Real-time interfaces
Live updates with SignalR or websockets — dashboards, notifications and status boards that change as the data does.
Admin & internal tools
The back-office panels that run a business — users, orders, bookings, content — built to be fast and hard to break.
Design-to-code
A Figma file or a design turned into pixel-accurate, responsive, accessible React — matching what you actually approved.
What every frontend build includes
A good interface is fast, clear and usable by everyone. Every build ships with the things that make it hold up in daily use.
- React + TypeScript, cleanly structured
- Responsive layouts, mobile to wide desktop
- Accessible, keyboard-friendly UI
- Efficient data fetching & caching (React Query)
- Fast tables, filters, search & exports
- Sensible loading, empty & error states
- Connected to a real API, not mock data
- Consistent styling (Tailwind or your system)
The frontend and the API, from one person
Most frontend problems are really API problems — the wrong data shape, too many round-trips, no endpoint for what the UI needs. Because I build both, that friction disappears.
- The API is designed for the screen that uses it
- No waiting on a separate backend team
- Real performance work, not just a pretty demo
- Seven live dashboard demos you can click through
- Accessible and responsive by default
- You own all the code — no lock-in
From design to a running interface, in five steps.
Scope
Who uses it, what they do most, and what "fast enough" means. We agree the screens and the data behind them.
Structure
Components, routing and state planned so the app stays clean as it grows — and the data flow is settled up front.
Build
Screens built against a real API with previews as we go, so you see and steer it while it takes shape.
Polish & performance
Loading and error states, accessibility, and speed under real data volumes — the details that separate a demo from a tool.
Ship & support
Deploy, hand over, and stay on to add screens and features as the product grows.
See it, and what's behind it.
Working demos and the related services that make a frontend actually work — the API and the data underneath.
Seven dashboard demos
Click through working dashboards on sample data — travel, fleet, fintech, healthcare, HR and SaaS — each with KPIs, charts and live tables.
Backend & API development
The API layer the frontend talks to — designed for the screens that use it, by the same engineer.
Website development
Need a marketing site or store rather than an app? That's a separate build — here's the website service.
React Native mobile apps
Same React knowledge, same team, on iOS and Android — when the dashboard needs a phone app beside it.
Need a dashboard or a React app?
Tell me what the interface needs to do and who uses it — a sketch or a Figma is enough. You'll get an honest scope and a clear quote, with no pressure.