Skip to content

feat: Learner Dashboard — real on-chain data #1014

Description

@Anuoluwapo25

Summary

The Dashboard page currently shows a coming-soon placeholder. This issue is to implement a fully working learner dashboard backed by real on-chain and database data.

What to build

A dashboard at /dashboard that shows a logged-in scholar's:

  • LRN balance — call learn_token.balance(address) via the Soroban RPC simulation endpoint (GET /api/lrn/balance/:address already exists)
  • Enrolled courses with progress — depends on issue #X (on-chain enrollment query). Each course should show: title, milestone count, how many milestones approved vs total
  • Pending milestones — list of milestones awaiting submission or review (from GET /api/scholars/:address/milestones)
  • Recent on-chain activity — LRN mints, milestone verifications (from treasury event indexer)
  • Reputation rank — derived from LRN balance using the reputationRank util already in src/util/reputationRank.ts

Relevant existing code

File Purpose
src/pages/Dashboard.tsx Replace this placeholder
src/hooks/useLearnToken.ts LRN balance hook
src/hooks/useScholarMilestones.ts Scholar milestones hook
server/src/controllers/scholars.controller.ts Scholar profile + milestones API
src/util/reputationRank.ts Rank calculation from LRN balance

Acceptance criteria

  • LRN balance displayed (real chain query, not hardcoded)
  • Enrolled courses list with per-course milestone progress bar
  • Milestone status table (pending / approved / rejected)
  • Page requires wallet connection; redirects to home if not connected
  • No hardcoded or placeholder data
  • Mobile-responsive layout using Stellar Design System components

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions