Study groups and friend groups in college are often formed with an element of chance. Who do you happen to be sitting by on the first day of class? Are you already friends with any of the other students?
One of the prevailing issues of online schooling and education during this period of social distancing is the lack of any dedicated school based social platform. Students usually build contacts with other students in an organic fashion, and removing the element of physically being present in a classroom reduces their ability to reach out to to potential study groups and partners.
While sites like Piazza and Canvas do offer forms of discussion, they are also moderated by professors and teaching assistants—built more for the purpose of academic debate rather than the more informal conversations that usually occur between students.
Thus, we present Class Chat. An application designed by students and for students.
What it does
Class Chat is a web based application that simulates real time classroom conversations. With this, students are able to enter a classroom of their choice and send messages visible to both sides. The unlimited number of possible chatrooms allows students to start out in a central class chat and then create more specialized forums—all, of course, accessible by their fellow colleagues.
How we built it
The bulk of Class Chat is built with Django, allowing us to compartmentalize the site functions into multiple distinct features that need to be implemented. For the login and registration features, we used the Django built-in authentication system as well as Django crispy forms to assist in rendering the registration form. To run the chat servers for each class, we use a WebSocket to allow individuals to communicate with the Django server. To implement users communication within the chat server, we created a channel layer with the channels package which allows users to transmit messages to other users in the same class. Additionally, we rewrote the WebSocket connect to be asynchronous with the channels package, improving the overall performance by reducing the need to create additional threads when handling requests.
Challenges we ran into
Day one of our team's challenges consisted of not knowing how to use django.
Day two, and we encounter github merge conflicts—many of which have to be resolved manually, and later, on the command line. Additionally, we also attempted to add user identification, which required a deep dive into web sockets and the basics of java script.
Accomplishments that we're proud of
A point of pride for our team of developers is Class Chat's minamalistic design, user protected logins, and user identification.
What we learned
What's next for Class Chat
A better selection forum for colleges and universities, time stamps, attachments for homework assignments, pinned posts... really, the amount of optimizations and improvements is limitless. Our team hopes to present a more polished version of Class Chat at the next Hackathon.
Try It out