Forum software = Forum
My Group(s) = Sunbird Groups
Forum groups = Groups in Forum.
Goal
Online learning platforms should allow group discussion or one to one discussion. That will gives students and teachers a platform to interact.
Sunbird’s online learning platform does need one such discussion forum. Design a solution that allow discussion forum like functionality within a group or to individual. Solution to fit in with current design of My Groups in Sunbird platform.
Functional Flow
Check this UI mocks to visualise flow. Its not final UI though. https://whimsical.com/HkMM1JyvpsN3Pv6bBCbFhC
Normal User:
My Groups tab in Sunbird App can have multiple groups which user is part of.
In My Group if Discussion feature is enabled then User will see a option called `Discussion Forum`.
Each My Group will have a corresponding group in Forum (called Forum Group) if Discussion feature is enabled in My Group.
Once clicking on Discussion Forum User will see all Categories which he is part of as a member of that group.
One clicking of any category User we see all the topics under that Category.
Group Admin User:
Should see additional options that allow him to
Add members to the group.
Edit\delete topic.
Take action on flagged topic\post.
Change category level permissions, such has only see Topic?
User Level Functionality
Normal User:
User should be able to post question(Create Topic) and reply to the Topic (Create Post).
User should be able to Flag a topic\post as Inappropriate, spam, off-topic something else.
User should be able to make announcements?
User should be able bookmark a topic\post?
Group Administrator User:
Who should be a Group Admin? Any User OR Teacher OR Head Teacher OR School Principal OR State Eductaion Secretary OR Central Education Secretary?
Group Admin should be able to add members into Group. Which all Students who should be able to see and add? ( I think middleware should be able to get relation between users; Say Teacher of School A can see and add students of same School; Else Teacher should see warning that Student S is not part of your school; or something like that, Lets think further)
Group Admin should be able to control Category\Topic creation permission.
Group Admin should be able to edit/delete Topic. (In case content is not correct; Inappropriate, spam, off-topic)
Group Admin should be to take action on Flaged Topic\Post.
Only Group Admin should create announcement.
Only Group Admin should pin Topic.
Only Group Admin should delete Topic.
Only Group Admin should close Topic.
If System Admin deactivates Group Admin User than Other member of Group should be made Group Admin? But Who? (Let’s think)
System Admin:
Name is enough. It should be able to do anything. ¯\_(ツ)_/¯
Public API Design (Frontend to Middleware)
Usere createion will be done through KeyCloak. That is yet to explored after keycloak integration.
There should not be any user in Forum which is not part of Sunbird platform (Keycloak Identity provider). Exception System Admins.
As of now as discussed, API should allow all user to create Group, category, topic, post. From UI side we will hide non required functionality for different roles.
API should will be Rest API and will return Json output.
Public API List:
To be attached
Accessing Forum APIs
Interaction to Forum will be done via its RestAPIs.
To consume APIs first generate Access Keys in Forum
Access key should be generated for each user so that Invalid access could be avoided at Forum level without aditional effort.
We will also need to have master key because not all the features are allowed at user level, such as create category, activate user etc, so user key will not work for these APIs.
Mapping between Sunbird Entity to Forum Entity
Sunbird Entity | Forum Entity |
User | User |
My Group | Group |
Subject | Category |
Question | Topic |
Reply | Post |
User Roles
For now largly there will be 4 kinds of users Admin, Staff, Teacher, Student.
Admin: should be able to do anything.
Staff: should have privileges to assit in fixing user issues. Should have access less than Admin but more than Teacher.
Teacher: should be able to create and manage Category and Groups.
Students: should be able to create group but not category.
System Design (Service level):
Frontend:
In Diksha mobile app, under My Groups tab user will see all group which user is part of. Also User should be able to create new group. Categories and Topics will be visible under My Groups tab -> Discussion Forum.
Backend:
Backend will be Discourse\NodeBB??
This is a Discussion Forum software. We will leverage existing Forum software to achieve our goal. Only the required features of this software will be accessed by Middleware layer.
Forum Software should use it own database thus allowing to keep Forum data separate and Also keeping other systems\devices in ecosystem immune if any security attack hits to\through Forum software.
Middleware:
This is the new service that will allow interaction between Frontend and Backend applications. It will also act as One layer of security on top of backend by exposing only required functionality to public; allow integration to existing Sunbird platform and Identity Provider System.
Implementation plan
TBD
System Requirement
Discourse:
OS: Ubuntu 18.04.4
processor: dual core, 64 bit
RAM: 2 GB
NodeBB:
OS: Ubuntu 18.04.4
processor: dual core, 64 bit
RAM: 1 GB
Disk Space: Let’s start with 50 GB disk space? Also Let decide which system to use for uploaded files, Based on that we may need more or less space.
Installation guide
TBD based on Discourse or NodeBB
Init Configuration
Run these configuration after setting up Forum Software. Should be through Devops tools. TBD based on Discourse or NodeBB
Open Questions
What level of accesses should be given to State Secretary, Central Secretary etc?
Who should do staff role?
Extras
Discussion Forum Benefits:
For Students
To ask questions.
Learn from questions asked by other students.
Read and understand answer at his\her own speed.
Revisit\reread answer later.
For Teachers
To explain topics in details.
Make announcements
Get recognition at National level for good answers.