Discover



Design documentation and brainstorming for Sunbird



Recent updates


Index of pages

Space Index

0-9 ... 3 A ... 23 B ... 7 C ... 57 D ... 67 E ... 30
F ... 10 G ... 5 H ... 7 I ... 19 J ... 0 K ... 10
L ... 17 M ... 17 N ... 7 O ... 14 P ... 23 Q ... 6
R ... 20 S ... 56 T ... 25 U ... 17 V ... 10 W ... 0
X ... 0 Y ... 2 Z ... 0 !@#$ ... 0    

0-9

Page: 2019-02-27 Retrospective
Fill in retro details in the table below. Type /date to quickly add the date and @mention participants to help them find the page. Date Team Anand, Ayub, Kartheek, Anil, Mahesh, Chitranshu, Asha, Vinaya, Participants Background Provide context on the pro
Page: 3.8.0.0 Sprint2 Retrospective - 2021-04-09
Fill in retro details in the table below. Type /date to quickly add the date and @mention participants to help them find the page. Date Team Participants Background Provide context on the project or initiative the team is discussing in this retro Retrospe
Page: 3.9.0.0 Sprint2 Retrospective - 2021-05-06
Fill in retro details in the table below. Type /date to quickly add the date and @mention participants to help them find the page. Date Team Participants Background Provide context on the project or initiative the team is discussing in this retro Retrospe

A

