Course Management System
Learn about the example software solution that we will keep referring to throughout the course.
We'll cover the following
This section will contain documentation for the backend of an educational website. We’ll use the design here to explain various debugging concepts and for our exercises.
Disclaimer and purpose
The code and the system’s design described are pedagogical tools to explain concepts and processes of debugging. It is bound to have design and code errors and is not an exemplar for learning design or code. The information put out is just enough to do the needful in understanding the concepts relevant to the course. We’ll reference sections of this project at various points in the course and provide code snippets for these sections. Code relevant to or referring to this design is also used similarly. It is meant to be used to learn debugging concepts.
Overview of the project
The project is the backend of an online educational portal similar to Educative.io. It has many microservices, each of which fulfills a specific functionality. The following is a representation of the architecture:
Each of the microservices fulfills a specific functionality. For most sections, we’ll make student management services the heart of the backend. We’ll deal with the other services in some areas, though. The description and functionality of each service are as follows:
Student management service: This is a service that implements all student-driven workflows and provides all contents to pages a student accesses. Whenever students log into their accounts, this backend is servicing them. The following are some of the APIs it implements:
GetStudentPage
: This is the API that a frontend invokes when a student logs into the site. It will talk to other services to pull up student information relevant to the application.CreateStudentProfile
: This is the API that is invoked when a student creates their profile. The student’s profile is created in various services.UpdateStudentProfile
: This is the API that is invoked if any aspect of the student profile is changed/updated. This service is responsible for the information being changed and is invoked to do what is necessary.DeleteStudentProfile
: This is the API that undo whatever theCreateStudentProfile
does.
Payment management service: This service handles all payment-related workflows and information. For example, in Educative.io, we can see the page where payment information for our account/profile is stored. The service here is responsible for this information and handles payment-related workflows or APIs like the following:
ProcessPayment
: This API handles the processing of payments for various services and features offered by the platform. It accepts payment details, such as credit card information, payment amount, and billing address, and securely processes the transaction.GetPaymentHistory
: This retrieves the payment history for a specific user, allowing them to view past transactions, invoices, and subscription details.UpdatePaymentMethod
: This allows users to update their preferred payment method or add additional payment sources for future transactions.
Course management services: This handles all course-related information. For any given course, it stores the relevant information. It supports APIs like the following:
CreateCourse
: This enables administrators and authorized users to create new courses on the platform. This API accepts course details, including title, description, instructor information, and curriculum outline.EnrollStudent
: This enrolls a student in a specific course, granting them access to course materials, assignments, and assessments.UpdateCourseContent
: This allows course instructors and administrators to update course content, including lectures, quizzes, and supplementary resources.
Author management services: This service manages workflows and APIs for students who are authors or are interested in becoming authors. It is responsible for various workflows related to creating and publishing courses and supports APIs like the following:
CreateCourseDraft
: This enables authors to create a draft version of a new course, allowing them to outline course content, objectives, and learning outcomes.SubmitCourseForReview
: This submits a completed course or course module for review and approval by platform administrators. Authors can track the status of their submissions and receive feedback from reviewers.PublishCourse
: Once a course has been approved, this API publishes it to the platform, making it available to students for enrollment and participation.
Account management services: This stores account-related information for students based on student type, corporate or individual, and supports APIs like the following:
CreateAccount
: This allows users to create a new account on the platform, providing basic information such as name, email address, and password.UpdateAccountDetails
: This enables users to update their account details, including contact information, account preferences, and communication settings.ManageSubscription
: For users with premium accounts or subscription plans, this API allows them to manage their subscription status, upgrade/downgrade plans, and update payment information.
We’ll refer to these services and use code examples to explain various debugging concepts.