Every plugin can expose a settings/data page on the user-facing dashboard. Two modes — pick one:
- Manifest mode — declare widgets in JSON, write Python data handlers. Themed for free, no HTML to write.
- Iframe mode — full HTML/CSS/JS control. Use when you need a custom UI (drag-and-drop, charts the manifest doesn't cover, custom forms).
Both modes live in the same file: dashboard_manifest.json, shipped in your version zip (the zip root or any folder works). You can also author it in the Dev Portal's Dashboard Editor, which writes the same JSON for you.