Skip to content
← /srv/projects

Metrics Dashboard

Year
2025
Role
Sole developer
Status
live

An internal dashboard that turns the archive's reporting questions into one click, replacing SQL written by hand every time a stakeholder asked.

  • Node.js
  • Express
  • React
  • Vite
  • Tailwind
  • SQL
  • Matomo

Problem

Stakeholders regularly want numbers out of the archive: how many archives were completed, how much data has been deposited in total, activity over a given period. Every one of those questions was answered by someone writing SQL by hand, running it, and formatting the result.

That is slow, it is repeated work, and it puts a technical gate in front of routine questions. It also spikes badly at the end of the financial year, when reporting demand is highest and time is shortest.

Approach

A small internal API with a React front end. Express serves endpoints that each own one reporting question; the React application renders the results.

The interesting part is behind the endpoints, not in front of them. The queries join across tables and roll up over date ranges, and the dashboard also pulls from the Matomo API so web analytics sit alongside archive figures rather than in a separate tool. The complexity lives in the query layer so the interface stays a set of plain questions with plain answers.

Built with Node, Express, React, Vite and Tailwind.

Outcome

In daily use, and heavily used at financial year end. Reporting questions that required someone to write and run a query are now self-service, which removes a recurring interruption from technical staff and gets stakeholders answers without a queue.

It currently runs inside the network only, because it is not yet hardened for external exposure. Authentication is the work in progress — OAuth2 potentiality is being explored with Shibboleth, so it can use existing institutional identity rather than growing a user store of its own.