Skip to main content

Dashboards for FastMVC: embed signing, revocation, theme params, Metabase/Grafana/Looker/PowerBI stubs, routers.

Project description

fast_dashboards

HTML dashboards for FastMVC: FastAPI routers and shared layout/CSS for operational UIs—health, API activity, queues, tenants, secrets, workflows—and a reusable render_dashboard_page layout helper. Also signed embed URLs (time-limited HMAC) and Metabase / Grafana embed helpers behind one protocol.

Python: 3.10+ · Dependencies: fastapi, httpx, loguru, pydantic>=2, sqlalchemy>=2 · Optional: PyJWT for Metabase (pip install 'fast_dashboards[metabase]').

What you get

  • sign_embed_url, verify_signed_embed_url — append exp + sig (HMAC-SHA256) for iframe-safe dashboard URLs; optional signed tid (revocation id), theme, locale query params.
  • EmbedRevocationChecker, InMemoryEmbedRevocationList — block leaked embeds by revoking tid before expiry.
  • EmbedThemeParams, theme_to_extra_params — bundle dark/light + locale for sign_embed_url / Grafana.
  • DashboardEmbedProvider, MetabaseEmbedProvider, GrafanaEmbedProvider — unified build_embed_url(resource_id=..., ttl_seconds=...); Grafana supports theme / locale / token_id; Metabase supports theme (URL fragment) and locale (JWT params).
  • LookerEmbedProvider, PowerBIEmbedProvider — stubs; use Looker Signed Embed / Power BI GenerateToken (see below).
  • Composite DashboardRouter — nested routers (health, API, queues, tenants, secrets, workflows); lazy-imported from the package root so fast_dashboards.layout works without the full host app on PYTHONPATH.
  • layout.render_dashboard_page, BASE_CSS — shared HTML shell for dashboards with production SEO (Open Graph, Twitter Card, canonical URL when FASTMVC_PUBLIC_BASE_URL is set, JSON-LD WebPage + SoftwareApplication, theme-color, safe noindex, nofollow defaults for internal ops UIs).
  • core.seoPageSEO, render_seo_head, render_dashboard_inline_head, and robots_txt_* helpers for public sites vs private dashboards.
  • Per-area routers — e.g. HealthDashboardRouter, ApiDashboardRouter, … (see src/fast_dashboards/).

Note: Many sub-routers expect host app modules (core.datastores, start_utils, configurations, …). Run inside a full FastMVC app or only import submodules you need (e.g. layout, embed_signing, providers).

Core vs dashboards: Generic “platform” building blocks that used to live under fast_dashboards.core (auth, tracing, encryption, smart cache, saga, etc.) are implemented in fast-platform under fast_platform.core (and fast_platform.caching). fast_dashboards.core still re-exports them for compatibility; prefer from fast_platform.core… in new code. Dashboard-only pieces remain here (layout, router, embed signing/theme/SEO, …).

Looker (recipe)

Looker Signed embed uses a server-generated SSO URL per session. Implement a small service that calls Looker’s API with your embed secret, then pass the returned URL to the iframe. Do not expect a static build_embed_url from this package — LookerEmbedProvider is a deliberate stub.

Power BI (recipe)

Use the Power BI REST API GenerateToken for reports/dashboards (Azure AD app registration). Return the embed URL + token to the client per Microsoft’s embed flow. PowerBIEmbedProvider is a stub pointing you to that flow.

Revocation example

from fast_dashboards import InMemoryEmbedRevocationList, sign_embed_url, verify_signed_embed_url

secret = b"your-32-byte-secret-here!!!!"
block = InMemoryEmbedRevocationList()
url = sign_embed_url("https://dash.example.com/view", secret, 3600, token_id="session-abc")
# Later: leak detected
block.revoke("session-abc")
assert verify_signed_embed_url(url, secret, revocation=block) is None

Install

pip install -e ./fast_dashboards

Optional dev extras

pip install -e ".[dev]"

Related packages

  • fast_db — when dashboards query SQLAlchemy.
  • Monorepo: ../README.md.

Tooling

See CONTRIBUTING.md, Makefile, and PUBLISHING.md.


Documentation

Document Purpose
CONTRIBUTING.md Dev setup, tests, monorepo sync
PUBLISHING.md PyPI and releases
SECURITY.md Reporting vulnerabilities
CHANGELOG.md Version history

Monorepo: ../README.md · Coverage: ../docs/COVERAGE.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fast_dashboards-1.6.0.tar.gz (84.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fast_dashboards-1.6.0-py3-none-any.whl (76.6 kB view details)

Uploaded Python 3

File details

Details for the file fast_dashboards-1.6.0.tar.gz.

File metadata

  • Download URL: fast_dashboards-1.6.0.tar.gz
  • Upload date:
  • Size: 84.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for fast_dashboards-1.6.0.tar.gz
Algorithm Hash digest
SHA256 8c7bf011ad6ff79a5352105134bde6a83099b54b5f7082b7520065e49c9f2898
MD5 84c56be1bba9677056361d047f6896f7
BLAKE2b-256 f1089dae736b42feb2ed9eee07c3c62f2b2756ab97e90d889858c2afb8003de5

See more details on using hashes here.

File details

Details for the file fast_dashboards-1.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fast_dashboards-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 871bf4f0f31dbbf1071e07ee34a3a4fbf31f8a99c66dc9cf3828aa90ffab422e
MD5 5731b3d36fbc8aaf414bbb23d5c63afd
BLAKE2b-256 bbeb1e7da847a9363ccd8cafae45e4b5d65351fe6955e8e76ed175b3ef9fb2de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page