Skip to content

feat(api): add read-only Web Dashboard & Portal Overlay (fixes #21) - #112

Merged
espdesign merged 1 commit into
developfrom
feat/21-web-dashboard-portal
Nov 1, 2026
Merged

espdesign merged 1 commit into
developfrom
feat/21-web-dashboard-portal

Conversation

@espdesign

Copy link
Copy Markdown
Collaborator

Summary

Implements the read-only Web Dashboard & Portal Overlay (fixes #21), providing browser-based exploration of Project Workspaces, interactive Tech Tree DAGs, Kanban boards, and Table Matrix views while enforcing Discord server RBAC and deep-linking directly back into Discord for mutations.

Key Changes

  • Domain Deep-Link Properties (src/domain/models.py):
    • Added discord_jump_url (https://discord.com/channels/...) and discord_app_url (discord://-/channels/...) helpers on Project and Task (linking directly to the Thread Workspace and starter Task Action Card, with graceful fallback to the Project Forum Channel).
  • Discord OAuth2 & Stateless Session Auth (src/adapters/api/session.py, src/adapters/api/auth_routes.py, src/adapters/api/dependencies.py):
    • Added /auth/login, /auth/callback, /auth/logout, and /api/me using Discord OAuth2 (identify scope) and HMAC-SHA256 signed HTTP-only cookies (dgg_pm_session), with live ActorPrincipal hydration via DiscordMemberDirectory and a zero-config local development fallback.
    • Extended AuthService.can_view_project (src/services/auth_service.py) to authorize designated GuildLeadUser and GuildLeadRole principals alongside Server Managers, Project Leads, and Squad members.
  • Read-Only Workspace & Tech Tree API (src/adapters/api/dashboard_routes.py):
    • GET /api/projects: RBAC-filtered project roster with completion, active, and overdue metrics.
    • GET /api/projects/{project_id}/workspace: Enriched tasks, readiness states, prerequisites/dependents, squads, filters, permissions envelope, and Discord deep-links.
    • GET /api/projects/{project_id}/tech-tree: Full DAG payload (nodes, edges, critical_path, bottlenecks, metrics) powered by domain.tech_tree.analyze_tech_tree().
  • Zero-Build Portal UI (src/adapters/api/static/):
    • Interactive Tech Tree DAG (Cytoscape.js + Dagre, pan/zoom/fit, LR/TB orientation toggle, critical path highlight, bottleneck banner, and slide-out Node Inspector).
    • Kanban Board (group by Status, Priority, or Assignee) and Table Matrix views with combined filtering by search text, Squad, Tag, Due Date, and Overdue state.
    • Open links in: Discord App / Web Browser toggle: Persisted in localStorage, dynamically switching all project and task deep-links between discord:// and https://discord.com.

Verification

  • make check (ruff check, ruff format --check, and 536 passed unit/integration/architectural tests including tests/test_web_dashboard_api.py and tests/test_auth_service.py)
  • openspec validate --specs (5 passed, 0 failed)
  • Verified live in Docker container at http://localhost:8000/dashboard

@espdesign
espdesign merged commit 01add79 into develop Nov 1, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Web Dashboard & Portal Overlay

1 participant