Skip to main content
Kursus (course) adalah kontainer pembelajaran: chapterlesson. Peserta hanya melihat kursus yang termasuk akses tier mereka.

Model data

Alur admin

UI admin

LayarRoute (kira-kira)File
Daftar kursus/admin/.../kelasviews/admin/ManageKelas.tsx
Edit kursus/admin/.../kelas/:idviews/admin/EditKelas.tsx
Modal chaptercomponents/ChapterModal.tsx
Modal lessoncomponents/LessonModal.tsx
Hook data: views/admin/hooks/useManageKelas.ts

API admin (contoh)

MethodEndpointAksi
GET/api/kelas/coursesList (+ progress jika peserta)
POST/api/kelas/coursesBuat course
POST/api/kelas/chaptersBuat chapter
POST/api/kelas/lessonsBuat lesson
PATCH/api/kelas/lessons/:idUpdate lesson
DELETE/api/kelas/courses/:idHapus course
Role: admin untuk write; peserta read dengan cek akses.

Kaitkan kursus ke tier batch

Saat admin mengatur tier di batch:
  1. Buka tier management → pilih tier (Platinum, Master, …)
  2. Set courseIds — array UUID course yang dibuka untuk tier itu
  3. Atau kosongkan → peserta tier tersebut dapat semua kursus aktif
Resolusi akses: apps/api/src/enrollment/resolve-course-access.ts
tier.courseIds ada isinya  → hanya course itu
tier.courseIds kosong      → semua course status active
enrollment harus paymentStatus = paid

Alur peserta belajar

Progress lesson

Status: belum-mulaisedang-diprosesselesai
Field 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 mendapat 403 COURSE_FORBIDDEN:
  • getCourseDetail
  • updateLessonProgress
  • getPlaybackToken
Admin memanggil API tanpa pesertaId → bypass cek (preview). Kode: apps/api/src/kelas/kelas.service.ts

Lanjut

Setelah lesson pakai Mux → Alur video