Work projectFreelance

Client KPI Dashboards

Freelance client work · React dashboards

Interactive KPI dashboards for a freelance client, bringing several data sources together behind one Node.js API.

Private code · client-owned

Data

Multiple sources

API

Node.js · one REST interface

UI

React · KPI dashboards · filters
Client KPI Dashboards preview
The code belongs to the client, so this diagram shows the architecture I built.Open full size

Problem

Decisions ran on static exports and spreadsheets, so trends surfaced late.

Solution

React dashboards with filterable KPIs and trend views, on a Node.js API over several data sources.

Result

Filterable KPIs in one place instead of hand-refreshed reports.

Overview

A freelance client was working from static exports and one-off spreadsheets, so trends stayed hidden until someone refreshed a report by hand. The goal was interactive dashboards that make KPIs easier to read.

I built a React front end with filterable KPI modules and trend views, and a Node.js API that brings several data sources together behind one REST interface. The code belongs to the client, so the diagram shows the architecture.

What it does

  • Filterable KPI modules instead of static exports
  • A Node.js API that brings several data sources together
  • Trend views that make changes easy to spot

What's next

Hiring for a full-stack, Python or AI role — or need something like this built? Let's talk.

I'm available immediately — on-site or hybrid in Moscow, or remote; full-time or contract. I reply within 48 hours — faster on Telegram.

Get in touch TelegramDownload CV

Alhassan Alfarran.

© 2026 · Designed and built by me with Next.js, Tailwind and Framer Motion.

My local time: · Moscow

Notes
How this site is built

Stack

Next.js (App Router) and React, styled with Tailwind CSS and animated with Framer Motion. The contact form sends email through Resend; the site is hosted on Vercel.

Three languages, one layout

English, Russian and Arabic each have their own address (/en, /ru, /ar) and share one set of components. The layout uses logical CSS properties (start/end instead of left/right), so Arabic mirrors right to left without separate styles. The server sends every page with its language and text direction already set, so nothing flips after loading, and the Arabic font is only downloaded when Arabic text is on screen.

Performance and accessibility

Sections below the first screen skip rendering until you scroll near them, and the quick menu loads on first use. Everything works from the keyboard, with a skip link and visible focus, and animations switch off when your system asks for reduced motion.

Source code on GitHub