IMG IIT Roorkee
Published in

IMG IIT Roorkee

Content Management System @iitr.ac.in

Content Management System, a multi-user role-based interface for managing, updating and publishing content on IIT Roorkee’s official website. This is built and managed by the student body, Information Management Group. CMS simplifies the process of updating the content on the official website of IIT-Roorkee, which consists of more than 10000 pages in itself, we built our own CMS.

Updating website before CMS

It is very difficult to update HTML pages, and when you have thousands of them, it becomes impossible to manage. If there are only a few pages, one can think of editing them but again, whom should be given access, to what extent one should be able to access and several other problems like these are encountered.

At that point, we at IMG decided to build something to solve the above-mentioned problems and make it easy to manage the official website of IIT-Roorkee. Today, we are working on upgrading it and adding more features, making it easy to scale and 12-factor compliant. Still, the core remains the same.

Tech Stack

Yii2 + Apache2 + PostgreSQL

Yii is a fast, secure, and efficient PHP framework. Flexible yet pragmatic. Works right out of the box.
Apache2 provides a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards.
PostgreSQL is a powerful, open-source object-relational database system.

Git

To maintain the source code?
No, Git is not only used to maintain the source code of the project but also to maintain the history of the pages.

We keep a track of page revisions using git.

RabbitMQ

RabbitMQ is lightweight and easy to deploy on-premises and in the cloud. It supports multiple messaging protocols.
RabbitMQ is used to maintain publish requests and push changes in production.

Architecture design

It’s static!

The website, https://www.iitr.ac.in, that everyone sees is static, just HTML pages.
Then how do you update them? — There comes the role of CMS, In CMS one can update the content, then CMS will take care of generating HTML pages and pushing those static pages on production.

Database: The tree structure

The entire website has been stored in the form of a tree structure. The nodes of the tree can be either a special node, which stores some metadata for pages present as a child under that special node or node can be a page.

This tree structure helps us in providing access to users of different levels and sharing of metadata with multiple pages. All the pages of the same department will have the same navbar, so there is one special node for each department that stores the navbar fields, which is used by all the pages present in that department.

Site Structure of Website

Everything is a component

Each page is composed of several components and every page inherits all this information from the metadata of its parent special node. The side navbar, the footer, the menu bar all are shared on the special node level. So, once you update the metadata stored in a special node, one can see the changes in all the pages under that node.

Publishing pages

Flow

UX is simple, make your changes and publish. All the “dirty” work is done in the background.

What’s next?

There is always the scope of improvement in any product, we are no special, we at IMG, work tirelessly around the year to make it better, easy to use and match with the expectations of IIT-Roorkee. Next, we are trying to make it cloud-native ready making it easy to scale and deploy.

--

--

We put the technology in the Indian Institute of Technology, Roorkee. IMG maintains the official intranet portal, the homepage and the entire technological backbone of IIT Roorkee. We simplify the business of college life.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Pranjal Tale

Chief Coordinator @img-iit-roorkee | Developer at Summer of Haskell ’17 | Undergrad @iit-roorkee