Add dashboard module

This commit is contained in:
2026-07-09 17:08:00 +02:00
commit 441f8f11ac
23 changed files with 548 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
Metadata-Version: 2.4
Name: govoplan-dashboard
Version: 0.1.6
Summary: GovOPlaN configurable dashboard module.
Author: GovOPlaN
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: govoplan-core>=0.1.6
Requires-Dist: govoplan-access>=0.1.6
# GovOPlaN Dashboard
Configurable dashboard module for GovOPlaN.
The module owns the `/dashboard` route when installed. Core keeps only a minimal
fallback home for installations where this module is absent.
Modules contribute widgets through the `dashboard.widgets` WebUI capability.
The first implementation stores personal widget visibility in browser storage;
server-side layout persistence can be added later without changing the widget
contract.
@@ -0,0 +1,12 @@
README.md
pyproject.toml
src/govoplan_dashboard/__init__.py
src/govoplan_dashboard/py.typed
src/govoplan_dashboard.egg-info/PKG-INFO
src/govoplan_dashboard.egg-info/SOURCES.txt
src/govoplan_dashboard.egg-info/dependency_links.txt
src/govoplan_dashboard.egg-info/entry_points.txt
src/govoplan_dashboard.egg-info/requires.txt
src/govoplan_dashboard.egg-info/top_level.txt
src/govoplan_dashboard/backend/__init__.py
src/govoplan_dashboard/backend/manifest.py
@@ -0,0 +1 @@
@@ -0,0 +1,2 @@
[govoplan.modules]
dashboard = govoplan_dashboard.backend.manifest:get_manifest
@@ -0,0 +1,2 @@
govoplan-core>=0.1.6
govoplan-access>=0.1.6
@@ -0,0 +1 @@
govoplan_dashboard
+6
View File
@@ -0,0 +1,6 @@
"""GovOPlaN dashboard module."""
__all__ = ["__version__"]
__version__ = "0.1.6"
@@ -0,0 +1,2 @@
"""Backend integration for the GovOPlaN dashboard module."""
@@ -0,0 +1,40 @@
from __future__ import annotations
from govoplan_core.core.modules import DocumentationTopic, FrontendModule, FrontendRoute, ModuleManifest, NavItem
manifest = ModuleManifest(
id="dashboard",
name="Dashboard",
version="0.1.6",
dependencies=("access",),
optional_dependencies=("ops", "campaigns", "files", "mail", "tasks", "notifications", "reporting"),
nav_items=(NavItem(path="/dashboard", label="Dashboard", icon="dashboard", order=10),),
frontend=FrontendModule(
module_id="dashboard",
package_name="@govoplan/dashboard-webui",
routes=(FrontendRoute(path="/dashboard", component="DashboardPage", order=10),),
nav_items=(NavItem(path="/dashboard", label="Dashboard", icon="dashboard", order=10),),
),
documentation=(
DocumentationTopic(
id="dashboard.configurable-home",
title="Configurable user dashboard",
summary="The dashboard module owns the configurable home surface. Feature modules expose widgets through a narrow dashboard.widgets capability.",
body=(
"Core only provides a minimal fallback home when the dashboard module is absent. "
"Dashboard widgets must be contributed through core contracts, not by importing sibling module components directly."
),
layer="configured",
documentation_types=("admin", "user"),
audience=("user", "tenant_admin", "operator"),
related_modules=("core", "ops"),
order=20,
),
),
)
def get_manifest() -> ModuleManifest:
return manifest
+1
View File
@@ -0,0 +1 @@