| name | theme-education_lms |
| description | Education / LMS application palette: variants, pages, entities, and flows for building a varied learning app. Use when theme_preset is education_lms.
|
Education LMS theme
Domain
Apps where students submit work and instructors grade it. The org hierarchy
(student โ instructor โ admin), ownership of grades/submissions, and deadline
rules are exactly where access and logic exploits live.
Application variants โ pick ONE per lab
Honor any hint in theme_free_text / custom_prompt; otherwise pick one.
- K-12 gradebook โ classes, assignments, grades, report cards, guardians.
- University LMS โ courses, modules, submissions, grading, transcripts.
- Online-course marketplace โ paid courses, lessons, enrollment, certificates.
- Coding-bootcamp portal โ cohorts, projects, auto-graded exercises, reviews.
- Certification / quiz โ question banks, timed attempts, scoring, badges.
Roles โ choose the set that fits the variant
- user (student) โ enroll, view materials, submit work, see own grades.
- instructor โ author content, view roster, grade submissions, post feedback.
- admin (registrar) โ all courses, enrollment, role assignment, transcripts.
Most exploits run as student.
Candidate pages โ select a coherent subset
Size the subset to endpoint_count. Candidates: dashboard, course catalog,
course/class home, module/lesson viewer, assignment detail, submit work, my
grades, grade detail, feedback thread, roster (instructor), grading queue
(instructor), gradebook (instructor), quiz/attempt, certificate, transcript,
profile/settings, notifications, admin courses, admin enrollment.
Candidate entities (seed tables) โ select what the variant needs
- users โ id, email, password_hash, role
- courses โ id, title, term, instructor_id, status
- enrollments โ id, course_id, user_id, role_in_course, status
- assignments โ id, course_id, title, due_at, max_points, allow_late
- submissions โ id, assignment_id, user_id, content, file_path?, submitted_at
- grades โ id, submission_id, score, max, graded_by, feedback, released_at
- modules / lessons โ id, course_id, title, order, body, visible
Quiz / certification (variant):
- quizzes โ id, course_id, time_limit_s, max_attempts, pass_score
- questions โ id, quiz_id, prompt, kind, answer_key
- attempts โ id, quiz_id, user_id, started_at, submitted_at, score
- certificates โ id, user_id, course_id, code, issued_at
Marketplace (variant):
- orders โ id, user_id, course_id, amount_cents, status
Seed several students under โฅ2 courses/instructors so cross-student access is testable.
Candidate user flows โ select the ones matching chosen pages/features
- Browse catalog โ enroll in a course โ open its modules.
- Open an assignment โ submit work (text or file) before the deadline.
- View my grades โ open a graded submission โ read instructor feedback.
- (instructor) Open the grading queue โ grade a submission โ release the grade.
- (instructor) Author an assignment with a due date โ it appears for the roster.
- (quiz) Start a timed attempt โ answer โ submit โ see the score.
- (marketplace) Pay for a course โ unlock lessons โ earn a certificate.
- (admin) Enrol/drop a student โ reassign an instructor.
Candidate endpoints โ a feature may span several
Endpoints are a shared surface, not owned 1:1 by a feature (a single feature
often spans several, and an endpoint can back multiple features). Pick a coherent
subset alongside the pages above. Grouped by area:
- courses โ
GET /api/courses, GET /api/courses/{id}, POST /api/courses/{id}/enroll, GET /api/courses/{id}/roster
- assignments โ
GET /api/assignments/{id}, POST /api/assignments, GET /api/courses/{id}/assignments
- submissions โ
POST /api/assignments/{id}/submissions, GET /api/submissions/{id}, GET /api/submissions/{id}/download?file=
- grades โ
GET /api/grades/{id}, POST /api/submissions/{id}/grade, GET /api/courses/{id}/gradebook
- quizzes (quiz) โ
GET /api/quizzes/{id}, POST /api/quizzes/{id}/attempts, POST /api/attempts/{id}/submit
- certificates / orders (marketplace) โ
GET /api/certificates/{id}, POST /api/courses/{id}/purchase
- admin โ
GET /api/admin/courses, POST /api/admin/enrollments, POST /api/admin/users/{id}/role
Where vulnerabilities fit naturally
- idor โ
GET /api/submissions/{id}, /api/grades/{id} โ read a classmate's submission or grade.
- privilege_escalation โ student gaining instructor role; grading own submission; editing a released grade.
- business_logic โ submit after the deadline (or tamper
submitted_at), exceed quiz max_attempts, change max_points, self-grade, regrade abuse.
- path_traversal โ submission/attachment download
file= parameter.
- xss โ submission content or instructor feedback rendered to others.
- auth_bypass โ reach a grading or admin-enrollment action without a valid session.
Diversity guidance
Pick ONE variant and a coherent subset โ a quiz/certification app and a
gradebook diverge sharply. Size to endpoint_count; let theme_free_text /
custom_prompt bias the variant and naming. Vary subjects, term structure, and
grading scales so two LMS labs feel like different institutions.