Access & Guard
- Only ADMIN role can access /admin and related API routes; enforced by middleware.ts and server-side checks
- Admin Dashboard: /admin
- KPI cards: Total, Published, Draft, Hold, Rejected, Pending course counts
- Quick links to manage Categories and Subcategories
- Courses panel leading to full moderation list
- Categories Management: /admin/categories
- Create new categories with validation and duplicate checks
- View list of all categories with IDs and counts
- Use case: define top-level taxonomy before instructors submit courses
- Subcategories Management: /admin/subcategories
- Create subcategories mapped to a selected category
- Accordion view grouped by category with per-category subcategory counts
- Courses Moderation: /admin/courses
- Tabular list with: Title, Instructor (name/email), Category/Subcategory, Status badge, Created timestamp