METRICS-DASH
metrics-dash is an educational BI dashboard for e-commerce, connected to Stripe and Shopify: revenue by country, month-over-month and year-over-year growth, RFM customer segmentation with lifetime value and churn, cohort retention heatmaps and linear-regression revenue forecasts with a confidence interval. Every analysis technique is implemented by hand in Python, without any data-science library, and each table exports to CSV for Power BI or Excel. Sign-in with Google, per-user data connections, a simulated demo mode and an installable PWA.
PROJECT DETAILS
Objective
The goal was to learn, by building them, the analysis techniques found in tools like Power BI or Tableau: instead of dropping charts on top of a black-box library, each metric — growth, RFM, cohorts, forecasting — is implemented by hand so the logic stays readable, then applied to real Stripe and Shopify sales data.
Technologies used
The back end is a FastAPI application in Python whose analysis functions all take the same normalized record format, whether it comes from real Stripe charges, Shopify orders or the built-in demo data generator. The front end is a single HTML page with Chart.js and no framework or build step, installable as a PWA with a network-first service worker. Sign-in relies on Google OAuth, while Stripe Connect and Shopify OAuth link each user's own data sources, with signed stateless session tokens and users and connections stored in Cloudflare D1. The whole app runs in a Docker container on Cloudflare Containers behind a small TypeScript Worker, deployed with Wrangler.
Challenges and solutions
The main challenge was separating identity from data access: Google sign-in only says who is using the dashboard, while Stripe and Shopify connections each grant access to a data source that can be added or removed independently, with one failing source never blocking the other. Mixing several sales channels also meant never merging or converting currencies, so each currency gets its own complete set of metrics. Finally, testing the temporal and geographic analyses without a rich Stripe account led to a simulated 8-month demo mode with realistic customer profiles.
GALLERY





