Rider Management
Routes:
/admin/riders— Rider list/admin/riders/create— Add new rider/rider— Rider's own dashboard (separate role)/rider/active— Active deliveries/rider/history— Delivery history
Files:
ayts-admin/app/admin/riders/page.tsxayts-admin/app/admin/riders/create/page.tsxayts-admin/app/rider/page.tsxayts-admin/app/rider/active/page.tsxayts-admin/app/rider/history/page.tsx
Auth required: Admin (for admin routes), Rider role (for rider routes)
Admin: Rider List (/admin/riders)
Columns
| Column | Source |
|---|---|
| Name | users.first_name + last_name |
| Contact | users.phone |
| Status | riders.status (available / on_delivery / offline) |
| Active Orders | Count of current assigned orders |
| Total Deliveries | riders.total_deliveries |
| Actions | View / Assign / Deactivate |
Data Fetching
// Get all riders
GET /api/riders?status={status}&limit=20
// Get single rider
GET /api/riders/{id}
// Create rider
POST /api/riders
{ userId, vehicleType, plateNumber, licenseNumber }
// Assign rider to order
PATCH /api/orders/{orderId}/assign-rider
{ riderId: string }
// Update rider status
PATCH /api/riders/{id}/status
{ status: 'available' | 'on_delivery' | 'offline' }
Create Rider (/admin/riders/create)
Form fields:
- Select existing user (must already be registered)
- Vehicle type (motorcycle / bicycle / car)
- Plate number
- License number
- Service area (barangay/city)
The user's role is updated to rider on creation.
Rider Dashboard (/rider)
The rider's own view (not admin):
- Shows currently assigned orders
- Accept/reject delivery request
- Update delivery status
- Delivery history
Rider Flow
Admin assigns order → Rider gets notification
Rider accepts → status: "out_for_delivery"
Rider confirms delivery → status: "delivered"
Known Issues / Status
| Item | Status |
|---|---|
| Rider list | ✅ Working |
| Create rider | ✅ Working |
| Rider assignment to order | ⚠️ API exists, UI needs verification |
| Rider dashboard | ✅ Route exists |
| Active deliveries view | ✅ Route exists |
| Push notifications to rider | ⚠️ Wired in API, needs E2E test |
| Rider location tracking | ❌ Not implemented |