Online dance school

A web application for the group and individual online dancing classes.
image

Challenge

Our client is a professional dancer, who came up with the idea to develop a web app intended for distant group dance learning via video streaming. 

 

 

The main challenge of the project was to achieve video stream sync on the web without any third-party systems.

Technologies

Team Composition

  • 2 full-stack developers

  • DevOps engineer

5

weeks to complete a Proof of Concept

2

full-stack developers in a team

12

months of continuous development

Solution

At the first stage of the project, our specialists were working on Proof of Concept. We needed to specify the optimal technological stack and define how the program is going to work.

 

In the user interface, our team placed 16 windows: one for the Teacher and 15 for Students. Then we launched the program trying to achieve the stable working of all video streams.

 

The concept of the app was the following:

 

  1. before a lesson, a teacher uploads the audio to the app
  2. a student books a lesson and pays for it
    when it’s time, a student opens the app or enters the website via a mobile device, authorizes in, and receives the prepared audio
  3. the system estimates the speed of the data transmission channel and tracks when the student joins a lesson

After choosing the tech stack and testing the PoC, we divided each lesson into stages: Warm-up, Explanation, Practice, Monitoring, and Summary. Each of them has its own set of features.

 

One of the most difficult stages of the lesson is Practice when students begin to dance simultaneously. At this stage, our team needed to achieve the perfect synchronization of 15 video streams.

 

The synchronization issue arose since each user had a different connection speed, location, and Internet provider. Therefore, our experts have deployed the Wowza media server, which collected all the video streams. Then we placed the media server and the application website on Amazon, which reduced the overload for users’ devices.

 

Synchronization was achieved through FFmpeg – a tool that allows you to manipulate the transfer of audio and video streams flexibly and conveniently. To display video streams without using third-party systems, we decided to use WebRTC technology. It was a perfectly suited solution for secure video streaming via a browser.

 

Our specialists provided data transfer between users and the service over an encrypted channel (SSL/TLS).

Methodology & Transparency

The dev team followed an iterative approach. Our specialists performed tasks in parallel with the continuous analysis of the results and adjustments to the previous stages of work.

 

Throughout the project, the IntexSoft team worked closely with the client, since he was an expert in the field of the dance industry. The work was performed in a continuous testing mode, where the client took an active part. During the cooperation process, the developers were demonstrating the work done and discussing plans for further development of the service.

Features

  • Online lessons

    one lesson allows 16 users to participate (one teacher and 15 students) and is divided into 5 stages

  • Video streaming and synchronization

    Multipoint video conferenceing, synchronization of video streams with music, transmission of audio and video streams of students to the entire group

  • Live chat

    Students are able to send messages and share files in chat during the lesson

  • Scalability

    The app provides the ability to conduct up to 10 lessons simultaneously and, moreover, can be scaled horizontally

  • Payment

    Payments via PayPal or with a bank card; several custom packages at different costs