Online dance school

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


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.


Team Composition

  • 2 full-stack developers

  • DevOps engineer


weeks to complete a Proof of Concept


full-stack developers in a team


months of continuous development


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


16 users can participate in one lesson: one teacher and 15 students. 


The app works the following way:

  • before a lesson, a teacher uploads the audio to the app 
  • a student books a lesson and pays for it
  • during the appointed time, a student opens the app or enters the website via a mobile device, authorizes, and receives the prepared audio
  • the system estimates the speed of the data transmission channel and tracks when the student joins a lesson 

After the tech stack was chosen and PoC tested, 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, where the students begin to

dance simultaneously. At this stage, our team needed to achieve perfect synchronization of

15 video streams. 


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 the use of third-party systems, we decided to use WebRTC technology. It was a perfectly suited solution for secure video streaming via a browser.


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.


  • 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 conference during the Explanation stage,

  • Live chat

    Students are able to send messages and share files in chat during the lesson, synchronization of video streams with music during the Practice stage, dance demonstrations to the group using the audio and video stream of one of the students

  • 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