We, at opinr, are working hard on building a collaborative news reading and discussion platform. Obviously this won’t be
possible if we’re not sure about what technology to use and how to use it. I’m one of the members of the small technology team
building the Opinr infrastructure and I would like to give the readers a brief idea about the technology we’re using to achieve our goals.
The core infrastructure of Opinr is divided into three parts- the web interface, the data fetch and the asynchronous tasks
The Web Interface. The backend for this is using Django with and lots and lots of restful api’s. We are trying to build a platform that is easily scalable
both in terms of the high volume of content we serve and the types of devices being used to consume that content. Hence we built an api
system that is easily callable from any frontend implementation and provides a clear separation of responsibilities for both the backend
and the frontend developers. The frontend uses the amazing Twitter-Bootstrap and Backbonejs alongwith its few plugins.
The Data Fetch: This is the heart of Opinr and takes care of fetching the data from the numerous sources added by users and updating them. We chose
to use Python for this purpose because of numerous stable external data fetching and data manipulation libraries available for the language.
Celery(django-celery to be precise) is in charge of handling this task and aggregating the results into the database. Using celery enables us
to easily execute the data manipulation tasks by taking user inputs(like adding a source, joining a collection or adding a new link)
The Async Tasks: These are the tasks that don’t require immediate response to the user and can be completed with a bit of delay(we try to
make sure its as less as possible. I swear). The tasks that fall into this category are sending daily emails, sending invitation emails,
updating the following user’s feed, updating relevance scores, sending notifications and some other housekeeping tasks. Again, we choose to use celery for this because of
This, very briefly, sums up the basic technology stack we’re using. We believe in using the right tools for any requirement and hence we don’t shy away from
doing some experiments(and breaking things) with the new stuff we come across which we thing might improve the experience for you as an end user.