29elode is the leading video educational platform in Italy. The courses are delivered as high quality HD videos. All presenters are real teachers and are hand picked by the 29elode editors.
AGILEDROP was approached by the client to migrate the platform from Drupal 6 to Drupal 7, to freshen up the design and to change the pricing model. Team has already had experience in delivering video content inside Drupal and was familiar with the Drupal Commerce modules stack.
Previous site was built on top of Drupal 6 and the commerce part was done with Ubercart module and its extensions. Drupal 7 was the logical choice, not only because of the easier migration, but also because the website needed a powerful platform that would support the data structure and business logic behind the product.
The plan was not only to execute the migration from Drupal 6 to Drupal 7, but also to change the business model and redesign the website to be responsive. During the development we also added multilingual support and enabled the English version of the user interface.
From the old platform we only needed to import users and the information about their subscriptions. We built a module for the old D6 site that behaved like an API. When we went live we just changed the DNS records.
The requirement was that we use the HTML generated from Camtasia as our main interface for courses. This would mean that the chapters and videos would be stored without Drupal knowledge. We developed a module that imports the files generated by Camtasia. This is how we kept the uploading simple and the data structure still inside of Drupal.
Subscriptions as relations
We store the relation between the customer and the course as an entity with the Relation module. Each successful order creates or updates the relation used to determine if the user has access to video. In comparison with Commerce licence, the Relation module enables us to do faster queries without loading the full entity.
Custom video widget
When in “full browser mode” students can access chapter menu and switch between videos. This mimics the Camtasia output that students already liked. When the video finishes playing it also flags the video as done, providing a visual reminder for students as to where they stopped watching the course.
Nginx + Xsend
The platform is hosted on Cloud.it cloud. Since all videos are stored as private files we would need to serve them with PHP, which uses a lot of resources. Our solution was to move from Apache to Nginx where we used Xsend and pseudo streaming to speed up the videos.
We were not only able to deliver the requirements set up by the client, but also to over delivered. Some of the architectural decisions are enabling us to build new features on top of the data we have. 29elode’s long term goal is to turn into an e-learning platform is now possible without having to be rebuilt.
Our system strongly relies on Entity reference module, so we ended up building the ER Selector module. The module is still in the sandbox since it still needs some work to be generally useful.
Three people worked on the projects. We used ticket tracking system Teamwork to handle the tasks among the developers. We were working closely with 29elode’s team, so we were able to get feedback as soon as possible.