Skip to content

feat: build mentor vouching dashboard #3

@EmeditWeb

Description

@EmeditWeb

Problem

The /vouch page is a placeholder. Mentors have no way
to see vouch requests, review learner profiles, or
submit vouches from the web app.

Context

Mentor vouching is central to StepFi. A vouch from a
Silver tier mentor adds 12 reputation points to a learner,
which drops their interest rate from 8% to 6%. Mentors
need a clean way to manage this on desktop.

Before Starting

Read these context files:

  • context/architecture-context.md
  • context/code-standards.md

What To Build

  1. Create src/services/vouching.service.ts:

    • getVouchRequests() -> GET /vouching/requests
    • getMyVouches() -> GET /vouching/given
    • submitVouch(learnerAddress) -> POST /vouching
    • revokeVouch(id) -> DELETE /vouching/:id
  2. Build /vouch page with tabs:
    Tab 1 - Pending Requests:
    List of learners who requested a vouch.
    Each row shows wallet, reputation score,
    loan amount, purpose.
    Action buttons: Review Profile, Vouch, Decline

    Tab 2 - My Active Vouches:
    List of learners you are currently vouching for.
    Shows reputation boost given, expiry date,
    learner repayment status.
    Revoke button per vouch.

  3. Build vouch detail modal/page:
    Shows full learner profile before vouching.
    Shows vouch impact preview (score before/after).
    Confirm button triggers wallet signing.

Files To Touch

  • src/pages/Vouch.tsx
  • src/services/vouching.service.ts (new)
  • src/components/vouch/VouchRequestCard.tsx (new)
  • src/components/vouch/VouchImpactPreview.tsx (new)

Acceptance Criteria

  • Pending requests list loads from API
  • Active vouches list loads from API
  • Vouch impact preview shows correct calculation
  • Confirm triggers wallet signing flow
  • Revoke works with confirmation dialog
  • Loading, error, empty states handled

Mandatory Checks Before PR

  • npm run build passes
  • No any types
  • PR references this issue

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions