Multi-linked Plotly Dash dashboard for exploring a global dance-styles dataset: parallel coordinates, Sankey flow, geo bubbles, and time-period small multiples. Built as a small, installable Python package with health checks and environment-based configuration.
Live demo: ishelar-dance-analytics.hf.space · Space: huggingface.co/spaces/ishelar/dance-analytics
Researchers and enthusiasts comparing traditions need linked views (filter in one chart, see the effect elsewhere) without juggling separate tools. This app wires PCP brushing and Sankey clicks into consistent cohorts and map context.
assets/custom.css)GET /health — livenessGET /ready — dataset and centroids files on disk.env)From this directory (dance-analytics-dashboard/):
python3.11 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -U pip
pip install -e ".[dev]"
cp .env.example .env # optional; defaults match repo layout
pytest
dance-dashboard # or: python -m dance_analytics.main
Open http://127.0.0.1:8051 (or the PORT you set).
curl -s http://127.0.0.1:8051/health
curl -s http://127.0.0.1:8051/ready
| Variable | Purpose |
|---|---|
DANCE_ANALYTICS_DATA_PATH |
CSV path (absolute or relative to app root) |
DANCE_ANALYTICS_CENTROIDS_PATH |
JSON map of country → [lat, lon] |
HOST / PORT / DEBUG |
Dev server binding |
LOG_LEVEL |
Python logging level (INFO, DEBUG, …) |
DANCE_ANALYTICS_PAGE_TITLE |
Browser tab title |
See .env.example.
After pip install -e . from this directory:
gunicorn "dance_analytics.main:server" -b 0.0.0.0:8051 --workers 2
docker build -t dance-analytics .
docker run -p 7860:7860 dance-analytics
# open http://127.0.0.1:7860
The same Dockerfile is what powers the live Hugging Face Space — non-root uid 1000, port 7860, gunicorn (2 workers), HEALTHCHECK on /health.
dance-analytics-dashboard/
Dockerfile # Hugging Face / generic container build
.dockerignore
pyproject.toml
README.md
.env.example
data/
original_dance_dataset.csv
country_centroids.json
assets/
custom.css
src/dance_analytics/
main.py # app factory + /health + /ready
config.py
data/ # load + schema + transforms
charts/ # figure builders
dashboard/ # layout + callbacks + shared layout constants
tests/
dance-dashboard)./ready before deployMIT — see LICENSE.
Resume one-liner: Python/Dash analytics dashboard with linked cross-filtering, geospatial aggregation, health/readiness endpoints, and env-driven configuration suitable for portfolio demos.