Introduction

Although content creation and curation capability exists in Sunbird platform, it is not recommended to open content creation in Sunbird to a large number of people. This is mainly to avoid irrelevant and large quantity of content in the platform’s content repository which is also serving the users consuming the content. It may lead to sub-optimal experience for users due to low quality of content or slowness in serving the content.

Thus, there is a need for a new platform which addresses the above concerns and provide the following capabilities:

This document details the architecture of this new platform, named as DOCK platform, its key components and entities. Following are the key premises of the DOCK platform architecture:

Terminology:

Key Interactions (use cases)

Logical View

DOCK Portal

DOCK Portal is the web interface for accessing the DOCK platform functionality. This portal uses micro-services of Sunbird & DOCK platform to create a unified experience for the users. It uses the following Sunbird platform services:

Programs Service

This is a new micro-service which provides services for creating programs, managing nominations and assigning users & roles for a program.

Contributor Registry

Contributor registry uses OpenSaber for managing contribution orgs, contribution org users and individual contributor profiles. OpenSaber instance is configured with schemas for the entities - contributor org, contributor users and user-org association.

Though all contributors on DOCK platform are created as users in the Sunbird platform, this registry is required to store additional data about the contributors. This additional data comprises of contributor org or user preferences, contribution & org associations, summary data like content contribution counts, rewards & recognition data.

Certificate Registry

An instance of Sunbird certificate registry is deployed within DOCK platform for issuing and storing digital certificates issued to contribution orgs and users. The certificate reference is stored within the contribution registry against the contribution org or user profile.

Content Repository

An instance of Sunbird content repository is deployed in DOCK platform for managing all types of content (collection, resources, questions & question sets). This repository is configured with a customised schema for content to store additional attributes related to contribution.

Telemetry & Data

Sunbird telemetry service and analytics module is used for storing and processing the telemetry generated by DOCK portal and other micro-services in the DOCK platform. Instead of the complete pipeline, telemetry service in DOCK platform is configured to directly push the telemetry events to Druid. In addition, this telemetry service also receives the SUMMARY events from Sunbird platform on a scheduled interval to update the content usage data in DOCK’s content repository.

Process View & Entities

Channel

Channel entity is used to store the details of the platform that is using DOCK platform for sourcing content. For example, DIKSHA and Shikshalokam will be two channels in the DOCK platform. There could be multiple sourcing orgs within each channel. All programs, collections & content created will be associated with the respective channel.

Sourcing Org

Sourcing Org is a tenant within the platform that is sourcing content on the DOCK platform. There is no separate entity created in DOCK platform for sourcing orgs. DOCK portal connects to the corresponding Sunbird instance to fetch the details of sourcing org and its users.

Contributor

Contributors are users who signup in DOCK platform for contributing content. All contributors signed up in DOCK platform will also automatically get access to the associated Sunbird platform and also, any user in the associated sunbird platform can also login to DOCK platform as contributor (even sourcing org users can login as contributors to the DOCK platform). Contributor registry manages the contribution profile of all the contributors.

Contributor Org

Contributors can create organisations in DOCK platform and contribute content as an organisation. These organisations are stored in the contribution registry of DOCK platform. DOCK platform provides the ability to manage users within a contributor org, i.e. add new users, assign roles, remove users, etc.

Program & Program Templates

Sourcing org admins can create programs to publish their needs. A program consists of basic information like name, description, etc; schedule of the program like nomination dates, contribution dates, etc; and scope of the program like the list of content types, list of collections, etc. Programs are created using program templates which can be created with pre-defined configuration for different types of programs like ETB sourcing program, TPD sourcing program, etc.

Program Nominations

Contributors can express interest, i.e. create a program nomination, to contribute content for a program. Contributors can create the program nomination as an individual or on behalf of the contributor org. While creating a nomination, contributor can select list of content types & collections in the program and optionally upload sample content. These details will be stored as part of the nomination. Sourcing org admins can review the nomination details and either accept/reject the nomination.

Content

Content entity is used to store the collections for which a program is created and the content contributed for programs. All content are associated with the program and channel for which they are created. Content entities also have their own publish lifecycle.

Certificates

These are digital certificates that are awarded to contributors or contributor orgs based on different criteria - like number of content contributed by them that is accepted by the sourcing org or the usage of content contributed by them. Certificates are a generic and can also be awarded to content or any other entity in the platform.

Deployment View

Content and Data copy

Data Model

Program

program_id

text

channel

text

config

JSON

default_roles

list of roles that assigned by default to all users

description

text

template_id

text

startdate

timestamp

enddate

timestamp

nomination_enddate

timestamp

image_path

text

name

text

rootorg_id

text

rootorg_name

text

slug

text

status

text - draft, live, closed, retired

content_types

list<text>

recognition_text

text

shortlisting_enddate

timestamp

content_submission_enddate

timestamp

roleMapping

{"reviewer": [user_ids],"contributor": [user_ids]},

Program Nominations

program_id

text

user_id

text

organisation_id

text

status

text - initiated, pending, approved, rejected

content_types

list<text>

collection_ids

list<text>

feedback

text

roleMapping

{"reviewer": [user_ids],"contributor": [user_ids]},

Program Certificates

program_id

text

certificate_criteria

JSON

certificate_template_id

text

issuer_details

JSON

certificate_name

text

certificate_desc

text

status

text - draft, published

Contributor User Schema

identifier

uuid

firstName

Mirrored from Sunbird

lastName

Mirrored from Sunbird

userId

Sunbird User Id

channel

Channel id

enrolledDate

certificates

list of certificates

totalContributedContent

totalAcceptedContent

description

website

contentTypes

board

medium

gradeLevel

subject

status

Contributor Org Schema

identifier

name

description

website

contentTypes

board

medium

gradeLevel

subject

totalContributedContent

totalAcceptedContent

createdBy

status

Contributor User-Org Association

userid

orgId

roles

admin, user

Channel Schema

Collection Schema

Content Schema

API Specification

Program APIs

Contributor Registry APIs

Telemetry Specification

Telemetry Envelope

Sourcing Pages

Contribution Pages

actor

id

user_id

user_id

type

USER

USER

context

channel

Sunbird_tenant_id

DOCK_Local_Channel

pdata

id

dev.dock.portal

dev.dock.portal

pid

sourcing-portal

creation-portal

ver

1.0.0

1.0.0

env

sourcing-portal

creation-portal

sid

portal_SID

portal_SID

did

deviceID

deviceID

cdata

type

Program_ID

Program_ID, Organisation_id

id

Program

Program, organisation