Files

2.2 KiB

Dashboard Controller Documentation

File: controllers/admin/dashboard.controller.js
Base URL: /api/admin/dashboard
Guards: authenticate → requireAdmin() → adminLimiter


Table of Contents


Users Dashboard

GET /api/admin/dashboard/users

Returns summary stats and breakdowns for all users. All counts run in parallel.

Response 200

{
  "status": "success",
  "message": "Users dashboard data fetched.",
  "data": {
    "stats": [
      { "key": "total",    "label": "Total Users",    "value": 100 },
      { "key": "active",   "label": "Active Users",   "value": 85  },
      { "key": "inactive", "label": "Inactive Users", "value": 10  },
      { "key": "verified", "label": "Verified",       "value": 80  },
      { "key": "archived", "label": "Archived",       "value": 5   }
    ],
    "breakdowns": [
      {
        "key": "acc_type",
        "label": "By Account Type",
        "data": [
          { "label": "user",  "value": 90 },
          { "label": "staff", "value": 8  },
          { "label": "admin", "value": 2  }
        ]
      },
      {
        "key": "reg_type",
        "label": "By Registration Type",
        "data": [
          { "label": "system", "value": 75 },
          { "label": "google", "value": 25 }
        ]
      }
    ]
  }
}

Groups Dashboard

GET /api/admin/dashboard/groups

Returns summary stats and a top-10 groups-by-member-count breakdown.

Response 200

{
  "status": "success",
  "message": "Groups dashboard data fetched.",
  "data": {
    "stats": [
      { "key": "total",    "label": "Total Groups",    "value": 20 },
      { "key": "active",   "label": "Active Groups",   "value": 18 },
      { "key": "inactive", "label": "Inactive Groups", "value": 0  },
      { "key": "archived", "label": "Archived",        "value": 2  },
      { "key": "empty",    "label": "Empty Groups",    "value": 3  }
    ],
    "breakdowns": [
      {
        "key": "top_groups",
        "label": "Top Groups by Members",
        "data": [
          { "label": "Engineering",  "value": 42 },
          { "label": "Marketing",    "value": 30 }
        ]
      }
    ]
  }
}