Backend — GET /api/v1/dashboard (single authenticated request):

Aggregates repos, open PRs, review queue, open issues server-side
Per-repo PR and issue counts computed in one pass
Review queue pulls PRs where the user is an assigned reviewer (from pr_reviewers table), excluding their own PRs
Frontend — complete redesign of DashboardPage.tsx:

Section	What it shows
Stats bar	Repo count · My PRs · Reviews awaiting · Open issues — each a clickable nav pill
⌘K Command palette	Fuzzy search across repos, PRs, issues with keyboard nav (↑↓ / Enter / Esc), quick-nav shortcuts when empty
Needs attention	Only appears when review queue is non-empty; badges each PR as "Review requested"
My pull requests	Open PRs I authored, with source→target branch, repo context, relative timestamp
My open issues	Issues I filed, linked to the repo issue list
Workspaces	My repos, prioritising recently visited (from useRecentRepos), with PR/issue count badges
CI/CD	Honest placeholder until pipeline integration lands
Quick actions	New repo · Import · Explore · Settings — always one click away
Empty state	Shows only when user has zero repos
This commit is contained in:
2026-05-07 16:36:45 +02:00
parent b624337b4a
commit 7436679eac
4 changed files with 857 additions and 109 deletions
+2
View File
@@ -51,6 +51,7 @@ func New(cfg *config.Config, engine *xorm.Engine, store sessions.Store, staticFi
prSettingsH := handlers.NewPRSettingsHandler(engine)
lfsH := handlers.NewLFSHandler(engine)
exploreH := handlers.NewExploreHandler(engine)
dashH := handlers.NewDashboardHandler(engine)
// ── Git smart-HTTP transport ───────────────────────────────────────────────
// These routes MUST be registered before the SPA catch-all and outside CSRF.
@@ -105,6 +106,7 @@ func New(cfg *config.Config, engine *xorm.Engine, store sessions.Store, staticFi
r.Use(auth.Require)
r.Get("/me", userH.Me)
r.Get("/dashboard", dashH.Get)
// SSH key management
r.Get("/user/keys", sshKeyH.List)