Skip to content

Lifecycles: Student, Course and Lesson #42

Description

@ebouchut
  • Move the state diagrams to CONTRIBUTING.md

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

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Projects

Status
Product Backlog

Relationships

None yet

Development

No branches or pull requests

Issue actions