OTT Platform

Shravan C
4 min readNov 14, 2018

Having worked on OTT(over the top) platform for a quite a bit of time. Now have tried to develop an entirely new platform as a SaaS product. Also, have developed newsroom product entirely by my own have extensive knowledge of the content and its structure. To break down on the components and to build an open source software, came up with this:

  1. User Management System(Customer side)
  2. User Management System(CMS end, where content is created)
  3. List Management system
  4. Subscription Management system
  5. Role and Privilege Management System(CMS end)

I have chosen Ruby on Rails with Postgres. One advantage of Postgres is tables created can be namespaced. With apartment gem, it is very easy to segregate the different set of data separately and with ease and many different mechanisms to achieve the same. On each request, middleware will take care of switching it to the appropriate schema required, based on the configuration set with apartment gem. That is not covered in here, out of scope for this article.

Here it is planned to design to develop the platform with gems around it. Each component is a gem. In this way, we can opt in or opt out various different features. It becomes like a subscription-based feature.

Here to start with three different repository is created a. platform b. user_management c. list_management

Here platform is the base rails application where we plugin other gems.

Repository for user_management is https://github.com/shravanc/user_management and repository for list_management https://github.com/shravanc/list_management and finally the platform https://github.com/shravanc/platform

Platform is a API only OTT platform. APIs for the same can be downloaded from below links:

  1. List management link: https://www.getpostman.com/collections/40f153a4bced70b8f0f5
  2. User Management link: https://www.getpostman.com/collections/81a9674050d9d2276415

A guide to List Management System:

It goes this way:

create_applications →create_items →associate_items →create_lists →create_layouts →associate_layouts_for_lists →create_medias(image/video/audio/gif) →associate_media_for_lists_or_items →associate_items_or_lists_to_lists

In details:

Create Applications:

Every website will have at least one application i.e. a website. It can extend to have Android application, ios application, Roku application, apple TV application, Android TV application, Wap application etc. Each application is created before preforming any other action. For each application created there will be a auth token generated. Each auth token will be identified the platform and behaviour will be altered accordingly. This can be assumed like setting an environment variable.

Create Items:

Content for the website is created here with various metadata (title, description, genre, language, state, region, keywords, etc.)

Associate Items:

Each items can be restricted to particular applications. Can be made available in on application and remove in another application. And can have more such case.

Create Lists:

Lists are the integral part of the website. Platform is built built around it.It is designed to be very flexible. Lists can have many lists. List having many lists can be given order to it. Lists can have many items. List having many items can be given order to it. As there are number of websites out there and all look different in its own way. With the help of this platform, any type of website can be built. This said, to control on how lists to be displayed, there is a resource associated with it called layout. Platform allows to create as many number of layouts required, it can be either for lists or for items. After create layouts it is associated with the lists, same should be used by the front end for loading different layout components.

Create Layouts:

As said before, layouts is mainly focused on assisting front end in loading desired components to display the list of items.

Create Medias:

In a website, each items is identified with some image or video. Image/Video/Audio/GIF any media type can be uploaded to the server. It will be associated with title, description and keywords. This allows it be searchable.

Associate Media for Lists / Items:

This is the important and ever lasting job for the OTT website. Adding a lists to a lists and adding items to the lists.

A guide to User Management System:

There are two different flow here. 1. For customer end 2. For CMS end users. Flow will be as below:

At Customer End:

create_user →send_verification_token_user_over_email_notification → sign_in

forgot_password →verfiy_token →set_password →sign_in

sign_in → change_password

sign_in → edit_profile

At CMS End:

create_privileges →create_role →associate_privileges_to_role →create_user_with_role →send_verification_token_user_over_email_notification

Verify_verification_token →sign_in →access_user_privileges

An attempt to develop an angular front end with material design. Repository for the same is https://github.com/shravanc/website.

Below are the few screen shot for showing layouts and its rendering at front end:

carousal layout
vertical cards layout
gallery layout

Just emphasizing on the list again here. If a layout is updated to list, it automatically starts appearing different loading a component that serves the layout choosed.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Shravan C
Shravan C

Written by Shravan C

Software Engineer | Machine Learning Enthusiast | Super interested in Deep Learning with Tensorflow | GCP

No responses yet

Write a response