Page: A/B testing available framework evaluation
Overview Jira Ticket: As part of implementation of A/B framework, we have evaluated 4 frameworks' that are available for A/B testing. Planout (by Facebook), Wasabi (by Intuit), Alephbet & sixpack (by seatgeek) We will list down the salient feature and com
Page: A/B Testing framework design
Overview When new usability feature need to be launched or we need to re-vamp/change the current usability dramatically, we cannot go full fledged testing out the idea across the whole audience. To collect the data and feedback on such usability features,
Page: Ability to provide review comments to a content at the page level
Background: Currently, Sunbird supports adding review comments by a content reviewer while rejecting a content. Comments can only be given at the content level. Problem statement: Ability to provide review comments to a content at the page level. Proposed
Page: Access to Sunbird datasets via APIs
Business Requirement Sunbird provides the capability to generate various datasets for reporting purposes. Some of these can be downloaded by users via the UI (the Course progress exhaust, for example), whereas others are used by the Sunbird portal to gene
Page: Access User private data in masked form in search based on roles
Problem Statement Currently when a user is searched, only the basic data is being returned, User's private data is restricted to user only. However User with certain role would like to access user's private data in masked form when searching for other use
Page: Account Recovery workflow in Portal
Overview: Currently, Sunbird uses account recovery flow of Keycloak with minimal customization. Keycloak provides secure account recovery flow, that accepts primary account identifier(Phone or Email) to recovery account. If the user doesn't have access to
Page: Add a course as a resource in the course editor
Background As a content creator, when creating a course I should be able to add another course Solution:- Enabled root node with add child node & add a resource option Config:- "nodeDisplayCriteria": { "contentType": [ "Course", "CourseUnit", "Collection"
Page: Add plugins outward relation with plugins, which has used in the content
Ref: Problem statement: Presently to identify the plugins which are used in the content, we have to parse the complete body object & identify the id of the plugin exist in the plugin-manifest of the content. To do this, we have to run some java/node scr
Page: Adding user to an organisation
Overview : There is a need in sunbird platform to identify user and org based on their external id and provider, instead of identifying them using there ids. Problem statement : Ticket Ref: SC-879 https://project-sunbird.atlassian.net/browse/SC-879 As
Page: Additional Metadata required in Textbook
Overview In view of providing better experience for devices which run on a low configuration and/or low bandwidth, to the offline modes- mobile and desktop apps, the following is decided : 1. Addition of hierarchy.json file inside the ecar, which consists
Page: Adoption of Sunbird DIAL Context
This document explains implementation/adoption of Sunbird DIAL context. Document details about 3 areas. How to extend the Sunbird DIAL Context Vocabulary? Why - Each sunbird adopter wants to update the specific information in the DIAL code context(JSON re
Page: Allow user to specify framework-id while updating framework fields
Overview Currently user is shown the framework fields, associated with root-org channel to which user belongs. As part of the story, we want to allow the user to select the framework, and pass the framework fields accordingly. Changes in existing API For
Page: Allow users to declare their State & District via their profile
Problem statement: As a sunbird user, one should be able to do declare their District (Choose State -> Choose District). Proposed solution 1: Storing the location of the user in separate table & separate API for updating location Pros: Implementation
Page: Announcement Page Route Handling
Background Announcement feature contains pages like Compose,Outbox,Inbox,View Announcement etc. At Present we are handling the child route url changes of announcement with respect to the context of parent page. For example, 1. if user clicks on announceme
Page: API for Metrics Summary
Requirement Ref: Scope is : 1. This will expose one end point to show all metrics summary 2. Internally it will make call to analytics team and merge both static data and data got from analytics team. 3. Since Analytics data will change once in 24 hours,
Page: API throttling
Problem statement To enhance the better use of resources, the system needs API based throttling for self signup where the signup calls can be restricted based on phone number and throttling needs to be time based which translates to something like for a p
Page: API to get user types
Overview As part of user search result enhancements, we will require user to be able to filter based on user-type. For that, we need a way to fetch the available user-types. Approach 1 Create a look-up table within database, and return it from there. Pros
Page: Architecture
Page: Assessment
Irrespective of Assessment feature application gives a feature to create Users and Groups Groups are more than one user added together. Till release 1.7.0 The assessment was available to a user who takes the course or lesson on the last page of the cours
Page: Assessment Report - Total scores of the assessment
Introduction This wiki explains that how to calculate the Total score of assessment. Background Currently total score is dependent on telemetry from the player. Listing the telemetry for each assessment for that content and doing the sum of max score for
Page: Assessment scores in courses and certificates(SB-21228 and SH-1368)
Overview This document explains the assumptions and implementation design to provide assessment score related details and its usage in provide merit(progress + assessment) certificates. This includes changes in existing APIs related to course progress and
Page: Association of badge to course
Problem statement: As a sunbird system, it should have capability to associate/disassociate badge to/from course. Whenever any course batch is created, the batch inherits the associated badge. And the participant of the batch gets the same badge on compl
Page: Auto merge in SSO
Overview: Currently, Any user initiating a first time SSO login using an identifier that already exists in the custodian org - causes an auto migration of the account from custodian to the state tenant it can cause erroneous migration to avoid it user's a

B

Page: Backend API request and response formats
REQUEST: { "request": { "content": { "name": "test event", "code": "1234", "startDate": "01/03/2021", "endDate": "01/03/2021", "startTime": "11:00", "endTime": "13:00",
Page: Background Network Queue Sync Service
Introduction and Problem Statement Intro: This documents describes the proposed design for tackling data sync over http for mobile client. Problem: Mobile client collects, aggregates and persists data that periodically gets sync’ed to the server. This dat
Page: Badge assertion to user upon batch completion
Problem Statement:- Whenever a participant completes a course-batch, active badge associated with the course at the time of completion should be asserted to the user. As a sunbird system, how would we achieve that? Proposed Solution :- We already have bad
Page: Brainstroming font issues
Brainstorming on expected UX and performance issues after more languages comes on board. As more languages will get added to the portal, few anticipated challenges will need to be figured out before they surface - Challenges expected - More languages wil
Page: Bulk Upload - Content
Problem Statement Related Jira Task - Bulk Content Upload is to be supported in Sunbird, with 3 operation modes API to be made available to check the real-time status of the bulk content upload process API to be made available to list the statuses of pro
Page: Bulk Upload Service
Content Upload
Page: BulkUpload Service download results
Overview User can use bulk upload service for various artifacts like User, Organization, Location etc. Currently, user can access the results of upload through upload/status api, where in user gets all the records uploaded in json format. This can be diff

C

Page: Cache Implementation Design
Overview : Cache is an important aspect of an application to improve the api response time. For any heavily used system we need to have a mechanism to cache some of the data , which is not going to change very frequently. As of now Su
Page: Cache resolve in sunbird content plugins.
Introduction: This wiki explains the design and implementation of resolving sunbird-content-plugins cache. Background: Currently, If any fix/feature goes to contributed plugins other than the core plugins, The developers are publishing the plugins without
Page: Caching read API using Redis
Overview Use of caching for sending Response for the API which are most used and have least frequency of update of underlying data. Benefits : It will reduce the load on database and also improve response time. Will able to keep up all the supported API
Page: Capturing Sign-in Type and User Role of users in Pipeline
Overview : Need to add the fields in telemetry User role and Sign In type for further breakdown of "No of Unique Users Count by district" Problem Statement: Stamp user role in telemetry Stamp Sign In type in telemetry Design: Stamping User Role - Approac
Page: Capturing usage of features for analysis
Introduction In this wiki, we will discuss an approach to compute usage of various features across different components. The usage of features can be captured using telemetry events and then subsequently used for analysis of different feature usage. We wi
Page: Cassandra Audit Logging for Different Data Types
The purpose of this document is to test Cassandra Trigger and ecAudit logging with different data types to evaluate their support. Table schema on which we have performed operations. CREATE TABLE practice.trigger_audit_log ( id int PRIMARY KEY, bolbtype b
Page: Cassandra date columns datatype migration from string to timestamp
Overview In cassandra data store used by course progress monitoring, few columns which are having date in string format. This results in date and timestamp mismatches when comparing with timezones. Thus, in order to maintain standards and to address the d
Page: Cassandra horizontal scaling
Overview This document provides the insights of horizontally scaling cassandra cluster with the observations and recommendations from benchmarking different scenarios. Tests and Observations To test the scenarios, a keyspace with replication factor of 3 a
Page: Cassandra migration and cql to respective component repos
Introduction Currently, all the migration scripts for all the services/repos (sunbird-lms-service, group-service, sunbird-notification-service, and sunbird-course-service) are packaged with the cassandra-migration module jar. And all the migration informa
Page: Cassandra trigger
Problem Statement:- How to record any insert/update/delete i.e.(write) operation in cassandra as an event? Proposed Solution 1 Cassandra trigger can be used for this purpose. We need to create trigger on particular table which will write into another tabl
Page: CBSE Question Bank Solicitation Format
Context: In an effort to seed the question and answer data, as a part of the EQB, CBSE is reaching out to its affiliate schools, asking them for data (questions, answers, marking scheme etc...). Following was the schema that was shared by CBSE. Schema Cl
Page: CDN Approach for design system
Problem Statement Currently, each channel ( Portal, Editors, Players, Keycloak, Static site, Help center, etc ) has its own CSS codebase and therefore following challenges occur - To keep design consistency across all the channels, the team has to do chan
Page: Certificate: Attach to a batch
Introduction: This document describes how to issue/assign the certificate to a batch of the specific course. Background: Jira Issues UI designs: https://project-sunbird.atlassian.net/browse/SH-641 https://project-sunbird.atlassian.net/browse/SH-641 Relate
Page: Certificate: Dynamic rules support
Introduction: This document describes how to add/show certificate rules dynamically based on the certificate type Background: Jira Issue https://project-sunbird.atlassian.net/browse/SH-993 https://project-sunbird.atlassian.net/browse/SH-993 Problem Statem
Page: CF R-1.14 Sprint 3
Page: Changes to course progress calculation for videos/youtube and pdf content
Background:- The majority of the support tickets indicate that users have a problem with course progress. They report that they have played the video or viewed the document multiple times but the progress is stuck. Issue link:- https://project-sunbird.atl
Page: Chatbot KT
Session Topic Details 1 Chatbot Repos(Sunbird & partner-private) Deployments 2 Configuration changes - Deployments 3 Chatbot client 4 Chatbot router 5 Rasa Session 1: Topic: Chatbot Repos for backend and client Details: Repository Backend repository https
Page: Chatbot on Sunbird
About This document details the chatbot architecture principles and the functional use cases addressed via chatbot. Use Cases Chatbot on Sunbird is positioned as: a capability which can help users with the discovery of relevant content on the platform vir
Page: CI/CD Processes
Only modified or added branch will be built and updated to the staging and prod instances. To include or remove any of the version - widgets.json file will need to be updated (Not in release 1.9) if removed - the robots.txt file will have to be updated Ea
Page: Collaboration for content creation
Overview: Adding collaborators to the content in sunbird. when added as a collaborator to the content the collaborator will have rights to edit the content. And at a single instance only one person should be able to edit the content. collaborators support
Page: Collection Hierarchy Generalisation
Overview: Collection hierarchy structure should support different type of objects as children. Current Behaviour: A Collection hierarchy supports Content with visibility Default and Collection with visibility as Parent and Default as children. Child Colle
Page: Collection Player Design
Problem statement For the adaptors to experience the collections which are part of knowLG building block there is a need to build a player which will render them, So there is a need to build a collection player which supports all types of collections. Sin
Page: Collections - structure optimization
Introduction: This wiki explains the current structure for collections and the proposed structure changes for optimization and scale. Background & Problem statement: The textbook is realized by Collection node in the Knowledge Platform. The textbook with
Page: Common Reusable Classes
Class Description Margins All Directions m-0 adds margin 0 in all directions m-5 adds margin 5px in all directions m-10 adds margin 10px in all directions m-15 adds margin 15px in all directions m-20 adds margin 20px in all directions Margin Only Top dire
Page: Config Service JS client sdk - Implemenetation design
Existing Solution: The existing implementation of config service integrations in portal are available as helper methods as part of the portal code which is tightly bounded to portal module.So if we want to implement it for content service it requires rewr
Page: Configurable Portal Dashboards Reports Architecture
Introduction This wiki details out the architecture of the configurable reports for portal dashboard and also serves as an implementation guide to configure and set up a report. Overview Currently, the data team generates the data for the weekly reports i
Page: Configuration
Page: Configuration service
Target release 1.10 Epic Document status Document owner Gouri Shanker Bajaj Designer Lead designer Developers Lead developer QA Lead tester Background Managing configurations is an important concern in any solution deployment involving several services. S
Page: Configure profile fields to be editable
Overview As sunbird platform gets deployed by different users, they may have specific requirement around which profile fields they want to allow user to edit, which fields re mandatory, what is display name for fields etc. Currently we have the ability to
Page: Configuring Sunbird Email Notification in Content service
Background: Currently, Sunbird email service is used to send the notification to the user on different actions in review workflow. Sunbird uses same default email templates for all workflow actions such as publish, request changes. Problem statement: Emai
Page: Consuming DeviceRegister API in mobile app
Introduction: This wiki explains how DeviceRegister API will be consumed in mobile app Background: DeviceRegister API is used for capturing the IP address details and the device specifications on both mobile and web platforms. Problem Statement: DeviceRe
Page: Consumption Architecture
Architecture Diagram consumption_architecture_2.png Component Diagram consumption_block_diagram.png
Page: Consumption Metrics
This document details the setup processes required to get consumption metrics report generation scripts installed and running on a Virtual Machine. This document is split in two stage: a one time setup and maintenance tasks. One Time Setup Git Fork the br
Page: Container - Design
Introduction The container for the OpenRAP 2.0 has been developed on top of ext-framework. The additions on top of ext-framework are: SDK's like Global, Settings & Download Manager While the ext-framework has been designed to add plugins within a single a
Page: Content
Page: Content - external store data restructuring
Introduction: This wiki explains the current structure of external store data for content and the proposed changes in the structure to bring consistency. Background & Problem statement: Content-Type Identifier in Neo4J Identifier in Cassandra Version 0 Ve
Page: Content attribution to Organisations
Target release 1.10 Epic Document status Implementation Document owner Shailesh Kochhar Designer subu palamadai Developers Vinaya Kumar B Manzarul Haque Harish Kumar Gangula QA Lead tester Goals Create incentives for multiple organisations to collaborate
Page: Content Copy API specification - For supporting CurriculumCourse
Overview Content Copy API supports two types of copy: 1. Deep Copy and 2. Shallow Copy As per the current requirement Content has to be copied with same TOC but with different contentType. For Supporting this, we are proposing below request structure to s
Page: Content DB Migration
Background: Problem Statement : For existing users, already content DB is created so, categories filed will not be there and we are using content.category1 so, it will throw undefined error Key Design Problem: Update content DB keys BMGS to category1, cat
Page: Content deletion
Background There is a need to provide the option for content delete in the desktop app so that the user can manage the space in his machine and it should be designed such a way that the deletion should be performed in async fashion so that app main threa
Page: Content Discard API specification
Overview Content Retire API retires the Live as well as Draft version of content. It is actually soft delete. The requirement is to discard the edited version of content, but persisting the live version. Content Discard API DELETE - content/v3/discard/{co
Page: Content Meta data filters
At present if want to filter content based on its meta data in sunbird portal,we have set those filters (like mimeType,contentType,createdBy) from portal/client side itself. In certain context content meta data filters should be set outside of client side
Page: Content Player 2.0
Introduction This documents list the design approach which we are taking to rewrite the content player such that For users: Faster load times, great user experience and leaves less memory footprint on the browser. For Developers: parallel development, dec
Page: Content, Itemset and Question Relationship Refactoring
Introduction: Item set should be a collection of questions where questions will have hasSequenceMember relationship with the member questions. Content should have association relationship with Item set. Background & Problem statement: Currently content ha
Page: Content-Player: NPM Package build
Introduction: This document details the content-player npm package build process Background Content-Player is common module/product used to preview/play the content/question in Portal, Mobile, offline desktop, Editors & Question(editors). The build proces
Page: content-player: Telemetry event details for NCERT quiz - PlaySession
Jira Story: Telemetry information to track a play session Instructions A new "play session id" should be created as and when a user starts playing a content. Student/user should able to fill his details before taking the quiz. Instead of introducing new s
Page: Course batch permission design
Overview: Sunbird course batch api is built to manage batches of courses available. There are two type of batch ( Open , invite only). For open batch there is no mentors and is for self enrollment. For invite only batch creator need to add mentors and par
Page: Course Consumption Modalities
Introduction Use-Cases Use Case Description Problem (The problem this use case will solve for the user) User Persona Why (Why users will choose your product to solve their problem, and what differentiates you from alternatives)
Page: Course Dashboards
Course Enrollment Report Background Purpose of this report is to show the course wise enrollment numbers. Users from any tenant can enrol into an open course batch. In this report only include teachers who belong to the same tenant ID as the report viewer
Page: Course Infra - Async Jobs - Implementation Design
Current Design: course-batch-current-design.png Below are the key design problems: Remove ES for user enrolment data and use only Cassandra table. Computation of metrics at Course and CourseUnit Level. Implementation logic to generate AUDIT events. Report
Page: Course Infra - AUDIT Telemetry
Common AUDIT Event Structure: { "eid": , "AUDIT", "ets": , 1592803822, "ver": "3.0", "mid": , "LP.AUDIT.1592803822" "actor": { "id": "<userid>", "type": "User" }, // Context of the event "context": { "channel": "<default_value>", "pdata": { "id": "org.sun
Page: Courses
Page: Courses Infra - Design
Current Design Courses Infra Current.png Following are the key problems with the current design: Writing progress updates and completion percentage to ES is not able to scale to the required needs. ES is not build for massive writes similar to Cassandra.
Page: Courses mentors should be able to administer closed (invite-only) batches across Orgs within a tenant.
Background: Courses mentors should be able to administer closed (invite-only) batches across Orgs within a tenant. Problem Statement: The Content creator organisation should be able to invite the members of the partner organisations to take the course. Pr
Page: Creation of Self Assessment from Workspace
Introduction: This document is an approach not from content framework to solve the creation of self-assessment from the user’s workspace Background: Jira issue: https://project-sunbird.atlassian.net/browse/SB-17128 https://project-sunbird.atlassian.net/br
Page: Credits and attributions
Target release 1.11 Epic Document status Document owner Surendrasingh Sucharia Designer Prajna Hegde Developers Lead developer QA Lead tester Goals Allow a creator to give credit to multiple other people registered or not registered on the system Allow a
Page: CSP Configurations - LERN Details
Objective LERN Building block services can be configured different storage services based on the configurations. Config Service name Config name Data products store in model-config Data-pipeline (flink jobs) cert_cloud_storage_type cert-service CLOUD_STO

D

Page: Dashboard Metrics
API for Metrics Summary Static data - JSON format
Page: Dashboard Table configuration
Problem Statement The admin dashboard type of reports should be dependent on the tenant. In the admin dashboard Table, all fields are in string formate when fetched from the JSON even though their datatype is number or Date. Because of this, the sorting o
Page: Dashlets Design Doc
Title Dashlet Selector <sb-dashlet> Use Case Dashlets are reporting widgets that can be embedded in any contextual workflow - whether on a consumption, creation or administration screen. Any solution that needs to use dashlets can configure the dashlet wi
Page: Dashlets Page-Wise Configuration Design Brainstorm
Title Dashlet Page Wise Configuration. Problem Statement Ability to inject dashlets widgets into any page via configuration. Solution is divided into 3 phases :- Create Configuration for the Dashlets <CREATION> Linking the page id to the Dashlets Configur
Page: Data migration across tenants
Overview As part of the ticket - SB-9803 https://project-sunbird.atlassian.net/browse/SB-9803?oldIssueView=true, we are required to merge user/content of 2 tenants into 1. Earlier the state had created 2 tenants, both have users as well as content. There
Page: Data Persistence while processing events using kafka/ queues.
What is Data Persistence ? Persistent data in the field of data processing denotes information that is infrequently accessed, not likely to be modified and should be not lost before processing valuable information from it. Why we need Kafka Queues for pro
Page: DataScience AMJ Road Map
1. Use Case: Profanity Filter Problem: Detect profanity words and flag such Content. RoadMap: Feasibility Track (effort: one week) review https://github.com/vzhou842/profanity-check existing methods: look-up based and model-based create positive and negat
Page: Deep link support in Android 12 devices
Background: Deep links help us provide a seamless experience between the Sunbird portal and the mobile application. Assuming the application is installed, when a user taps a link from an email client or WhatsApp, we want the Android device to route the re
Page: Default Profile Visibility Configuration
Introduction This wiki explains the background, problem statement and design to make default profile visibility settings configurable in sunbird Background Default profile visibility settings is set for all users at the time of user creation. The fields w
Page: Deletion of inactive user/Org accounts
Overview : There are multiple user accounts created by states that have never been used/ been inactive for extended periods for time. As states move to officially onboard users (SSO, self sign up etc.), there is a need to clean up these legacy accounts.Th
Page: Dependent Filter
Page: Dependent Filter Design
Page: Deployment Steps for Keycloak User Federation
Jira Link : https://project-sunbird.atlassian.net/browse/SC-911 https://project-sunbird.atlassian.net/browse/SC-911 Design Doc : Encrypting data stored within keycloak Note: Take back up of keycloak database. Steps : Checkout https://github.com/project-
Page: Design Document: Notify users on critical actions for trackable collections.
This document will help us to achieve the implementation of the notification feature for any specific activity on groups workflow. Background: As per the ticket https://project-sunbird.atlassian.net/browse/SB-24361 https://project-sunbird.atlassian.net/br
Page: Design - Relational metadata to asset linked to a collection
Introduction: Relational metadata that can be added to the relation between an asset and the folder to which it is linked. These attributes have to be stored as part of the relation between the asset and the folder to which it is linked. Some examples for
Page: Design Brainstorm: Migrating all the content's previewUrl to streamingUrl based on the mimeType
Introduction: Video file of all the content with mimeType:video, is streamed and uploaded into cloud store. The streamed file url is getting updated into streamingUrl field of content metadata. Background & Problem Statement: As part of video streaming im
Page: Design Discussion Template
Introduction: Introduction to this wiki page. The blocks this wiki page contains Background: Explain the background or existing structure/design and implementation for this feature/problem. Problem Statement: Explain the problem for which we are preparing
Page: Design document: Activity dashboard
This document will help us to implement the activity dash board for groups Background As per ticket https://project-sunbird.atlassian.net/browse/SB-24224 https://project-sunbird.atlassian.net/browse/SB-24224 we need to show the activity dashboard to the a
Page: Design for a lightweight healthcheck api in portal and content service.
Problem Statement Currently, the health check API is checking that the dependent service is healthier or not to determine that this service is healthy ex: In the portal, the health check is trying to determine that the following service is up and running.
Page: Design for adding org name for 'my courses'
Problem Statement User in sunbird system can see the courses he is enrolled into however it does not reflect the organisation name in the list. There should be enhancement to enable for showing the org name with the courses. Proposed Solution 1 Currently
Page: Design for automated reports from Druid
Introduction: This document describes the design to generate the data for the portal dashboards from Druid OLAP data store and export the report data to cloud storage. This mainly consists of following modules Configure Report API - This API will be used
Page: Design for course batch stats
Approach 1 Nested participant object in one documents Create an index and add settings curl -X PUT http://localhost:9200/cbatchstats/ -H 'Content-Type: application/json' -H 'Postman-Token: a39bca1e-1412-45f2-bf3a-814109bd31c3' -H 'cache-control: no-cache'
Page: Design for easy way to update content
Problem Statement Currently to update the content implementation team needs to make multiple calls, which makes it a difficult process. Additionally there is no auditing in place to track as content was updated by whom. There should be an easier way to up
Page: Design for getting batch status inside my enroll course.
Overview We need to include Batch Status attribute in response of API to fetch user enrolled courses (/course/v1/user/enrollment/list/{‌{userId}‌}). /course/v1/user/enrollment/list/{‌{userId}‌}?batchDetails=[fields comma separated ]&orgDetails=name,email
Page: Design for One time password (OTP)
sendotp.png Problem statement: As a sunbird system it should have capability to generate and validate generated OTP. As per current requirement OTP can be generated for mobile number or email. Proposed Solution 1: Sunbird will expose a new end-point to
Page: Design for verify OTP
Problem statement: As a sunbird system it should be able to do the verification of generated OTP. Proposed Solution: Sunbird will expose new api to verify OTP. Both Generate OTP and Verify OTP can be a single micro-service. New api structure will be
Page: Design Systems
Page: Design to get list of ongoing and upcoming open batches.
Problem statement : Consumer want to show count of upcoming and ongoing open batches for a course. Since course is stored under learning platform and created batch from course are stored under sunbird-LMS. There are two different system and they don't
Page: Design: Last access time for collection & resources
Overview To organise the any order of tractable collection w.r.t user’s last access date and time on the user enrolment list . We have two solution approach. Referenced ticket: https://project-sunbird.atlassian.net/browse/SB-26283 https://project-sunbird.
Page: Design: Addition information on certificate QR scan
Introduction Currently, upon scanning the QR code on the certificate only the user name, course completed by the users plus the completion date is shown to the user. This needs to be enhanced to show the users' profile information so that it can help admi
Page: Design: Display the page wise comments for content editor
Background The page wise reviewer comments for a resource content should be displayed in the content editor. Key design problems Show the reviewer's comments, name, reviewer's profile icon and date for each stage. 3.png Solution 1: Read all the Comment o
Page: Design: Question and QuestionSet - Lifecycle
Introduction: The sunbird platform enabled the content creators to create questions and select multiple questions and create an assessment content using them. But, there is no lifecycle management and review workflow for question object to enable crowed s
Page: Design: Separation of question-set & collection editor
Introduction This document describes the key design problem statement and design for the separation of the question set and collection editor. Jira LINK: Background Currently, both collection & questionSet editors are using a single code base. All the BB’
Page: Desktop app functional automation testing
Introduction: Desktop App testing should be automated by writing integration tests. The benefits of this are the following: Faster Feedback Accelerated Results Testing Efficiency Improvement Higher Overall Test Coverage Reusability of Automated Tests Ear
Page: Developer's Doc - How to set up and use the portal chatbot client library
This document will help you to how to set up and use a portal chatbot client library. Background: This is built as an Angular library. Where this angular library can be integrated into any Angular application(like sunbird portal). Once we integrate this l
Page: Developer's Doc: How to set-up and use Discussions-UI library
This document will help to set up and use the Discussion-UI library. Background: Discussion-UI library is an angular base library that will help any platform to configure and use a discussion forum. In the Sunbird use case, any of the learning sections ca
Page: Developer's Doc: How to setup and use Discussions-middleware
This document will help the developer ( or third-party vendors ) to set up and use Discussion-middleware. Background: This discussions-middleware works like an API proxy. All the discussions-forum related APIs will go via this proxy. Git Repository: https
Page: Dialcode context
Introduction: This document describes how to get the DIAL code context information. Background: At present, the dial-service is not storing any information/context about the DIAL code linked to what(ex Textbook, Textbook unit, etc). So if we want to get t
Page: DIK-4503: Certificate re-issue script
Steps: Download the below script and csv file. chmod +x ./cert-re-issue.sh Fetch authToken(keycloak token) and bearer key Run the below command. ./cert-re-issue.sh <csvfile.csv> <authToken> <bearerkey>
Home page: Discover
Design documentation and brainstorming for Sunbird Browse by topic Index of pages
Page: Discussion Forum
This document describes about Discussion Forum architecture Background: Problem Statement: Key design problems: How to create an independent widget that will be having end-to-end functionality How to use existing user service/DB instead of creating new us
Page: Discussion Forum context object configuration
Introduction https://project-sunbird.atlassian.net/browse/SB-22678 https://project-sunbird.atlassian.net/browse/SB-22678 This wiki is for adding the logged in user identifier also some extra info data into sbCategory collection (The one that we are storin
Page: Discussion Forum Doc
Introduction To make discussion within a context and every logged in user can be participated. Architecture Diagram Untitled Diagram.drawio (11).png Hierarchy of discussions The below diagram explains the category & topics created for a Course & Batch. Th
Page: Discussion Forum Load Testing
Introduction This document describes the key design problem statement and probable solutions for Discussion-UI library load testing with Sunbird Portal Background Load testing for discussion-ui https://project-sunbird.atlassian.net/browse/SB-21738 https:/
Page: Discussion Forum Middleware Error Codes
Introduction This document describes how to construct Error codes for all operations Background Jira Issues https://project-sunbird.atlassian.net/browse/SB-21578 https://project-sunbird.atlassian.net/browse/SB-21578 Examples Of Error code PFT_CCRT10 >> PB
Page: Discussion forum notifications
Introduction This document describes the key design problem statement and probable solutions for discussion forum notifications https://project-sunbird.atlassian.net/browse/SB-25091 https://project-sunbird.atlassian.net/browse/SB-25091 . Problem Statement
Page: Discussion Forum: Deployment
it Nodebb Setup To setup nodebb we have to fallow the below steps go to nodebb folder and the execute the commands ./nodebb setup ./nodebb start Install nodebb plugins To install required nodebb plugins using npm we are using below plugin npm install http
Page: Discussion forum: Deployment process for all the services.
This document will help to deploy all the services which are parts of the Discussion forum nodebb (along with the plugins) Discussion Middleware sunbird portal Nodebb: Git repository: https://github.com/project-sunbird/sunbird-nodebb https://github.com/pr
Page: Discussion Forum: Generalisation of Course & Groups integration logic
Introduction This document describes the key design problem statement and probable solutions for Discussion-UI library integration with Sunbird Portal (or any partner application). Background No API exists to create the forum, add privileges, create group
Page: Discussion Forum: Integration
scThis document describes integrating the Discussion library into any application NodeBB Category & Topic creation: The below diagram explains the category & topics created for a Course & Batch. The same can be used for any other types like Group, Quiz, e
Page: Discussion forum: Key processes to enable/disable DF.
This document will help to configure (enable/disable) discussion forum for any of the learning process (i.e. groups, course, textbook, etc.) For Groups: Enabling discussion forums for groups will be done via UI. Now to call the create forum API, first, we
Page: Discussion Forum: NodeBB setup
This document will help to setup, config and use NodeBB Background Discussion Forum library uses NodeBB for for DB related operations. So NodeBB needs to be installed for local development. Local setup of Sunbird-Discussion-UI(playgroung application) Refe
Page: Discussion Forum: Router Approach
DF_router.jpg
Page: Discussion Forum: Telemetry Events
This document details about telemetry events generated from discussion-ui library & how to capture the event Event emitted by Discussion-UI library Interact { "eid": "INTERACT", "edata": { "id": "category-card", "type": "CLICK", "pageid": "discussion-cate
Page: Discussion Forum: Widget Creation
This document will help to create the Discussion-UI library Widgets. Prerequisite: Discussion-UI library to be setup and running. Note: Refer to this wiki for setup: Developer's Doc: How to set-up and use Discussions-UI library Architecture Diagram: Copy
Page: Discussion Forum: Widget Integration
This document will help to use the Discussion-UI library widgets. Prerequisite: Discussion-UI library to be setup and running. Note: Refer to this wiki for setup: Developer's Doc: How to set-up and use Discussions-UI library Steps to use Discussion-UI lib
Page: Discussion middleware session
Introduction This document describes the design of discussion middleware session. https://project-sunbird.atlassian.net/browse/SB-22319 https://project-sunbird.atlassian.net/browse/SB-22319 Problem Statement Storing the required information of nodebb and
Page: Displaying Books In Groups Based On Subject
Introduction This wiki explains that how to display search result based on subject. SB-10221 https://project-sunbird.atlassian.net/browse/SB-10221 Problem Statement Display the books in groups based on subject by using content search API. Proposed Design
Page: Docs Versioning
Page: Download csv in course dashboard page
Problem Statement 1: Extend this design to support the download for batches stats upto 1L participants. By default elastic search support max 10k records , in one search query. Use Elastic search scroll api . 'Scroll API ' can be used to retrieve large
Page: Download manager implementation design
This document explains the download manager implementation inside OpenRAP container and the interaction with the plugins and plugin states for a content download with different stages in detail. While downloading a file(content) and the different possibl
Page: Druid Data Model - Collection Summary
Data Model: Dimension In Druid Field In Report Description Data Type 1 content_org organisation Published By or Course Publisher Name or tenant String 2 user_org orgname User Organisation name String 3 batch_id batchid Unique Batch Identifier String 4 col
Page: Druid Data Model - Content Model Snapshot
Data Model: Field Data Type Field in Druid 1 author String author 2 badgeAssertions.assertionId String badgeAssertions_assertionId 3 badgeAssertions.badgeClassId String badgeAssertions_badgeClassId 4 badgeAssertions.badgeClassImage String badgeAssertions_
Page: Druid Data Model - Course Batch
Introduction: This wiki explains ingestion specification for the Course Batch and its related objects to compute required metrics and compose dashboards using Druid. Design: Below are the objects related to course batch Course Course Batch Enrollment User
Page: Druid Data Model - Summary Events
Data Model: Dimension in Druid Field in Summary event Description Data Type 1 ets ets Event timestamp Long 2 eid eid Event Id String 3 ver ver Version String 4 syncts syncts Sync timestamp Long 5 uid uid User Id String 6 context_date_range_from context.da
Page: Druid Data Model - Telemetry Events
Data Model: Dimension in Druid Field in Telemetry Description Data Type 1 ets ets Event timestamp Long 2 eid eid Event Id String 3 syncts syncts Sync Timestamp Long 4 @timstamp @timstamp Sync Timestamp in String String 5 actor_id actor.id Actor Id of the
Page: Dynamic content streaming quality based on internet connectivity for videos

E

Page: e-Schooling - Batches
Introduction Course based learning is enabled in sunbird platform via batches. A course batch enables the following functionality: Enrolling learners into courses Tracking the progress of learners by mentors Open batches that allow any user to enrol for a
Page: e-Schooling - Curriculum Courses
Introduction In Sunbird Platform, courses can be created by grouping multiple learning resources under course units which are then grouped together to form a course. Course creators have to create courses from the ground up and progress of the course can
Page: Elasticsearch Backup & Restore In Azure and Local Environment
Azure Environment: Backup: Create Azure Storage Account and Blob Container: Log in to the Azure portal and navigate to the Storage Accounts service. Create a new storage account or use an existing one. Within the storage account, create a blob container n
Page: Elasticsearch mapping update job steps
Problem Statement Since we are moving to multi index format and static mapping there should be a way in accordance with CI/CD to update mapping whenever a new field is added as required. Solution Approach A jenkins job can be added to update mapping for i
Page: Elasticsearch Type Mapping
Overview : Type mapping inside elasticsearch can be dynamic or static. Both mapping has it's own pros and cons. For initial usage dynamic mapping is fine, because we won't have complete knowledge of data model and it's usability. But for production, dyna
Page: Elasticsearch upgrade in Sunbird Platform
Problem Statement Sunbird is using ES 5.4.3 whereas other platforms (LP/DP) are running on ES 6.3. Hence the Sunbird ES 5.4.3 needs to be upgraded to 6.3. Solution Approach To accomplish the upgrade we can take below approach Full cluster restart Steps ht
Page: Elasticsearch Version Upgrade: 6.8.22 to 7.17.13
Introduction This document serves as a comprehensive guide for upgrading Elasticsearch within Sunbird Lern [Specifically in userorg, lms and data-pipeline]. We will transition from version 6.8.23 to the more secure version 7.17.13. Overview The primary go
Page: Elasticsearch Version Upgrade: 6.8.23 to 7.17.13
Introduction This document serves as a comprehensive guide for upgrading Elasticsearch within Sunbird Knowlg [Specifically in knowledge-platform, knowledge-platforms-jobs and sunbird-dial-service]. We will transition from version 6.8.23 to the more secure
Page: Email Notification for User addition, Mentor Addtion and removal from a Batch.
Proposed Solution for Release-1.11.0 The proposed solution for Email notification for the batch process is described in the following diagram lms-email.png In the LMS service, we are creating the batch and adding mentors and users to the batch. in the sam
Page: Enable dynamic updation of learners' course progress
Introduction This wiki explains current design of course batches, problems with it and proposed changes to the design and implementation to resolve the current issues and able to handle scale. Background & Problem statement: In current state changes store
Page: Enable player to support scorm
How does SCORM Work SCORM is a specification that defines How distributable learning content should be packaged How the content can be embedded in a LMS How does the embedded content communicate with the LMS The standards / specifications of this communic
Page: Enable Question-Sets for video content
The document has moved. Please follow this link Enable Question-Sets for video content
Page: Enable transcripts for video content
Introduction This wiki explains the design and implementation of the enable transcriptions for video content. https://project-sunbird.atlassian.net/browse/SB-26446 https://project-sunbird.atlassian.net/browse/SB-26446 Key Design Problems: How to store tra
Page: Enable transcripts(sub-title) in video player
Introduction This wiki explains the design and implementation of enabling the transcripts in the video player. Key Design Problems: How the player should enable/render the transcripts files for the selection. How to handle the transcripts-related changes
Page: Enable user account updates as part of SSO
Problem Statement Related Jira Task - { "jti": "<random_string>", "iss": "<issuer_id>", "sub": "<user_external_id>", "aud": "<base_url>", "iat": 1498556656, "exp": 1498560256, "name": "<name_of_the_user>", "state_id": "<channel_name_of_the_tenant>", "sch
Page: Encrypting data stored within keycloak
Jira Link: SC-911 Encryption of data in keycloak https://project-sunbird.atlassian.net/browse/SC-911 Overview Sunbird uses Keycloak as tool for identity management services. The default storage mechanism stores the user-data in plain format within its loc
Page: Enhancing logging in Sunbird Desktop App
Background: Currently, Deskstop App has a logging system in place. That is configurable and allows storing of backups on log rotation. Desktop App stores all type('all' | 'trace' | 'fatal' | 'error' | 'off' | 'info' | 'warn' | 'debug') of logs in app.log
Page: Environment Stability - RCA
ETL job not being executed for 1.14 pre-prod deployment - steps were missed though provided in the deployment tracker Swarm update due to change in a particular node by Azure Refactoring of the variable values (500 variables to 60 variables), Communicatio
Page: EQB Architecture
Background Problem: Questions are fundamental to learning -- both in terms of assessing learner's progress as well as in terms of generating curiosity. Boards like CBSE have repository of questions, which are so far accessible to just the affiliated schoo
Page: Error log sync in Sunbird Desktop App
Overview: Currently, Deskstop App has a logging system that stores the log in the file system. These logs have the type of log, error message, time-stamp. We can debug the errors locally by accessing the log files. Problem statement: As part of the er
Page: Error Message Localisation
Problem Definition: All the error messages coming from the platform should be localised based on the configured language. Key area to be analysed: Error Code Naming convention How to be called from different module How to segregate different code Error Co
Page: ETB 2.0 - Reserve Dial-code API specification
Overview As per the current design discussion, LP will be providing two APIs for reserving the dialcodes for textbook and releasing a specific number of dialcodes from the textbook respectively. For storing the reserved dialcodes list against a textbook,
Page: ETB 2.0 - Upload TOC, Update TOC & Download TOC using CSV
Overview : Textbook Creator can upload a pre-defined formatted csv file with details of TOC hierarchy against a Textbook id. System should: Generate the TOC hierarchy using csv file. Download complete textbook hierarchy in csv format. Update TOC unit meta
Page: ETB 2.0: LP & DIAL code
Target release OND Epic Link to related JIRA epic or feature Document status Document owner Mohit Garg Designer subu palamadai Developers Rayulu Villa QA Lead tester Goals DIAL code request to be generated from the system using ETB editor. Background and
Page: ETL job to add state, district of non custodian user into user DB
Overview As part of enhancing the user profile data and having the location data available along with user profile, we need to update the existing user location data. Currently we allow custodian org users to update their state and district after register
Page: Event based system
problem Statement Current system is not event driven. And all background jobs are handled by one or more actors , it can have following problems: Each background job is calling different actor and doing predefined set of actions. (So it's tightly coupl
Page: Event-based background jobs
Problem statement : Current system is not event driven. And all background jobs are handled by one or more actors , it can have following problems: Each background job is calling different actor and doing predefined set of actions. (So it's tightly cou
Page: Events on Sunbird
This document covers the design and modifications needed to support events related use cases in Sunbird. Below use cases have been considered when creating the spec A single event listed (eg: a ask me anything session) A collection of events (eg: a multi-
Page: Experimentation Capability on Portal
Background: Currently, Sunbird has one portal instance that has all the modules and has multiple tenant support. If a tenant request any changes to an existing feature or a new feature, all tenants will get these changes as well. Problem statement: Sunbi
Page: Extensibility
The extensibility architecture in Sunbird allows creating plugins which hook into Sunbird's core and provide the means to extend Sunbird with new functionality.

F

Page: FCM Notification Flow
To broadcast a global level notification to all/specified users for providing set of information based upon the sunbird platform. Registering the device to Notification server Registering device for receiving the notification broadcast from notification s
Page: File lists
Page: File URL Validation
Introduction This wiki explains the URL validate and get metadata API specification. Background As part of upload file using Url link, there is requirement to validate the URL (youtube, google drive, azure and aws). Based on the provider of the URL we wil
Page: Fill in The Blank - Multiples and Variations - Nov, 2018
Grouping of Blanks JIRA Issue https://project-sunbird.atlassian.net/browse/SB-8987 https://project-sunbird.atlassian.net/browse/SB-8987 source document: https://docs.google.com/document/d/1KSM125In96unii6c-8sKzBEpli8quufp1UJywX4J4bo/edit https://docs.goog
Page: Filters in admin dashboard
Filters in Charts Background Purpose of this report is to add filtering capabilities to charts in the admin dashboard so that users can narrow down the data set to their time period/ labels (Course name , class , subject name etc). Proposed Solution: To r
Page: Flink jobs for certificates generation and processing
Overview This wiki details the design approach on issuing/generating certificates via flink job. Design The current certificate-generator samza job and cert-service(generateCertificate) API is refactored as flink jobs. Below diagram depicts the flow. desi
Page: Form API's
Update on Form Service Schema Current Column Proposed Columns type (varchar) type (varchar) subtype (varchar) subtype (varchar) action (varchar) action (varchar) component (varchar) component (varchar) root_org (varchar) root_org (varchar) framework (varc
Page: Framework Details.
Background: Presently BMGS is hardcoded for Framework request. If we want to change this label as category1, category2, category3 and category4 then we have to change the framework request. Jira ticket: Problem Statement : 1.What is the new API request fo
Page: FTB Data Model Design
Data Model image2018-12-7_16-9-25.png Example 1 { "data": { "question": { "text": "Complete the sequence: 21, 23, __1__, __2__, 29", "audio": "", "image": "" }, "answers": [ [ "25" ], [ "27" ] ], "data":{ "expAnswers": [ [ "25" ], [ "27" ] ], "expAnsIndic
Page: Fuzzy Search and Nearest Neighbors
Problem: Typical relational database systems are set theoretic in nature. Effectively, the query under consideration defines a set, and each result in the query is a member of that set. These sets are not fuzzy, meaning that a record (a row in a table) be

G

Page: Get all Channels for an instance - API Implementation Design
There should be an API available to get all the available channels of an instance which will be helpful for effective content filtering based on channels. The request structure of the api should be like below: POST /v1/channel/list { "request" : { "sta
Page: gh-pages branch
This branch will store the generated site Only the updated version folder will get updated. latest stable/ & 1.9 ( latest version no.) folder will be duplicate symlinked. Purpose of creating latest/ folder is that if someone refers the latest URL somewhe
Page: Google Sheets – FeatureId list used for the release items/tasks
Link Google Sheets: FeatureId List https://docs.google.com/spreadsheets/d/1a1rsveNFKCHZGG5F35OnxI6O-lgtOFD3AlCJPXhmOpE/edit#gid=0 Date Aug 30, 2019 https://accounts.google.com/favicon.ico docs.google.com/spreadsheets/… https://docs.google.com/spreadsheets
Page: Google Sign in Flow in Portal
Overview: User sign in to Sunbird/Diksha is handled by the portal. Currently, the portal uses Google plus API to fetch the user profile when the user tries to sign-in using google. Problem statement: Google has shut down Google Plus API from 7 March 2019.
Page: Groups: Tech Documentation - Add activity
This document will help to understand how to add an activity in a group Background We can enable any activity type for a group We can configure form API for that Form creation This form will be used to populate the activity types that can be added for a g

H

Page: Hardcoded BMGS removal in Sunbirded Mobile App
Background: Presently Sunbird uses hardcoded of BMGS. If User wants to use this application for hospital or different organisations, Then we have to remove hardcode of BMGS and make it as dynamic. Jira ticket: https://project-sunbird.atlassian.net/jira/so
Page: Hawkeye Superset Automation
Objective Hawkeye superset is used to generate Analytics job config and report service config. From the initial implementation Hawkeye code was built on top of the exisiting forked repo from Apache superset. From this automation implementation, superset c
Page: Hide buttons 'Sign in with Google' and 'Sign Up' for older mobile app version.
Problem Hide buttons 'Sign in with Google' and 'Sign Up' for older version mobile app on the login page. Solution This can be done by passing the query parameter with the login URL and displaying buttons only when the parameter has expected value. Imple
Page: Hosting
sunbird.org website will be served from gh-pages of sunbird.org-web . The proxy server will map this gh-pages to sunbird.org. www-qa.sunbird.org website will be served from the www-staging folder of sunbird-docs-qa s3 bucket. The proxy server will map thi
Page: How to define the schema and context for a DIAL?
How to define the schema and context? There are two ways to define and upload the schema in blob. Fork sunbird-dial-service https://github.com/project-sunbird/sunbird-dial-service/schemas repo Create the your own repo and follow the same structure of sche
Page: How-to articles
Page: HTML & CSS Guidelines (v1.0)
Google Doc (Contains same) - https://docs.google.com/document/d/1RqZqAQAmUhJqaMCL26iIvx9MS03MxKbby9My_Fbt1Do/edit# https://docs.google.com/document/d/1RqZqAQAmUhJqaMCL26iIvx9MS03MxKbby9My_Fbt1Do/edit JIRA Card - https://project-sunbird.atlassian.net/bro

I

Page: Image Generation API
Problem Statement QR code image generation POC is done in Java using Zxing library. Design a way to expose this usecase for consumption. Approach 1 Package the code as a executable jar Input - Predetermined set of parameters in a String array Output - Gen
Page: Implementation - Knowlg player app integrate with player V1
Background Currently, we are showing pdf, epub, and video players in the knowledge player app. To display the interactive, HTML, h5p, and youtube content, we need to integrate the v1 player in the knowledge player app. Design To integrate the v1 player fo
Page: Implementation design for Location Capture: Device and User
Introduction: This documents describes the design for capturing Device and User location. This design requires following changes Get Device Profile API - To return back the IP resolved location for the device. Device Register API Enhancements - API to sav
Page: Implementation Design for Notification Service
Target release 1.12.0 Epic Document status Document owner Loganathan Shanmugam Design Link Notification Service https://project-sunbird.atlassian.net/wiki/spaces/SBDES/pages/654409823/Notification+Service Developers Rajeev Sathish Loganathan Shanmugam May
Page: Implementation design for updating the district details from derived location for District Level Report
Introduction: This document describes the design of updating the DRUID query in Analytics script for the District Level Report. PRD Link : District Level Report Implementation Design Link for Derived Location : Implementation design for Location Capture:
Page: Implementation Design of Question Editor and findings
Confluence Doc: Design: Separation of question-set & collection editor https://project-sunbird.atlassian.net/wiki/spaces/SBDES/pages/3181051923/Design+Separation+of+question-set+collection+editor As per the above document, we’ve finalized the following ap
Page: Implementing Gzip compression
Overview Sunbird APIs are consumed via mobile app as well as web application, where in even web-application can be loaded from mobile or tabs. Most of the api is based on exchange of request/response in json format. Motivation is to reduce the size of res
Page: Improve logging quality
Jira Ticket: Overview As part of the ticket we need to improve overall logging quality of sunbird platform. Currently, we face problems in two particular areas: To change logging level, property file need to be changed, which means we need to build & depl
Page: In app notifications
Problem Statement: The broadcast message at the app launch will be used in the below following cases for ex - Examples of use: 1. When Sunbird instance goes down, show a message about (the reason and) when it's going to come back up. 2. When Sunbird insta
Page: Indexing Content Model to Druid
Introduction: In this wiki, we are going to discuss methods to index Content model to Druid and its challenges. Since the content model is not time series data, updating the indexed data in Druid is not possible and this would pose challenges to query dat
Page: inQuiry - Add New Cloud Storage - Implementation Changes & Testing
Background This document explains what components of Sunbird inQuiry (version: release-5.2.0) uses Cloud Storage and how to integrate new Cloud Storage. inq_2.jpeg Above diagram shows inQuiry components (marked in yellow colour) and its connections with c
Page: inQuiry - provision & installation script
Background: inQuiry need to document all steps for server installation to provide ease of installation experience for adopters. Problem Statement: As of now, below problems identified in scripts and variables: inQuiry provision & installation scripts are
Page: inQuiry- [Design]- API Implementation of QuML Multi-language
Background: inQuiry need to enable multi-language support for Questions & QuestionSets where data like question content (body), hints, instructions can be stored in multiple language. So that user can select the language of their choice (user may select o
Page: inQuiry: CSP migration & verification steps
As part of CSP migration below data will be migrated: Graph DB: "appIcon","posterImage","artifactUrl","downloadUrl","variants","previewUrl","pdfUrl" Cassandra DB: hierarchy column will be migrated in questionset_hierarchy table. None of the external data
Page: inQuiry: Release-5.2.0 Configuration details
Configuration Added: Please check the configuration files and add below configuration. For variable information, Please refer to Variable Section. assessment-service: cloud_storage_container: "{{ cloud_storage_content_bucketname }}" cloudstorage { metadat
Page: Installation
Page: Installation CI - Requirements
Some of the steps in sunbird installation that can be automated. Creation of VM in Azure or AWS with the minimum requirement Note down the private IP address and also make sure that the basic required ports are open and are accessible. Install the Minimum
Page: Installation CI and Sanity Testing - Implementation Design
Target release 1.9.0,1.10.0 Epic Document status Document owner Rajeev Sathish Designer Lead designer Developers Lead developer QA Lead tester Goals To Make sure that an Adaptor is able to install Sunbird Server Installation by following the Documentation
Page: Issue Certificate To State Teachers/ All Users
Problem Statement : Certificate issuer should be able to choose whether the certificates are issued to only state teachers or all users. Solution Approach : Solution 1 : While adding a certificate template to a course-batch, we can add a new sub-section

J

K

Page: Keycloak and Kong Analysis
Does Kong go to the DB for every jwt token validation No, One consumer can have multiple keys and it's going to DB only once per key and later use the values from cache. Kong tables Consumers table id custom_id username created_at 4b189b85-a560-40f9-99
Page: Knowledge Platform License Support
Problem Definition Knowledge Platform should support multiple types of License. License should be passed by the Creator of the content. If the license is not passed by user, default license for the tenant should be considered for the content. If tenant is
Page: Knowlg - Add New CSP Storage - Implementation Changes & Testing
Background This document details the integration points for any new CSP provider with the Sunbird-Knowledge platform. (Latest as of December 2022. Sunbird-Knowlg release-5.2.0) https://imgr.whimsical.com/object/QDRp2uJZiyjGbcraBaP6nj In the above diagram,
Page: Knowlg - CSP & CNAME
CNAME: CNAME records can be used to alias one name to another. CNAME stands for Canonical Name. All the Data in the DB & response should be CSP agnostic. Presently the data stored in DB & API response is having the CSP provider details. Presently we are s
Page: Knowlg - Domain Agnostic Data
Introduction This wiki explains the current format of the absolute path stored in DBs (Neo4J, Cassandra, ES) and the proposed design to make it domain-agnostic. Background & Problem Statement Knowlg uses URL storage in various scenarios to save and access
Page: Knowlg mirco-services: Open questions
Background Present(in the year 2022) the sunbird knowledge setup is not adoptor friendly to setup/deploy. The reason is because of the cost involved in setup & complexity of the multiple DB’s invovled. How to make knowlg micro-services easy to install & b
Page: Knowlg Mobile app and website players features interoperability
Problem statement The current Knowlg mobile app is capable of playing the static content added to the app as data and it doesn’t have the option to play the content created on the Knowlg website all the players integrated into the mobile app are also capa
Page: Knowlg player app for Mobile PDF player
Introduction This wiki explains the design and implementation of pdf players for mobile devices.. Background: As of now we are experiencing content players player as part of the sunbirded mobile app , to make our building block independent and to test mob
Page: Kong App ID Plugin
Problem Different application consuming the API’s but the backend has no idea who is consuming it and from where the request coming is from. Solution This problem can be solved if an application sends its ID with an API request. Implementation To impleme
Page: KP documentations

L

Page: Launching of Experimentation on Portal.
Background: Currently, Sunbird has one portal instance that has all the modules and has multiple tenant support. If a tenant request any changes to an existing feature or a new feature, all tenants will get these changes as well. Problem statement: Sunbi
Page: Learner Service Data Models Comparison
The purpose of this document is to review schema of data synched between Cassandra and Elasticsearch by Learner Service. Also, this would serve the purpose of identifying unused or irrelevant fields that can be removed. The fields requiring discussion are
Page: Learning Platform
Page: Licensing and Attribution on DIKSHA for Resources and Textbooks
Problem Definition: This story defines the appropriate licensing and attribution details to be provided at the time of content creation and to be displayed at the time of content consumption on DIksha. Current structure of metadata: As per current structu
Page: Life of a Plugin
Sunbird provides an extensible core – this allows new functionality to be built independently of the core development as a plugin. The plugin can be installed into Sunbird and run as part of the core application. This document covers the life of a plugin
Page: Lightening of Spine Ecar
Introduction This wiki explains the provisioning of light weighted spine ecar. Background For every collection type content, knowledge platform generates spine ecar. It is bundle of menifest.json (details of the TextBook and its units) and folders for all
Page: Linking content to ETB through a CSV file
Link to issue: Problem Statement As ETB content is done through CSV upload, there are chances of issue in the input data. So before processing the data it is desirable to validate the data before starting the linking process. Here is the flow which valida
Page: List the Bookmarked and Recently Played Content in Mobile App
Problem Statement: User can can bookmark the content. Content/collections inside of other collections (include courses, textbooks etc.) can also be bookmarked. User can see recently viewed content. Only leaf-node content that was actually PLAYED should be
Page: LMS Service
Page: Loading of spine optimally (mobile app)
Introduction This wiki explains the downloading the light weighted spine ecar if available. And downloading of thumbnails when user visit the detail page then consider those downloaded thumbnail as a part of exported ecar. SB-7105 https://project-sunbird.
Page: Local Notification Configuration Data Structure
Overview Local notification purpose is to notify users to sue the mobile app for better learning experience. Here user will get notification on timely basis, and the notification will be purely locally generated. For this, when the user installs the appli
Page: Lock Service
Introduction This page explains the design of lock service and types of locks that are possible with mechanism to lock a resource and unlock it with different possibilities. Background When a user want to lock a resource if we take an example of a content
Page: Login Flow In Mobile App
Overview: Currently sunbird supports Google, SelfSignUp and State state account for user registration. In case of state user, even though they already have a state account they need to register in sunbird. Problem statement: When launch the login page u
Page: LR-122: Lern repo and pod name correction to match the component name
Introduction Currently all the component names, repo names, pod names, and service names are not in sync with respect to naming. Background & Problem Statement Adopters are confused because the names are not in sync. e.g., currently sunbird-lms-service is
Page: LR-324: BatchService: Refactoring of SB Lern Batch Service - Druid Dependency
Introduction This wiki explains how to decouple Druid service calls by using the Sunbird-Obsrv API service. Background & Problem Statement Currently, the LERN Batch Service connects directly to the Druid data store to fetch collection summary aggregate da
Page: LR-325: DIAL Service QR Code Image List
Introduction This wiki explains the design for fetching QR code images via DIAL Service Background & Problem Statement At the moment LERN Batch Service is connecting to cassandra ‘dialcodes.dialcode_images’ table for fetching QR Code Image URLs and also r
Page: LR-556 Local setup of LMS - Ubuntu & Mac - Mock service setup
Introduction This wiki explains how the content mock API service is used to make the development environment seamless and easy to start working on, without relying on the content service APIs. Background & Problem Statement Right now, the LERN Batch Servi

M

Page: Make Content Review Checklist configurable
Background: Make Content Review Checklist is not configurable in the portal. Problem Statement: Content Review Checklist is not configurable in the portal. Proposed Solution: It has to be made configurable. Following are the different levels of configurat
Page: Manage Learn - Add New CSP Storage - Implementation Changes & Testing
Context This document details how to enable any new CSP provider for Manage Learn capabilities which is part of Sunbird Ed Manage Learn capabilities currently support Azure, AWS, OCI, and GCP ML Core Service interacts with cloud storage for upload/downloa
Page: Mapping type removal in Elasticsearch
Problem Statement Mapping types has been deprecated in Elasticsearch https://www.elastic.co/guide/en/elasticsearch/reference/master/removal-of-types.html and are up for complete removal in future releases. To accommodate this, There are changes required i
Page: Master Key APIs
Background Currently content update is done by the user who created it which creates problem and is complex in scenarios where an admin want to update content by retired user. There should be an easy way to allow users to update content at the same time i
Page: Menu configuration deploy to blob steps
This wiki help QA team to verify below ticket and also https://project-sunbird.atlassian.net/browse/SB-21295 https://project-sunbird.atlassian.net/browse/SB-21295 This below steps need follow to get deploy/run with following steps: Step 1: Modify the conf
Page: Menu options configurable - Dev-Ops CD flow development
Introduction: Makes chatbot menu options configurable so it can easy to maintain without a dev engineer. So we can add/edit existing menu options. It has the following advantages: It will help with a faster deployment process. Quick change based on the re
Page: Merge Course Batch Data - Implementation Design
Impacted tables - content_consumption, user_courses Data Model batchid text, userid text, active boolean, addedby text, completedon timestamp, completionpercentage int, contentstatus map<text, int>, courseid text, datetime timestamp, delta text, enrolledd
Page: Messaging Interface
Target release Epic Document status Draft Specification Document owner Shailesh Kochhar Contact Shailesh Kochhar, Pramod Verma Overview Different kinds of collaboration possible Real-time, syncronous Threaded conversations, asyncronous Q&A, asyncronous Th
Page: Migrating Badgr from V1 to V2
Download and install PostgreSQL (https://www.postgresql.org/download/). https://www.postgresql.org/download/). Create a database using pgAdmin 4 (e.g. ‘badgrDB’). Install virtualenv. sudo pip install virtualenv virtualenvwrapper Run following commands to
Page: Migration from QUML 0.5 to QUML 1.0 version
Requirement Old 'PracticeQuestionSet' contents created on the platform do not show print options in the application. Such 'PracticeQuestionSet' are to be modified to show print options. Solution To achieve this, Questions should be updated in QUML version
Page: Migration guide for new tables for courses enrolments(release-3.1.0)
Overview To reduce the usage of elasticsearch, the cassandra schema for user enrolments and course consumption were re-structured. Please follow the below steps to migrate the existing data needs to be migrate to the newly created tables. Steps to Follow:
Page: Migration script for svg templates (release-3.4.0)
Overview As of release-3.4.0, all svg template creation and consumption is done using asset APIs. This document talks about the APIs to be used to migrate the existing svg templates. Steps Create the svg template with same identifier and name, with below
Page: MMCQ: More than one correct answer for Multiple Choice Question
Overview: This page explains the design of MMCQ. Currently, MCQ supports single answer selection. But MMCQ plugin to allow users more than one correct answers the multi-choice question to the stage. Problem Statement: Statement 1: Since current MCQ imple
Page: Modals
Invision Designs https://app.invisionapp.com/d/main#/console/16496654/342077612/preview https://app.invisionapp.com/d/main#/console/16496654/342077612/preview ng2-semantic documentation https://edcarroll.github.io/ng2-semantic-ui/#/modules/modal https://e
Page: Multi-Lingual Support
Objective Achieve multi-lingual support in inQuiry Fields that needs multilingual support body answer instructions feedback hints User Flow Scenario 1 : Create and consume questions & question set in any language Creator / Editor A dropdown will be presen
Page: Multilingual UI / Localization
Document status Document owner Lakhan Mandloi Developers Lakhan Mandloi & Aman Kumar Sharma Related JIRA cards Background As more states/tenants are coming on-board, user interfaces needs to be translated as per the requirements. Basic Assumptions Engli
Page: Multiple Certificate Templates for Course
Problem Statement : Course Creator should be able to attach more than one certificate template to a course or course-batch so that users receive different certificates based on the defined filter criteria for each template. The creator should also be able

N

Page: Navigation plugin refined layout
Overview: The following wiki describes the existing problem/Issues with navigation plugin and different ways to fix it. Problem statement: To design the navigation plugin in such a way that, navigation buttons could be placed at any desired position with
Page: NCF to All Frameworks in Portal
Target release 1.13 Epic Document status Document owner Harish Kumar Gangula Background Today, the generic portal and the custodian org has NCF framework as the default framework. This isn't ideal because the NCF framework is a catch-all framework which d
Page: NCF to All Page - Mobile
Target release 1.13 Epic Document status Document owner Anil Gupta Background Today, the generic portal and the custodian org has NCF framework as the default framework. This isn't ideal because the NCF framework is a catch-all framework which doesn't hav
Page: Neo4J Causal Cluster Analysis and POC
Introduction The HA cluster of neo4j is a master-slave cluster with single master node which handles all writes. Due to the continuous increase in number of writes to this node, there is a high possibility of master node going down. Also, single master ac
Page: New dynamic forms for Academic and Non-Academic content
Background: Design link:- https://whimsical.com/Swkqpz6rnePYg9nPEFjv64 https://whimsical.com/Swkqpz6rnePYg9nPEFjv64 Jira link:- https://project-sunbird.atlassian.net/browse/SH-364 https://project-sunbird.atlassian.net/browse/SH-364 Problem Statement: Show
Page: Nodebb mention plugin update
After updating the nodebb version to v1.18.6 we have to update the nodebb-plugin-mentions. Follow the below steps to update the nodebb-plugin-mentions. Step:1 Login to nodebb with admin credentials. and open admin page. image-20220113-043525.png Step:2 Go
Page: Notification Service
Target release 1.12.0 Epic Document status Document owner Rajeev Sathish Designer Lead designer Developers Rajeev Sathish Loganathan Shanmugam Mayank Morya QA @QA Goals To build a Notification Service which will be independent service and any other servic

O

Page: Obsrv Sandbox
The following is where you can find documentation for data center installation of Obsrv. (Obsrv cannot be installed on a laptop and it is not meant to be) https://github.com/ManojKrishnaChintaluri/Community/blob/update-doc/use/obsrv-deployment-using-helm
Page: Offline course progress tracking
Track course progress when the user is offline and sync up with the server when internet is available. Current Implementation - The current implementation is completely online, where the content is consumed completely in a course after the content is clos
Page: Offline desktop app windows packaging
This document explains the step by step process to create the exe file for offline desktop app for windows operating system Pre-requisites Minimum windows version - Windows 7 Minimum RAM required - 2GB(Should show warning if the RAM size is less than 2GB
Page: Offline Desktop Application
Configuration Installation Following are the minimal configurations required for installing the offline desktop application. All of the below configuration properties will have default values and are prompted during installation. APPLICATION_PORT=9000 DB_
Page: On boarding
Context The current desktop application is generic for all states - and a user has to spend time filtering through a set of boards, mediums, classes, and subjects every time they land on the app to get content that is relevant for them to solve this probl
Page: On logout from a specific tenant, redirect to the tenant landing page instead of the generic landing page.
Background In Sunbird, if tenant is configured, for a logged in users, when they logout they are redirected to the generic landing page, instead of tenant landing page because the default keycloak logout function generates the logout URL as index page of
Page: Open batch un-enrollment design
Overview: As of now open batch is allowing user to do the enrollment , but there is no option for un-enrollment. Problem Statement: Allow user to do the un-enrollment from open batch , if batch is not closed or user haven't completed it. Proposed So
Page: Open for enrollment course batch test to supporting 100K Participant :
This documents is about the POC done on limitation of course batch. By term " limitation of course batch" here we mean how many participants can enroll in an open-batch. We only considered the limitation for storing and retrieving data from a course batc
Page: OpenRAP 2.0 - Architecture
Page: Operation
Page: Optimize docker image for Sunbird LMS service
Overview The current size of docker image of sunbird-lms service is approximately 1.16-1.17GB, But the compressed JAR of learnin-service having max size 250MB approx . We have to find the approach to optimize the docker image .This can be done by removin
Page: Organisation/User Configuration
Problem statement: As of now organisation upload sample file is static file , so changes for any attributes required changes in portal as well. We need to make sample file generation as dynamic. The reason behind making file generation dynamic is , diffe
Page: OTP API Throttling
Overview We need to restrict number of OTP message generated for particular e-mail or mobile. Purpose is simply to avoid misuse through Approach 1 Create one table, otp_throttling with columns (type, key, count) Each time generate OTP is called: Check if
Page: Ownership of Aggregate content (course, collection, book)
Introduction This wiki explains the design and implementation to provide attributions to the entities to whom it belongs to. Background When a content is created it has three metadata properties which point to the entities involved in creating the content

P

Page: P2: Telemetry 'Interact' data for Library/Resources/Courses tab
Background In Sunbird for a logged in user, when the user Clicks on 'Library tab', as of now only the 'Impression' data is generated, the requirement is to generate the telemetry for click ('INTERACT') on Library and Course tabs Proposed Solution INTERACT
Page: Page Assemble Api
Problem Statement : AS page api is constructed with list of sections. So before creating page user need to first create sections and then associate those sections with page. As of now all page api is public , so without any key it can be acc
Page: Page Assemble API For ordering the Courses
Once LMS is deployed, please follow below steps. Please note, the below curls are pointing to dev env Run Neo4jElasticSearchSyncTool jenkins job with below settings -> command: syncbatch -> parameters: --objectType batch-detail-update -> to update all cou
Page: Page Management
Design for Page Management.
Page: Partial Cassandra Writes
Overview This document contains observation on Batch execution with different configuration for partial writes. Tests and Observations For testing different scenarios keyspace and table created CREATE KEYSPACE test WITH replication = {'class':'SimpleStrat
Page: Platform Components
Page: Player iframe integration - List of events and Data
Introduction: Player integration in sunbird-portal data exchange and telemetry log using window.postMessage() and window.addEventListener() Problem statement: As per the web standards, the communication between iframe and window should be done via post me
Page: Players Mandatory & optional configuration
Introduction Currently, to play the contents we need to pass all the config data to the player. In this config there are some mandatory and options fields. This wiki explains those mandatory and optional fields. PDF player configuration The following conf
Page: Portal : Form Configuration Object
Schema definition Schema { "title": "Portal Form configuration schema - Example - Home page", "description": "The schema comprises the entire JSON document for Home page and associated sections", "type": "object", "properties": { "index": { "type": "integ
Page: Portal config source setup - Design
Story link : Existing Solution In the existing config service integrations of portal by default config service was set as primary config source by default and it will fallback to environment variables configuration in any of the following cases: if the e
Page: Portal telemetry events
Page: Portrait & landscape mode of player
Introduction Players should render in portrait and landscape mode both and this functionality should be able to verify in web portal. Background: Currently we are verifying this portrait and landscape mode in mobile devices only. There is no such function
Page: Postman environment variables
Link docs.google.com/spreadsheets/… https://docs.google.com/spreadsheets/d/1EMHyzgYL8NSvlv8DePZyn8pCgpBLoiHbxJx_bqetSc0/edit#gid=342081003 Date Aug 24, 2022 https://docs.google.com/spreadsheets/d/1EMHyzgYL8NSvlv8DePZyn8pCgpBLoiHbxJx_bqetSc0/edit#gid=34208
Page: PR Build
Whenever there is any pr request on any of the version branch, this build will be triggered. that particular pr changes will be built and it will be deployed to pr site Site generation process Pull pr code pull theme code merge code as per the Jekyll gene
Page: Product requirements
Page: Profiles Switching
Introduction: This document describes the design approach of creating and switching of Managed User’s account Background: Jira Issue: https://project-sunbird.atlassian.net/browse/SH-68 https://project-sunbird.atlassian.net/browse/SH-68 https://project-sun
Page: Program Configuration
Creation API curl --location --request POST 'https://dev.sunbirded.org/plugin/program/v1/create' \ --header 'Content-Type: application/json' \ --data-raw '{ "request": { "config": { "_comments": "", "loginReqired": true, "framework": "NCFCOPY", "roles": [
Page: Program list API
Overview This document is to provide information about the program list API’s request and response. API Spec A. Programs excluding org nominations [All projects] - contrib admin POST: program/v1/list { "request": { "filters": { "nomination":{ "organisatio
Page: Program-service: wrapper API for open-saber to reduce API calls
Overview This document is to provide information about the user list API’s request and response. Problem To get the user profile details currently three API’s getting called First API calls to get the organization open-saber id by Diksha organization id.
Page: Programs portal: Architecture
Programs portal is to launch the programs using programs configuration. Programs Configuration: Architecture diagram: https://drive.google.com/file/d/1mZNG8UkX3IeEnVqLiKaSZbIUrnx8vGFn/view https://drive.google.com/file/d/1mZNG8UkX3IeEnVqLiKaSZbIUrnx8vGFn
Page: Project plans
Page: Project task report blueprint
Page: Proxy Server
A Nginx proxy will be needed. Wildcard DNS pointing to the proxy server will be needed Reason for proxying sunbird.org http://sunbird.org (Marketing website) - We can set Permanent rewrite URL with HTTP status 301 302 from sunbird.org http://sunbird.org t

Q

Page: QR Code Specifications
Size of the QR Code is determined by: Length of the data to be encoded Error correction level (L, M, Q, H) Pixels per block Margin (White space around QR code) Following options can be provided to the user w.r.t the text embedded in the QR code image Text
Page: QR Image Generation
QR Code Specifications Image Generation API Samza Job
Page: Question list API spec
POST /question/v1/list Request Body { "request": { "search": { "identifier": string[] } } } Response 200 { "id": "api.question.list", "ver": "1.0", "ts": "2021-02-02T19:28:24ZZ", "params": { "resmsgid": "8b75d237-1028-4e38-a94a-9ff4ca784d76", "msgid": nul
Page: Question-set telemetry ASSESS event
This document details about telemetry assess event structure for the different type of questions(like MCA, MTF, FTB, Sequence, Reorder etc..) Question Types Find the below list of question types and its sample telemetry ASSESS event data. 1. MCQ Question
Page: QUML Player integration with containers design
Story Link: Lazy loading of questions in QUML Player https://project-sunbird.atlassian.net/browse/SB-22404 Problem statement: QUML player should be capable of playing question sets on its own and since each question set may contain hundreds of question lo
Page: QuML Player Refactor
Objective Refactoring the player to extract the business logic from the Rendering of the Player so that it becomes reusable in other services. Background The current QuML Player is an Angular App that outputs a web component. A lot of the functionalities

R

Page: Readalong and Wordinfo with richtext.
Introduction: This wiki page explains the design and implementation of Read-along and Word-info to add in richtext while creating new rich text and existing richtext. Background: Currently users are only allowed to add readalong and wordinfo with plain te
Page: Recently Viewed Content Listing
Overview: When user plays any content should list on Recently Viewed list. Problem statement: When user plays any content from book then is listing in Recently Viewed list, but when user plays any content by clicking next and previous from player, its n
Page: Redis Cache Supportability API changes
Background To scale content and hierarchy consumptions, metadata which is fetched as part of the response is stored in Redis cache. In order to support data reset in redis and also to compare neo4j and redis, small adhocs are added to existing APIs. API c
Page: Reduce content consumption load time for Question Set
Presently, any content having a question set load Katex https://ckeditor.com/cke4/addon/katex library on its consumption. in the platform, Katex is CKEditor add-ons which enables math rendering. Even if a question is not using math, the platform still bun
Page: Refactorization: Reason for Issues QuestionSet and question structure
Introduction We have already covered the existing structural issues in another DOCUMENT https://project-sunbird.atlassian.net/wiki/spaces/DPT/pages/794558518, This document gives the details of Reasons for each issue 1. QuestionSet 1.1 Redundant Properti
Page: Relational Metadata feature Release Notes
Relational metadata can be added in the collection hierarchy to define the relation between an asset (content/collection) and the folder to which it is linked. It is important to note that Relational metadata attributes have no correlation to the attribut
Page: Release 1.14 Retrospective
so Date Team Participants Asha Vade Background Release 1.14 Retrospective. The topic for this retrospective is - Planning/Estimation and effective usage of JIRA as a tool to enable. Appreciations and Acknowledgements Collective effort across Dev, Testin
Page: Reliable Event Driven Learner Service Architecture
Overview Learner Service provides APIs related to resources such as Organisations, Users (i.e. learner), Course Batches, Locations, Badges, Pages etc. For performance reasons Learner Services writes data to Cassandra which is synched in the background to
Page: Remove GSON dependency from Sunbird Platform
Overview Remove GSON dependency from Sunbird Platform. Instead, use Jackson which is used at several places already within Sunbird. The main motivation for this task is to minimize the dependency between Sunbird and Open Saber Client (which uses gson and
Page: Replace usage of elasticsearch with cassandra for enrolments - Implementation Design
Overview With the current data we have for courses enrolments, the updates and reads from elastic search is becoming a costly operation in terms of scalability. This could be resolved by reading data from cassandra only as it is the primary datastore. The
Page: Reports@Scale
Introduction This wiki details the architecture of enabling reporting framework to operate at scale. It discusses the high level design problems to be solved and introduces the proposed architecture for the same. Key Design Problems TBA Reporting Archite
Page: Repos
sunbird.org-web - this will contain the marketing website ( sunbird.org ) sunbird.org-docs - this will contain the docs website ( docs.sunbird.org ) Following are the proposed branches for the Docs repo - master default branch working version docs md file
Page: Request traceability across multiple sub-systems
Introduction: This document describes how to trace/map the request across multiple sub-systems involved in process of serving/showing the details. Background: Jira Issue https://project-sunbird.atlassian.net/browse/SB-17028 https://project-sunbird.atlassi
Page: Reserve release dialCode
Problem Statement: Solution: Reserve_Release_dialCode.png
Page: Restricting Metadata as per Definition
Overview The metadata properties/relations created or updated are validated with their respective definition schema. Any property which is not part of the definition has to be restricted. Problem Statement As per the current implementation, properties whi
Page: Retrospectives
Page: Richtext WYSIWYG Design
Introduction The richtext element created on content-editor should be rendered same in content-renderer. Background Reference - Right now Richtext plugin doesn't support WYSIWYG in device as well as portal, preview seen on device is not same as what user
Page: Role based access control (RBAC)
Problem statement: As of now Sunbird api call is doing user authentication check but not authorization. Any authenticated user can preform any actions except private api call. Now we need to think to add RBAC into sunbird, so that all
Page: Rolling back
To roll back one will have to rebuild old stable commit and approve same to deploy on prod.
Page: Root Org Content Management
Background By default, Sunbird's content store is EkStep's global content repository. All content residing in the global content repository is licensed under Creative Commons CCBY license The content repository is shared by all Sunbird instances. Each Sun

S

Page: Samza Job
Kafka Topic QR code image generation request will be published and consumed from a separate kafka topic ENV.qrimage.request Message Format { "eid": "BE_QR_IMAGE_GENERATOR", "processId": "3b369c35-2b79-40ec-a3e0-3d0306fc0388", "objectId":"contentid/channel
Page: Saving Course batch details inside user
Problem statement: In course batch stats , we need to do different data sorting and that can be achieve if all data save same place. That's why user course batch some data we are storing inside user index. Ticket ref: SB-10240 Changes required for SB
Page: SB-20865: Migrate certificate data from Cassandra to Blog storage for already issue certificate
Overview With cert-registry and related changes done with ticket/SB-20811 https://project-sunbird.atlassian.net/browse/SB-20811, migration of existing certificate is required. Steps for data migration Between dates, d1 and d2, get the list of certificates
Page: SB-26582 Optional Material in a course
Requirement Courses need to support optional material that do not contribute to overall progress of the course , or to the overall score computation for the course. Jira Id : ED Story: Discussion Thread : https://github.com/orgs/Sunbird-Ed/discussions/34#
Page: SB-29845: Paging on User Enrollment List
Overview: Currently, user enrollment list API returns a list of fixed size 1000. We are not able to get enrollments records with user enrollments when greater than 1000 . We will need to introduce paging mechanism. Pr-requisites: User is a logged in user
Page: SB-29870: Lag on User Enrollment List sorting by lastAccessdate on the continue learning section
Overview: Currently Lag on sorting by lastAccessdate on the continue learning section appears in the portal. The reason behind it is that the enrollment list API uses default cache. This cache only updates with the same API when enrollment data is empty.
Page: SB-Notification library
Background The notification feature is being used by both mobile and the portal. The same boilerplate code is there in both, so to reduce the boilerplate code “sb-notification“ library is created. Implementation export interface SbNotificationService { ge
Page: Schema Definition - Version support
Problem Definition: This document is written to propose a design to better manage the definition updates that are created, used and removed during the lifecycle of a schemas. Background & Problem Statement: In KP, the intention is to keep the published de
Page: Schema Implementation Design
Problem Definition: As part of Knowledge Platform 2.0, definition schema should give provision of implementing version support in future. Design: schema design.png Definition Data Model: IL_UNIQUE_ID - DEFINITION_NODE_Content description - Schema definiti
Page: Scores in Group aggregate - SC-2218
Overview This document details the design options for introducing scores as part of group aggregate API and reports. Design Currently, only trackable collections and their progress are stored in user_activity_agg table. Below is the flow used to show scor
Page: SCSS Implementation
Google Doc ( Contains same ) - https://docs.google.com/document/d/1te1B983SdMEkN2MPh__WqhU0kaNLR3D4OAFXONcZGBo/edit# https://docs.google.com/document/d/1te1B983SdMEkN2MPh__WqhU0kaNLR3D4OAFXONcZGBo/edit JIRA Card - https://project-sunbird.atlassian.net/br
Page: Search Filter
Background: BMGS are the request of search filter for searching, filtering and sorting the response data. Now remove the BMGS keys and use category1, category2, category3 and category4. Jira ticket: Problem Statement : How many filter properties should di
Page: Secure Discussion Forum API's
Introduction This document describes the key design problem statement and probable solutions for securing discussion forum api’s. Background As of now, any portal logged in member can make the discussions in any group, Once he have portal session, By hitt
Page: Securing Profiles Switching
Introduction: This document describes the design approach for securing of switching of Managed User’s account Background: Jira Issue: https://project-sunbird.atlassian.net/browse/SH-95 https://project-sunbird.atlassian.net/browse/SH-95 Epic: https://proje
Page: Self sign up workflow
Problem statement: Sunbird system will allow user on-boarding with following ways: Self sign up Google plus login State login Problem will have during user profile merging. Migrating self sign up user profile with Google plus login or state l
Page: Separation of LMS Service
Problem Statement Till release 2.0.0, LMS service was used for all the flows i.e. user, org, course batch, toc etc. There is a need to separate the LMS service to be used for flows related to course, batch, pages, toc etc. Solution Approach To achieve the
Page: Shared links
Tip: share a link from anywhere by dragging this button → to your browser bookmarks toolbar. Once added to your toolbar, click it to share links with your team.
Page: Show maintenance page on Sunbird
Background When a deployment is in progress, we want to prevent users from using the system, and instead show them a maintenance message. However while the maintenance is on, the development team should be able to access Sunbird. The following need to b
Page: Sign Up flow telemetry data
Use cases for signup flow : 1.when signup form is loading { "eid": "START", "ets": 1589873004306, "ver": "3.0", "mid": "START:cd239af7f09bbf692b93e0bcd88a1dbf", "actor": { "id": "db707c34785f86f30979eef0993e5991", "type": "User" }, "context": { "channel":
Page: Sign Up/Sign In using Google OAuth for Mobile/Portal
Overview: Currently user can access Sunbird either by using account created by admin or user should register manual by entering basic information and then verifying their Mobile No/Email Id. This is tedious and time consuming process. Registering user, v
Page: Signup Telemetry data
Background For Signup and google signin flow telemetry events need to be generated and this documentation consists all the telemetry events for signup and google sigin flow. Assumptions : As all the below telemetry events are pre login events ,actor is n
Page: Single Sign On
Enable user account updates as part of SSO
Page: Speed up the auth token generation process for Sunbird Adopters
Problem Speed up the auth token generation process for Sunbird Adopters Solution API's to the onboard consumer and generates the token Use the adminutil container that will expose the Kong admin onboard consumer API outside. Protect this API by auth token
Page: Splitting the Redis Updater samza job
Purpose: Currently, the Redis Updater job updates all three: User Cache, Content Cache and Dialcode Cache. The events it processes are: AUDIT - It updates the user signin type and role type into the User Cache. learning graph events - It updates the
Page: State SSO Login
Overview : Sunbird system is allowing user to login with following ways. 1. General login : In this approach user first need to register with sunbird then he/she can use their email/phone/username along with password to login. 2. Go
Page: Static data - JSON format
Problem Statement Define a JSON format to store the static data to be displayed in Dashboard Metrics Approach 1 - Single JSON file for all static data configuration { "metricsSummary": { "metricsAsOnYear": "2019", "onboardSummary": { "stateCount": 26 }, "
Page: Sunbird - Cloud Agnostic Data
Introduction This wiki explains the current format of the data which refers to the could object and the proposed design to make it cloud agnostic. Background & Problem Statement The sunbird platform uses cloud storage in various scenarios to save and acce
Page: Sunbird Backend CSP Changes For Generalisation
Introduction Sunbird Building Blocks supports multiple could service providers. The cloud storage-specific code is interfaced and has multiple implementations to support the commonly used CSPs. The implementation of all the supported CSPs are packaged wit
Page: Sunbird CoKreat
Sunbird CoKreat design docs
Page: Sunbird CSP Addition of new Service File for S3 storage
Introduction: The Manage Learn Service interacts with various components of the client-cloud-service npm package for diverse cloud interactions in the application. There is a need to specify that the Manage Learn Service will be deployed in the NIC cloud,
Page: Sunbird desktop app build automation
Background To build the desktop app to supported operating systems in the supported format in 32bit and 64bit we need Windows 32bit and 64bit systems with build setup which includes softwares Node js, Editor and Git and same need to be installed in Linu
Page: Sunbird desktop app updates
Introduction This wiki details the different ways to provide the app updates to the end-user and there pros and cons and finally conclude on the approach Approach 1 - New installer In this approach, we will provide the latest version of the app to the end
Page: Sunbird Elasticsearch migration to multi index
Problem Statement Since multiple types are deprecated for Elasticsearch 6.x, There is no way to create a new index with multiple type other than migration from older version. This creates challenges as below. New adopters cannot have sunbird in it's curre
Page: Sunbird Email Notification Service
Overview: Sunbird email notification service is built to send an email. Any other service can call this service to notify the user.AS of now email service is configured by installation, but now we need to channel based email configuration. Problem Stat
Page: Sunbird Icons
Sunbird has its own Icon fonts. PFA icons Sunbird Icons family current has - workspace icons.png One can use above mentioned icons by simply adding following classes - sb-icon-video sb-icon-pdf sb-icon-html sb-icon-textbook sb-icon-collection sb-icon-aud
Page: Sunbird inQuiry
This is the placeholder for all the design wikis for the inQuiry building block.
Page: Sunbird Knowlg
This section contains all the design documents for the knowLG building block KP documentations
Page: Sunbird Lern - Design
This is the placeholder for grouping all the design wikis. Below is the list of design wikis under brainstorming or reviewed and concluded. <TODO - The list to be furnished here>
Page: Sunbird Obsrv
Projects, Plans and Assets STARTER PACK Goal : Permit potential adopters to Understand, Experience, and Try out the building block and its capabilities, so as to allow them to make a well informed decision about BB adoption. Assets to be made available a
Page: Sunbird offline desktop application - Telemetry events spec
Proposed Solution for offline desktop telemetry events Use cases for plugin installation flow : { "eid": "START", "context": { "channel": "b00bc992ef25f1a9a8d63291e20efc8d", "pdata": { "id": "dev.sunbird.offline", "ver": "2.0.0", "pid": "sunbird-offline"
Page: Sunbird Portal :: CSP implementation
Context Sunbird client cloud service is multi-cloud npm toolkit that provides access across cloud services while giving you full control to use cloud-specific features. Plugin allows users to provision their infrastructure in any cloud provider (Currently
Page: Sunbird Portal :: Resource Bundle Externalisation
Introduction Background Currently, Sunbird has a high degree of interdependence with assets (platform specific) and language translation JSONs1 which are being served through filesystem. This tightly coupled modules approach make it difficult for Understa
Page: Sunbird RC QR code backward compatibility support for SunbirdEd
Introduction: Sunbird Lern BB is migrating to use Sunbird RC for generating & issuing e-credentials in its use cases (e.g.: course completion certificate). When a printable version of the certificate (PDF or SVG) is generated by Sunbird RC, the QR code in
Page: Sunbird RC QR code generation
Introduction This document describes implementation of sunbird rc qr code generation based on the wiki. Problem Statement To support the backward compatibility for qr code generation. Prerequisite Add the below data in /sunbird-rc-core/services/certificat
Page: Sunbird Sdk
Sunbird Mobile Sdk serves as the single module for all the business logic of sunbird mobile application. It's primary functionality is designed to satisfy the business needs of the SunbirdEd mobile app; but this library can easily integrated with any othe
Page: sunbird-lms-service will directly fetch SSO_PUBLICKEY from KeyCloakServer and use it for authetication and other purpose
Problem Statement The Current problem with Sunbird is any one who is trying to install Sunbird server have to get sunbird_sso_publickey manually from keycloak server and put it to config file of sunbird server installation after completion of step 1 of se
Page: SunbirdEd OpenRAP Plugin - Design
Component View openrap-sunbirded-plugin-Page-2.png Folder Structure <To be done> Database Schema Content { document: { "_id": "string", // content id "previewUrl": "string", "keywords": "string[]", "subject": "string", "channel": "string", "downloadUrl":
Page: Support for Video as Asset
Introduction This wiki explains the provisioning of video (mp4) file as asset. Background Currently there is a provision for uploading image and other types of files as an asset. But only for image we enrich metadata using imageTagging job. For video asse
Page: Supportability
Background Owing to the difficulty of supporting pure offline machines at scale through a support desk, the goal is to improve the desktop app setup and recovery mechanisms so that they are self-manageable. The first step in this direction is to provide
Page: Supporting startsWith search for learning platform
Overview As part of ticket SB-8173 - user search result is being enhanced, and following new filters will get added: User Type/ Medium/ Class/ Subject District/ Block/ School/ Role This will require us to enhance the searching capability in learning platf
Page: Sync plugin for Telemetry, Course Progress, Assessment
Problem Statement In the existing app, there are several sync processes running independently, for instance. All these sync events works on single thread which decreases the current app’s performance. Telemetry , course progress and course assessment has
Page: Synchronisation of timestamp param(ets) of telemetry event data with backend for Sunbird Editors and Player
Background With refercence to Point #13 of We are sending timestamp parameter along with any telemetry event data(like START,INTERACT,IMPRESSION) to log the time of occurrence of that particular event.But if the client device time is not valid or its ol
Page: Syncing Desktop App error logs to Sunbird platform
Overview: Currently, Deskstop App has a logging system that stores the log in the file system. We can debug the errors locally by accessing the log files. Problem statement: Remote analysis of the error logs is not possible with the current setup. It
Page: Syncing device profile changes to Redis
Overview: The current cache time for a device profile entry in Redis is 24 hours, which is updated by the Samza job by reading from the device profile Cassandra DB and adding the device details to telemetry. The same value is read from Redis instead of th
Page: System Initialisation
Problem Statement 1 Current problem with Sunbird is any one can create a root-organisation, sub-organisation, user, add user to an existing organisation etc. Further, there is a cyclic problem at system installation time with regard to user and organisat
Page: System Initialization
Background & Existing Solution In the existing Sunbird installation we face a 'user-org' circular dependency issue as described in At present we create a default rootOrg manually and set it to sunbird env (key : sunbird_default_channel) with the help of

T

Page: T&C - with ‘accept’ check-box
Target release 1.13 Epic Document status Document owner Anil Gupta Background All users logging in to Diksha for the very first time need to be shown a pop up that gets them to accept Diksha T&C. The window will display the latest version of the Diksha T&
Page: Tabular Design Doc
Title tabular Selector <sb-grid> Use Case To represent data in tabular format to read data easily. To make it more effective it is important to have filters for them that will help them filter out the data that they want to focus on. Description See filte
Page: Tagging Content with multiple subjects, mediums and grades
We have a challenge from the mobile app i.e. when we enable tagging content with multiple subjects, mediums and grades the apps will crash because it is assuming the data type. After the discussion, we will approach this problem as below. Mobile App and P
Page: Taxonomy editor
Problem Statement: In Sunbird system classification of terms and identify the relations (association) between terms belongs to different categories and show that in visual representation help user to creation and publishing of framework with categories. E
Page: Tech Design
Page: Telemetry
Page: Telemetry Changes done on dial page
As per sunbird release 2.5.0 we had done some changes for the telemetry that gets generated on the dial page The telemetry flow that are generated on the dial page are as follows 1.Raise an Impression event on scan of the QR code and Landing into the dial
Page: Telemetry Changes of 2.6.0
District Mapping (SC-1373) Jira ID - User location-DeviceLocation Telemetry - Will be triggered when the user clicks submits his location. { "edata": { "type": "location-changed/location-unchanged", "subtype": "state_dist_changed/state_changed/dist_chan
Page: Telemetry Event Validation
Jira Link : https://project-sunbird.atlassian.net/browse/SB-10786 https://project-sunbird.atlassian.net/browse/SB-10786 Overview: Need to validate all the telemetry events of LMS service. Points to be validate: 1) Following headers will be sent in all AP
Page: Telemetry V3.1 Specifications
Change Log The latest version of telemetry event contains device profile, user profile, content model and dialcode metadata added from pipeline jobs. Telemetry V3.1 Envelope { // About the event "eid": , // Required. "ets": , // Required. Epoch timestamp
Page: Terms & Conditions API
Overview Every user need to Accept the terms and conditions in order to access the portal: Case 1: Existing user, will be flagged with terms & conditions flag will be set to false. Case 2: Whenever a new user registers his terms & conditions flag will be
Page: Textbook as a Map -- for a fluid experience
(Parking some thoughts on this metaphor here). Consider a Textbook as a map (as in a geographic map) for a moment. Every learning services is then actually a location-based, location-aware Service. For example, In a (Google) Map, we can ask for Find rest
Page: The Design Approach for Bundle Katex library only if Math formula is used in the question.
Bundling Katex Library only when Math Formula is used in Question. Existing Behavior: Currently, we are generating the QuestionSet ECML by using BasePlugin 'toECML' function, So we were bundling every Dependency by comparing String of QuestionBody.data. A
Page: The design approach for DIKSHA License Support in the content metadata plugin
The design approach for Diksha Licensing Approach 1: Plugin base controller [ metadata form ] will expect the license form element from the metadata API and build the forms accordingly. It will be having the same behavior as '''BOARD/SYLLABUS Get the lice
Page: theme branch
This branch will contain the Jekyll code HTML layouts for pages and sidebars etc plugins Purpose of maintaining it separately is that code is maintained at one place and consumed with all branches during the build. Commit id will be inserted in the foote
Page: Theming
Following variables are there as of now for theming stuff - $bg-body: #fdfdfd; $font-stack: 'Noto Sans', sans-serif; $primary-color: #196d7f; $primary-gradient: linear-gradient(to left, #2971a5, #0d9276); $primary-border: 0.5px solid #dedede; $secondary-
Page: TNC flow
Overview: Currently, the system enforces the acceptance of T&C * after the user registers (submits all their information), and logs in. This acceptance of T&C has to happen before/ alongside the submission of the users information (on the registration for
Page: To remove build dependency between Portal and Editor(s)
Introduction: This document is an approach note to remove the build dependency between the sunbird portal and Sunbird Content Editors. This document will describe the design approach to decouple the Portal and Editor(s) build process. Background: Presentl
Page: toc branch
TOC branch will contain index.html widgets.json robots.txt css/ js/ images/ Widgets Types Version Switcher ( versions dropdown ) Notification - latest version available on prior versions. Widget working Widgets will consume data from the widgets.json fil
Page: TOC Build
Whenever toc branch is updated this build pipeline will get triggered. TOC.png Related Jira Issue -
Page: Trace ability of request across subsystems
Problem Statement There should be a way to filter a user request across subsystem. Currently there is no consistent and unified way to filter a particular request across subsystem. This makes it difficult to trace a particular request once it leaves sunbi
Page: Trackable Collections - Exhaust
Introduction This wiki page details the various exhaust files available as part of the trackable collections and their respective format/structure & file nomenclature. Following are the available exhausts for a trackable collection: Progress Exhaust User
Page: Tracking Service - API - Implementation Design
This Document explains: Issues with current course API implementations - duplicated metrics in multiple tables Enhancements to all course APIs- creating new API from existing API, redesign the tables schema Current Design: TrackingService-CurrentDesign.jp
Page: Triggering background tasks manually
Overview There are set of tasks that runs based on schedule within sun-bird platform. This are used for checking resuming the process that may have been interrupted. Currently there are few scheduled tasks that are scheduled through quartz. While there is
Page: Troubleshooting articles

U

Page: UI related stuff
Page: Update Hierarchy - Partial Hierarchy Update APIs
Background For any collection contents, to add or remove a leaf node from the hierarchy, the entire hierarchy needs to sent as part of update hierarchy request. This requires a huge amount data transfer over the network as the request is proportionate to
Page: Update Profile fields - E-Mail or Phone
Overview Currently user is not allowed to update e-mail or phone details from profile page. This design talks about, how user can change his existing e-mail or phone number. Solution Once user is logged in he will be able to see the edit button against e-
Page: Update the DIAL code context in content-service
Introduction This document describes how to update the DIAL code context in content-service. Background At present, the dial-service is not storing any information/context about the DIAL code linked to what(ex Textbook, Textbook unit, etc). So if we want
Page: Update ToC in Collection editor attributes by excel upload
Background The textbook creator should be able to update the existing Text book unit attributes in the TOC by uploading the excel (CSV) file. Key design problems On click of ' Update TOC' button user will be uploading the CSV file with updated Text book
Page: Update user profile
Background: Jira ticket: Problem Statement : profile should be update by different keys instead of BMGS. how to migrate DB and upgrade local DB insted of BMGS? Update profile request BMGS to category1, category2, category3 and category4, we are facing som
Page: Update user profile fields impact
Overview As of now, we allow to update the user profile fields like e-mail and phone from update user API. But, as part of the sign-up implementation, users will be required to verify the data before being registered into the sunbird platform. So, current
Page: Updating User's Root Organisation
Overview As, most of the users will be doing self sign-up into the sunbird platform, all users will by default belong to default organisation/channel, i.e. Custodian channel. Currently, we do not allow to change the user's root organisation from update us
Page: Upgrade Node version in portal
Preferred node version - "node": "12.16.1", "npm": "6.13.4" Clear your node cache - npm cache clean --force Delete node_modules from client and app folder and have fresh npm i - rm -rf node_modules/ // for client and app folders followed by npm install If
Page: Upload certificate: Using Asset API
Introduction: This document describes how to upload certificate & use asset API’s for certificate Background: Jira Issue https://project-sunbird.atlassian.net/browse/SH-1228? https://project-sunbird.atlassian.net/browse/SH-1228? Problem Statement: How to
Page: Upload ToC from CSV
Overview : Provision for Textbook Creator to upload a csv in pre-defined format and system should be able to generate ToC based on that. Problem Statement: Process of creation of Textbook ToC (Table of Content) throug
Page: User
Page: User enrolment progress sync - SB-23493
Overview This document provides API spec for sync API and event structure to be process by flink job to sync the progress of a given enrolment. Design Below diagram depicts the design proposed for the enrolment sync process. enrolment_sync.png Enrolment S
Page: User onboarding for crowdsourcing
​Introduction: This document describes the design approach of crowdsourcing user onboarding using programs link. Background: Jira Issue ​SB-16608: User Onboarding for ContributionOpen https://project-sunbird.atlassian.net/browse/SB-16608 Problem Statement
Page: User Search with email or phone
Problem statement Currently search uses filters which are joined with AND ('&&') operator by default. Hence It is not possible to search with OR ('||') condition. Hence to search a user by either an email or phone number, It requires to make two differen
Page: User sign-up Telemetry events
Overview As part of the user self-sign up - we are verifying the users validity through OTP. As a result - 2 end-points will be introduced, i.e. Generate OTP and Verify OTP. We need to capture this events as part of the telemetry. Here are the various ev
Page: Using CSS variables in the design system
Background Since we are using ng2-semantic UI In the portal some of the components are dynamically generated. we can't change the style of dynamically generated HTML since there is view encapsulation. So we are using ::ng-deep to add styles to dynamical

V

Page: V1 Plugins in Ekstep
This document contains details about the older v1 plugins available in ekstep. It provides information about how to Create and upload plugins. Use the plugins in ekstep portal. Repo for Contributed plugins https://github.com/ekstep/Contributed-Plugins/tre
Page: V1 Templates in Ekstep
This document contains details about the older v1 templates available in ekstep. It provides information about how to Create and upload templates. Create questions(MCQ, FTB and MTF) in ekstep portal. How to debug template issues. Types of templates MCQ FT
Page: Verification of Migration Steps
Neo4J migration verification queries: Run the below queries before and after the migration and verify the counts. Migration order Type Query Before migration Final migrationVersion Comment 1 All the nodes Match(n:domain) return count(n); 2 All the node ne
Page: Version branches
Version branch = Content md files, Sidebar & TOC YAML files YAML files - it will provide details for that specific version toc.yaml - title,url and image of each sections/categories sidebar.yaml Related JIRA Issues -
Page: Version build
Whenever there is any commit on any of the version branch, this build will be triggered. that particular branch will be built and it will be deployed to its own folder on qa After deploying to qa it will hold for approval, if approved it will deploy to pr
Page: Video streaming
Introduction: This wiki explains the design and implementation to streaming of video contents. Background: With the help of videojs(v7.07) https://github.com/videojs/video.js user can able to stream the content rather than making user to wait until video
Page: View course stats
Problem Statement 1 As of now we are showing all records , once we have more data api call , page loading will take more time, so we need to introduce pagination here Previous Implementation GET /v1/dashboard/progress/course/:batchId?Period=LAST7/LAST14
Page: Viewer Service API(s) Specification
Introduction: This wiki give the details about Viewer Service API(s) Spec design details. Base Request Spec: Authorization and x-authenticated-user-token are mandatory headers in every request UserId will be captured using the user-token from headers for
Page: Vocabulary Design Brainstorm
Introduction Different Contents can be created with multiple terms with the same meaning. As part of search API, we should provide contents which satisfies the filter criteria as well as the relevant content which are relatively nearer to the search crite
Page: Vocabulary, FrameWork, and Taxonomy Equivalence Design
Background A FrameWork is a hierarchical representation of Concepts (in the context of education, "addition of two single digit numbers" is a Concept). Boards can use a Framework to represent their curriculum in a machine readable form. From a structural

W

X

Y

Page: Youtube in ECML
Introduction This page explains the design and implementation to make able to add YouTube videos in between slides while creating content. Background When a user is trying to Add video, the pop up that contains two tabs – Library and Google Drive shows u
Page: Youtube in ECML content
Introduction This wiki explains the design and implementation to make able to add YouTube videos in between slides while creating content. Background With the help of the video plugin org.ekstep.video-1.x, a content creator is made able to add/upload vide

Z

!@#$