Solution Design - MVP

Scenario:

NISHTA is running a course - it may have up to 1 million users enrolling to the course.

Assumption: We will have a course that is being taken up by 500 - 1000 users…

Category - Course mapping: one category per batch

Category creation:

  • Categories:

    Name of the category: <tenant_id>-<course_id>-<batch_id> - will this kind of name be OK?

    • Option 1: use names instead of identifiers

      • should we use <tenant_name>-<course_name>-<batch_name>

      • NCERT - Early Childhood Education - Batch 01

    • Option 2: hierarchical category structure

      • Tenant Name > Course Name > Batch Name

  • This will be a root category

  • Visible only for users enrolled to the batch

  • the association between batch and category will be stored on the course object in Sunbird

    • Batch:b1 - Category:11

    • Textbook:t1 - Category:22

  • Whitelisted Tags:

Moderators for the category:

  • Batch mentors will get the moderators access for the category

  • if 10000 (1% of 1 million) users are posting questions in the forum, how will tenant manage the moderation?

User Mapping:

  • Sunbird User Profile: identifier (uuid), username (alphanumeric), email or phone, first name and last name

  • NodeBB: identifier, username and email (username@domain)

  • Create user in NodeBB when created in Sunbird (scale, not for MVP)

    • listen to create user event and create user in NodeBB

Category access to course batch members:

  • One time batch job for existing

  • Streaming:

    • listen to the user enrolment event

  • user is already created in NodeBB

    • use the username or identifier (whatever nodeBB API supports) to add privilege

  • if user is not yet created in NodeBB (for MVP)

    • create user

    • and add privilege to the user

Use Tags for moderation & answers:

  • tag-a and tab-b

    • instead of directly tagging the topic/post, we can infer the tags from user profile

  • topic is flagged

    • highlight to user based on tags & weightage

  • when a new question is posted

    • show it to the users based on tags & weightage

Tags:

  • Tenant who is running the batch or created the textbook

  • Location of the user who created the topic/post

    • state & district

  • board, medium

  • grade, subject

  • persona - e.g. teacher & school info

Accountability:

  • use telemetry to determine KRA

    • metrics - percentage of posts replied within a day/hour/week, etc and percentage of flags addressed within a day/hour/week, etc

  • ensuring replies within an SLA

  • ensuring flags are addressed with an SLA

Closing a category:

  •  

Category Types:

  • Closed (E.g. Course batch)

    • Unique group per category

  • Open (E.g. Book content)

    • Universal access based on registered-users group

  • Restricted (E.g. one state allowing users from another states to explicitly join their category and interact)

    • Universal access based on tenant-registered-users group

 

Use cases:

  • Courses and any trackable collections

  • Vidyadaan - Projects & Content Collaboration

  • Announcements - System level and tenant level

  • Groups

  • Textbooks - any content/collection