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