Skip to content

    Essential Cookies Only

    We only use strictly necessary cookies to make this site work. We do not use analytics, advertising, or tracking cookies. For details, see our Learn more

    Humanising Public Health Data

    Bridging the gap between complex government datasets and public accessibility during a global crisis.

    Scottish Tech Army COVID Dashboard

    Project Details

    DurationJune 2020 - February 2021
    RoleUX Developer

    Key Metrics

    2 Weeks
    From challenge to prototype
    10 Weeks
    From idea to public launch
    World First
    COVID data sonification for Accessibility
    AA
    WCAG 2.0 compliance standard

    Technology Stack

    Explore the Code

    This dashboard is fully open-source. Explore the codebase on GitHub or use DeepWiki's AI to discover implementation details.

    Joining the Scottish Tech Army

    In early 2020, fresh out of a coding bootcamp and eager to contribute during the pandemic, I signed up as a skilled volunteer with the Scottish Tech Army. The organisation had been set up to mobilise tech talent for public good during the COVID-19 crisis.

    While I was there, STA launched something called the "Homebrew Challenge" in June 2020. The brief was simple: take the Scottish Government's open COVID-19 data and make it accessible to ordinary people. We had two weeks and we'd never met each other.

    Four teams formed within a day. I joined strangers from across Scotland (and beyond) on video calls during lockdown, figuring out how to collaborate on a real project. Some of us were experienced developers; others, like me, were just starting out. The senior team members were generous with their time, teaching us pair programming, code review, and how to work in an agile environment.

    Scottish Tech Army COVID Dashboard Team
    Some of the COVID Dashboard volunteer team

    After the two-week showcase event, our team's prototype was selected as the foundation for production. In only ten weeks since the idea was born, on 2nd September 2020, we launched it to the public.

    Project Journey

    June 2020December 2020
    Homebrew Challenge Launched15 June 2020

    COVID-19 Visualisation Project kickoff. All volunteers given was a link to Scottish Government's open data. Four teams formed within a day.

    Showcase Event30 June 2020

    Four teams present their visualisation approaches to the STA community in the largest group video event to date.

    Scottish Government Presentation10 July 2020

    Combined team presents to Scottish Government. Asked to provide feedback regarding their Open Data Initiative.

    Government Adopts Recommendations28 July 2020

    The Scottish Government release their planned changes to coronavirus data page following the Open Data Initiative feedback.

    Public Launch2 Sept 2020

    Dashboard released to the public as an information resource for Scottish citizens. Just 10 weeks from initial challenge to launch.

    Recognition & ImpactDec 2020

    Scottish Government credit the STA COVID Dashboard in their Open Government Action Plan progress report.

    Team Impact & Recognition

    We delivered a vital public resource during the pandemic peak, providing Scottish citizens and public organisations with accessible, understandable COVID-19 data.

    World-First Sonification

    World-first COVID data sonification, also featured in The Guardian. Led by Dr Eirini Kominou, the team was inspired by the Financial Times' sonification of the US treasury yield curve, adapting frontend sonification techniques to turn COVID-19 time series into sound.

    Contributing to the Team

    Working alongside other volunteers, I contributed to the core React structure. My work spanned the entire front-end stack, from implementing React hooks and routing logic to designing reusable UI components that became the foundation of the project's visual identity.

    COVID Dashboard Screenshot
    The COVID Dashboard in action

    Learning About Data Resilience

    The primary technical challenge was data volatility. The project relied on daily CSV datasets from Public Health Scotland (PHS), which were processed via an AWS Lambda pipeline. Working alongside a senior mentor and other volunteers, I learned first-hand how to build React components that could gracefully handle changing data formats.

    This experience taught me how to write defensive code and design responsive layouts that maintained accessibility across mobile, tablet, and desktop viewports, ensuring that critical summary statistics were the first thing users saw regardless of their device.

    Test Data Structure (App.test.js)
    const testAllData = {
      regions: {
        S12000013: {
          weeklyCases: 50,
          weeklyDeaths: 0,
          name: "Na h-Eileanan Siar",
          dailyCases: { date: TOTALS_DATE, value: 4 },
          dailyDeaths: { date: TOTALS_DATE, value: 0 },
          cumulativeCases: { date: TOTALS_DATE, value: 167 },
          cumulativeDeaths: { date: TOTALS_DATE, value: 1 },
          fatalityCaseRatio: "0.6%",
          population: 26720.215057246038,
          weeklySeries: { cases: [7, 44, 7], deaths: [0, 0, 0] },
          dailySeries: {
            dailyCases: [0, 1, 3, 1, 0, 0, 2, 1, 0, 9, 15, 2, 13, 4, 2, 5],
            dailyDeaths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            totalCases: [107, 108, 111, 112, 112, 112, 114, 115, ...],
            totalDeaths: [1, 1, 1, 1, 1, 1, 1, 1, ...],
          },
        },
        S12000049: {
          weeklyCases: 1770,
          weeklyDeaths: 28,
          name: "Glasgow City",
          dailyCases: { date: TOTALS_DATE, value: 282 },
          // ... similar structure for each health board
        },
        S92000003: {
          name: "Scotland",
          weeklyCases: 13311,
          weeklyDeaths: 343,
          // National aggregate data
        },
      },
      dates: [
        Date.parse("2021-01-04"),
        Date.parse("2021-01-05"),
        // ... daily date range
      ],
      weekStartDates: [Date.parse("2021-01-04"), ...],
      startDate: Date.parse("2021-01-04"),
      endDate: Date.parse("2021-01-19"),
    };
    Mock data mirroring the real PHS OpenData format, used for comprehensive testing of regional statistics.

    Accessibility-First Design

    WCAG 2.0 AA compliance was a team priority. As a newcomer, this project was where I first learned to build with accessibility in mind.

    Visually-Hidden Headings

    Added visually-hidden headings throughout the application for screen reader navigation, ensuring blind users could navigate the dashboard structure.

    Dark Mode First

    Implemented dark mode theming throughout the application to support users with light sensitivity, particularly those experiencing migraine or visual strain.

    ARIA Attributes

    Implemented aria-hidden attributes for decorative elements and fieldset legends for form accessibility.

    Responsive Layouts

    Created responsive layout styles ensuring critical summary statistics were visible first on all devices, from mobile to desktop.

    UX/UI Contributions

    From June 2020 to March 2021, I contributed to components and styling alongside experienced volunteers. Every task was a learning opportunity, shaped by the unique challenges of communicating public health data during a crisis.

    DataDefinitions Accordion

    What I Built

    Designed an accordion component explaining complex data terminology, including the critical distinction between specimen date and reported date.

    Why It Mattered

    Media headlines were causing confusion about daily case counts. By explaining data methodology in plain language, we empowered citizens to interpret statistics correctly and reduce misinformation.

    DataDefinitions Accordion showing data terminology explanations
    Understanding the data: specimen date vs reported date explanations

    Navigation, Footer & Page Structure

    What I Built

    Created the footer component with sitemap navigation and social media links. Also contributed to page layouts including the Overview Dashboard, Regional Insights, and About Us pages.

    Why It Mattered

    Clear navigation ensured citizens could quickly find their local health board stats. Consistent page structure reduced cognitive load for anxious users.

    Overview Dashboard – main structure, heatmap selector, geo map layout
    Overview Dashboard showing national COVID-19 statistics
    Overview Dashboard displaying national COVID-19 statistics
    Regional Insights – regional stats layout, RouteMapRules banner
    Regional Insights page showing health board statistics
    Regional Insights page displaying local health board COVID-19 statistics
    About Us & Data Sources – team sections, data sources styling

    Regional Page Components

    Overview Page Components

    App.jsx
    Root Component

    BrowserRouter
    React Router v6

    DashboardNavbar

    Routes Container

    Overview
    Page Component

    Regional
    Page Component

    SingleValueBar

    GeoHeatMap

    Heatmap

    DataCharts

    RegionGeoMap

    RegionDropdown

    RegionSingleValueBar

    DataCharts

    React component hierarchy showing the dashboard's page and component structure

    Looking Back

    This project will always hold a special place for me. It was my first real-world development experience after bootcamp, and it shaped how I think about code, collaboration, and purpose-driven work.

    More than just a technical learning experience, it was my introduction to the open source community. I learned that contributing to something larger than yourself, alongside people you've never met in person, is one of the most rewarding parts of being a developer. The code review feedback, the pair programming sessions, the shared excitement when something finally worked, all of it taught me that software is fundamentally a team sport.

    Looking back, I'm grateful to the senior volunteers who took time to mentor newcomers like me, and to the Scottish Tech Army for creating a space where beginners could contribute meaningfully during extraordinary times.