Skip to content

Implement a fully functional Admin Panel #29

@brianne-showed

Description

@brianne-showed

Goals

  • Replace the placeholder AdminPanelPage with a fully functional admin panel for the freelance platform
  • Provide admins with visibility and control over users, jobs, disputes, and platform health
  • Enforce role-based access so only authenticated admins can reach this page and its API routes
  • Build a modular layout so individual sections (moderation, metrics, controls) can be developed and tested independently

Acceptance Criteria

Access & Auth

  • Page is protected by an admin-only route guard; non-admins are redirected with a 403
  • Admin role is verified server-side on every API call — client-side guard alone is not sufficient

User Management

  • Table of all registered users (freelancers and clients) with search and filter by role, status, and join date
  • Admin can suspend, reinstate, or permanently ban a user account
  • Admin can view a user's profile, active jobs, and dispute history from the table

Job & Listing Moderation

  • Moderation queue listing all jobs flagged by automated rules or user reports
  • Admin can approve, reject, or escalate a flagged listing
  • Rejected listings trigger a notification to the posting user with a reason

Dispute Resolution

  • Dispute queue showing open disputes between freelancers and clients with status (open, under_review, resolved)
  • Admin can view the full dispute thread, attached evidence, and transaction details
  • Admin can rule in favour of either party, trigger a refund, or escalate to a senior admin
  • Ruling action updates dispute status and notifies both parties

Trust & Metrics Dashboard

  • Summary cards showing: total users, active jobs, open disputes, flagged listings, and revenue (current period)
  • Trust score distribution chart across the user base
  • Data refreshes on page load; a manual refresh button is available

Platform Controls

  • Toggle to enable/disable new user registrations
  • Toggle to enable/disable new job postings
  • Each toggle requires a confirmation dialog before applying and logs the action with the admin's ID and timestamp

Audit Log

  • All admin actions (bans, rulings, toggles, rejections) are written to an append-only audit log
  • Audit log is viewable within the panel, filterable by admin, action type, and date range

General

  • All data tables are paginated (server-side) — no full-table client fetches
  • Loading, empty, and error states are handled for every section
  • Panel is accessible (keyboard navigable, ARIA labels on interactive controls)
  • Existing AdminPanelPage stub is fully replaced; no placeholder text remains

/bounty $500

Metadata

Metadata

Assignees

No one assigned

    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