Model data
Alur admin
UI admin
| Layar | Route (kira-kira) | File |
|---|---|---|
| Daftar kursus | /admin/.../kelas | views/admin/ManageKelas.tsx |
| Edit kursus | /admin/.../kelas/:id | views/admin/EditKelas.tsx |
| Modal chapter | — | components/ChapterModal.tsx |
| Modal lesson | — | components/LessonModal.tsx |
views/admin/hooks/useManageKelas.ts
API admin (contoh)
| Method | Endpoint | Aksi |
|---|---|---|
GET | /api/kelas/courses | List (+ progress jika peserta) |
POST | /api/kelas/courses | Buat course |
POST | /api/kelas/chapters | Buat chapter |
POST | /api/kelas/lessons | Buat lesson |
PATCH | /api/kelas/lessons/:id | Update lesson |
DELETE | /api/kelas/courses/:id | Hapus course |
Kaitkan kursus ke tier batch
Saat admin mengatur tier di batch:- Buka tier management → pilih tier (Platinum, Master, …)
- Set
courseIds— array UUID course yang dibuka untuk tier itu - Atau kosongkan → peserta tier tersebut dapat semua kursus aktif
apps/api/src/enrollment/resolve-course-access.ts
Alur peserta belajar
Progress lesson
Status:belum-mulai → sedang-diproses → selesaiField
videoProgress 0–100; selesai = 100%.
Endpoint: PATCH /api/kelas/:courseId/lesson/:lessonId/progress
Cek akses di kode
Peserta tanpa enrollment paid ke course yang diminta mendapat403 COURSE_FORBIDDEN:
getCourseDetailupdateLessonProgressgetPlaybackToken
pesertaId → bypass cek (preview).
Kode: apps/api/src/kelas/kelas.service.ts