A UKRDC Stats dashboard

A UKRDC Stats dashboard

It’s fairly easy to embed a link to a dashboard on our website, as is done in the following ticket:

https://renalregistry.atlassian.net/browse/OPS-8

 

Then it would be a case of finding the easiest way of serving up a link. Our AI overlords have

 

Tool

Embedding Support

Okta/SSO Support

Multi-User Handling

Production Readiness

UI Flexibility

Notes

Tool

Embedding Support

Okta/SSO Support

Multi-User Handling

Production Readiness

UI Flexibility

Notes

JupyterHub

Not designed for embedding (separate hub URL)

Yes (via OAuthenticator, Okta supported)

Per-user isolated kernels

Mature, scales via k8s/Docker

Limited (notebooks + widgets)

Heavyweight; best for multi-user notebook environments

Dash (Python)

<iframe> or Django/Flask integration

No native; add reverse proxy or dash-okta-auth

Shared app instance, session callbacks

Scales with Gunicorn/k8s; Enterprise adds features

High (React/HTML under hood)

Great for custom dashboards; enterprise features gated behind Dash Enterprise

Streamlit (Python)

Easy iframe embedding (?embed=true)

No native; SSO via proxy (e.g. Okta/NGINX/Auth0)

Each user has session state

Lightweight, moderate scaling

Low–Medium (simple layouts, limited theming)

Very fast to build but less enterprise-grade

Panel (Python)

Embed via server_document() script

Yes (built-in OAuth2, supports Okta)

Multiple processes (num_procs), sessions per user

Production-ready (Bokeh server backend)

High (templates, layouts, multiple viz libs)

Flexible; strongest self-hosted Okta story besides JupyterHub

Bokeh Server (Python)

Embed via script (server_document)

No native; must wrap with proxy/auth layer

Each browser session = new Bokeh doc

Stable, can scale with multiple servers

High (low-level HTML/JS control)

More boilerplate; great for custom interactive plots

Voilà (Python)

Embed via iframe

No native; usually via JupyterHub/OAuthenticator

Per-user notebook execution

Simple to run; scales under Hub

Medium (widgets, custom nbconvert templates)

Easiest if dashboards already exist as notebooks

R Shiny (R)

Easy iframe embedding or Shiny Server Pro integration

Shiny Server Pro supports SAML/OIDC (Okta included)

Each user session runs separately

Mature; scales with Shiny Server Pro or Kubernetes

Medium–High (UI via R + HTML templates)

Best for R-centric teams; Pro adds enterprise auth and scaling

Superset (Python/SQL)

Embeddable dashboards via iframes/JWT auth

Yes (OAuth2/OIDC including Okta)

Multi-user by design (role-based access)

Production-grade BI platform

Medium (prebuilt BI UI, not fully custom)

Good for SQL-driven analytics dashboards, less flexible than custom code

Metabase (Java)

Embeddable dashboards (signed JWT for secure embed)

Yes (SAML/OIDC incl. Okta)

Multi-user, role-based access

Enterprise-ready

Low–Medium (limited customization)

Great for quick self-serve BI; more “BI tool” than app framework

Grafana (Go)

Embeddable panels/iframes, signed URLs

Yes (SAML/OIDC incl. Okta)

Multi-user with fine-grained roles