As high school students, we were very disheartened to learn that schools would be shut down for a few weeks to prevent the spread of COVID-19. As Grade 11 and 12 students, it is imperative that we attend school since these are our last few years to improve our marks to increase our chances of attending a good university. With the current direction from our provincial government being simply to "stay home" and optionally to continue with an e-learning environment that didn't have secondary school courses, we were left with only one option: to create an online learning environment ourselves.
What it does
Class4Corona permits a realistic classroom atmosphere online, through video chat. A teacher can create a classroom in less than 30 seconds, and once created, students can join this class in a similar manner. Each class is a session and lasts only as long as a teacher hosts for. Within a class, the teacher has the option of sharing their webcam, microphone, and screen, which each student can view on their end. A private microphone connection is also established from the student to the teacher (but not to other students) that allows a student to raise their hand and be called on, which then unmutes their mic so they can ask a question.
How we built it
Our primary server runs on Node.js. All of the audio/video connections rely on WebRTC, which we tweaked to run a nearly unlimited number of connections from one host to many clients. The clients, on the other hand, only have one connection to the teacher, which prevents them from hearing other students and greatly improves latency.
Challenges we ran into
Creating simultaneous WebRTC Peer Connections to each student in the classroom was very tricky to accomplish. We also had an incredible number of issues making Class4Corona work for all browsers. Brave, for example, automatically blocks autoplay from many sites and we were having trouble getting load promises to be fulfilled to request site permissions.
Accomplishments that we're proud of
- We created what we believe is an outstanding project that works extremely well.
- We made something that we and our schools can use to help us learn.
What we learned
- We learned a lot about WebRTC and Node.js and will be a lot more comfortable working with this technology in the future.
What's next for Class4Corona
We hope to continue working on this and releasing it as a product that anyone can use for their classes, similar to Zoom. Our teachers at our school are already considering using this as a teaching tool while we are all in self-isolation.