Screenshot of the MTA Ridership project

Public

MTA Ridership

A focused app that explains NYC transit recovery with three key views, sober UX, and a clear narrative. First place in the Plotly Holiday Season App Challenge.

Stack

Python · Dash · Plotly · p5.js

Artifacts

Public demo / repo

Context

After recent shocks, MTA ridership shifted abruptly and patterns vary heavily by line, station, and time period.

The goal was to answer a guiding question with minimal complexity: how does demand recover, and where are the clearest signals?

Decisions

  • Story-first: fewer controls, more narrative (anchors, microcopy, and annotations).
  • Normalization and baselines for clean comparisons over time.
  • Pre-computed aggregates and a simple data structure to keep the app responsive.

Architecture

Architecture diagram for MTA Ridership
Simple flow: data → preparation → Dash/Plotly app → deployment.
  • Dash for UI and callbacks; Plotly gives interactivity by default (hover/zoom/selection).
  • Light p5.js + CSS touches to add identity without bloating complexity.

Outcome

  • First place in the Plotly Community Holiday Season App Challenge (2024).
  • Public demo + reproducible repo (code + assets) to show the “how”, not just screenshots.
  • Reusable patterns for other apps: narrative hierarchy and essential filters.

Links