/
Solution Design - MVP

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

Related content

Discussions - Solution Design
Discussions - Solution Design
More like this
NodeBB for Discussions in Sunbird
NodeBB for Discussions in Sunbird
More like this
Course batch permission design
Course batch permission design
More like this
Course Infra - Async Jobs - Implementation Design
Course Infra - Async Jobs - Implementation Design
More like this
Discussion Forum: Generalisation of Course & Groups integration logic
Discussion Forum: Generalisation of Course & Groups integration logic
More like this
Courses mentors should be able to administer closed (invite-only) batches across Orgs within a tenant.
Courses mentors should be able to administer closed (invite-only) batches across Orgs within a tenant.
More like this