Unreel.me

About

This project is a combination of back-end and front-end applications integrated with a couple of 3rd party media content providers. On the one hand, the main purpose of the system is to build next-generation tool for content owners to distribute and monetize their media. On the other hand, the system shall offer convenient and flexible tool for media consumers. Therefore, the overall goal of the system is to become a sweet home for content creators and a playground for fans! unreel.me Challenge Our team started with just one back-end developer who became a part of international development team. Earlier, the back-end application could only find YouTube videos by YouTube’s channel ID using a single thread at that time. Our main goal was to significantly extend the back-end functionality and provide a scalable multi-thread and multi-node application configuration. Later on, the team grew on our side and some more developers joined the rest; we also had our own DevOps engineer. The scope of work broadened and we started to get tasks on the new media content generation and automation of the applications lifecycle. At that moment, our team was also working on development of the predictive engine, integration with the 3rd party systems and media content analysis. The client-side is a single-page application that uses AngularJS, open source web application framework maintained by Google. In addition, it is a very powerful tool for creating single-page web applications. We’ve implemented a proper authentication and authorization strategy, so that sensitive data can be accessed via server-side API. The server-side app is a multi-purpose application that is used to: fill the project's knowledge base with the media content from all over the web (YouTube, Facebook, Reddit, Vimeo, various MRSS feeds, etc.); prepare new media content automatically or on a user’s request (highlight reels, gifs, memes, etc.); analyze video-related threads and extract relevant insights e.g. that people had reacted to within their effort; predict user's behavior based on historical data and pick the most appropriate content to build automatic playlists, aggregate content; etc. Solution At first, we used MongoDB as the main data storage. Then, we used a set of distributed back-end applications in the cloud. Some of them are powered by Java, others by Node.js, Scala, etc. For a messaging system between the components we used RabbitMQ. On the front-end, there is a web application built with AndularJS, Node.js, Bootstrap, and a set of mobile applications for most popular platforms.
  • MongoDB
  • Node.js
  • Bootstrap
  • Java
  • RabbitMQ
  • Angular.JS
  • Scala
  • MongoDB
  • Java
  • Node.js
  • Scala
  • RabbitMQ
  • Angular.JS
  • Bootstrap