This issue lists the lifecycles that the application should ideally implement:
Student course participation lifecycle,
Course lifecycle,
Lesson lifecycle.
Note
I created the diagrams below with Mermaid .
The main advantages of a Mermaid diagram:
Student Course Progress Lifecycle
The state diagram below shows the student lifecycle from enrollment to the end of the course.
stateDiagram-v2
[*] --> BrowsingCourses
BrowsingCourses --> ViewingCourseDetails: View course overview
ViewingCourseDetails --> EnrollmentPending: Click "Enroll" to sign up
EnrollmentPending --> Enrolled: Enrollment successful
EnrollmentPending --> EnrollmentFailed: Prerequisites missing
EnrollmentFailed --> ViewingCourseDetails: Try again / choose another course
Enrolled --> NotStarted: Course access granted
NotStarted --> InProgress: Start first lesson
InProgress --> InProgress: Complete lesson
InProgress --> Completed: All required lessons completed
InProgress --> Dropped: Drop/withdraw from course
NotStarted --> Dropped: Drop/withdraw before starting
Completed --> [*]
Dropped --> [*]
Loading
Course Lifecycle
stateDiagram-v2
[*] --> CourseDraft
CourseDraft --> CoursePublished: Publish course
CourseDraft --> CourseArchived: Archive course
CoursePublished --> CourseDraft: Unpublish for editing (optional)
CoursePublished --> CourseUpdated: Update course
CoursePublished --> CourseArchived: Archive course
CourseUpdated --> CoursePublished: Re‑publish course
CourseUpdated --> CourseArchived: Archive course
CourseArchived --> CourseDraft: Restore / re‑open (optional)
CourseArchived --> CourseDeleted: Delete course
CourseDeleted --> [*]
Loading
Lesson Lifecycle
stateDiagram-v2
[*] --> LessonDraft
LessonDraft --> LessonPublished: Publish lesson
LessonDraft --> LessonArchived: Archive lesson
LessonPublished --> LessonDraft: Unpublish for editing (optional)
LessonPublished --> LessonUpdated: Update lesson
LessonPublished --> LessonArchived: Archive lesson
LessonUpdated --> LessonPublished: Re‑publish lesson
LessonUpdated --> LessonArchived: Archive lesson
LessonArchived --> LessonDraft: Restore / re‑open (optional)
LessonArchived --> LessonDeleted: Delete lesson
LessonDeleted --> [*]
Loading
CONTRIBUTING.mdThis issue lists the lifecycles that the application should ideally implement:
Note
I created the diagrams below with Mermaid.
The main advantages of a Mermaid diagram:
Student Course Progress Lifecycle
The state diagram below shows the student lifecycle from enrollment to the end of the course.
stateDiagram-v2 [*] --> BrowsingCourses BrowsingCourses --> ViewingCourseDetails: View course overview ViewingCourseDetails --> EnrollmentPending: Click "Enroll" to sign up EnrollmentPending --> Enrolled: Enrollment successful EnrollmentPending --> EnrollmentFailed: Prerequisites missing EnrollmentFailed --> ViewingCourseDetails: Try again / choose another course Enrolled --> NotStarted: Course access granted NotStarted --> InProgress: Start first lesson InProgress --> InProgress: Complete lesson InProgress --> Completed: All required lessons completed InProgress --> Dropped: Drop/withdraw from course NotStarted --> Dropped: Drop/withdraw before starting Completed --> [*] Dropped --> [*]Course Lifecycle
stateDiagram-v2 [*] --> CourseDraft CourseDraft --> CoursePublished: Publish course CourseDraft --> CourseArchived: Archive course CoursePublished --> CourseDraft: Unpublish for editing (optional) CoursePublished --> CourseUpdated: Update course CoursePublished --> CourseArchived: Archive course CourseUpdated --> CoursePublished: Re‑publish course CourseUpdated --> CourseArchived: Archive course CourseArchived --> CourseDraft: Restore / re‑open (optional) CourseArchived --> CourseDeleted: Delete course CourseDeleted --> [*]Lesson Lifecycle
stateDiagram-v2 [*] --> LessonDraft LessonDraft --> LessonPublished: Publish lesson LessonDraft --> LessonArchived: Archive lesson LessonPublished --> LessonDraft: Unpublish for editing (optional) LessonPublished --> LessonUpdated: Update lesson LessonPublished --> LessonArchived: Archive lesson LessonUpdated --> LessonPublished: Re‑publish lesson LessonUpdated --> LessonArchived: Archive lesson LessonArchived --> LessonDraft: Restore / re‑open (optional) LessonArchived --> LessonDeleted: Delete lesson LessonDeleted --> [*]