Overview
When users apply to become educators, their applications enter a review queue. Administrators can evaluate each application based on professional credentials, expertise, and background information before granting educator privileges.Approving an application automatically grants the user the “educator” role in Clerk, enabling them to create and publish courses
Application States
Applications progress through three possible states:Filter System
Administrators can filter applications by status:- All
- Pending
- Approved
- Rejected
Displays all applications regardless of status
Dynamic Filtering
Filters are applied server-side:Application Information
Each application displays comprehensive applicant information:Summary View
Professional Title
The applicant’s professional designation (e.g., “Senior Software Engineer”)
Expertise Areas
Comma-separated list of subject areas the applicant can teach
Status Badge
Color-coded indicator showing application state
Submission Date
When the application was submitted (formatted as “15 Jan 2024”)
Expanded Details
Click the expand button to view full application details:Bio
Bio
A detailed professional biography describing the applicant’s background, teaching experience, and qualifications.
LinkedIn / Portfolio URL
LinkedIn / Portfolio URL
Optional link to the applicant’s LinkedIn profile or personal portfolio website for verification.
User ID
User ID
Clerk user identifier for account lookup and verification.
Rejection Reason
Rejection Reason
For rejected applications, displays the reason provided by the reviewing administrator.
Application Actions
Approve Application
Backend Process:
Reject Application
Rejection Modal:
Optionally provide a reason. The applicant will see this when they check their status.
Providing a detailed rejection reason helps applicants understand what improvements are needed if they choose to reapply
API Endpoints
GET /api/admin/educator-applications
Fetches applications with optional status filtering: Request:PATCH /api/admin/educator-applications/:id/approve
Approves an application and grants educator role: Request:PATCH /api/admin/educator-applications/:id/reject
Rejects an application with optional reason: Request:Application Lifecycle
New Application
Reapplication Process
Users with rejected applications can reapply:
Backend Logic:
Data Model
The EducatorApplication schema:| Field | Type | Required | Description |
|---|---|---|---|
userId | String | Yes | Unique Clerk user identifier |
professionalTitle | String | Yes | Applicant’s professional designation |
bio | String | Yes | Detailed professional background |
expertise | Array | Yes | List of subject areas (min 1) |
linkedinUrl | String | No | LinkedIn or portfolio URL |
status | String | Yes | One of: pending, approved, rejected |
rejectionReason | String | No | Admin-provided rejection explanation |
createdAt | Date | Auto | Application submission timestamp |
Best Practices
Review Timeline
Review Timeline
Aim to review pending applications within 24-48 hours to maintain a positive user experience and encourage quality educators to join the platform.
Rejection Reasons
Rejection Reasons
Always provide constructive feedback when rejecting applications. This helps applicants improve their submissions and encourages reapplication.
Verification
Verification
Review LinkedIn profiles or portfolio URLs when provided to verify credentials and professional background.
Expertise Evaluation
Expertise Evaluation
Ensure the applicant’s expertise areas align with platform content needs and existing course gaps.
Status Indicators
Each status has distinct visual styling:Pending
Amber badge indicating awaiting review
Approved
Teal badge indicating acceptance
Rejected
Red badge indicating declined status
Responsive Design
The application list adapts to different screen sizes:- Mobile: Stacked layout with essential information visible
- Tablet: Expanded cards with action buttons
- Desktop: Full details with inline actions and expanded views
Loading States
While processing actions:- Approve button shows ”…” and is disabled
- Reject modal shows “Rejecting…” during submission
- All other buttons are disabled to prevent concurrent actions