As students, we have experienced first hand some of the worst software ever written: online classroom platforms. Even with offerings from some of the biggest software companies, every online classroom platform fails to meet our needs as students. Traits that can define most all of them is unintuitive, clunky, slow, outdated, and uninspired. We wanted to take only best features from these services and provide them in a fast, modern application. Our main goal is to create the StackExchange of education (hence our name, which plays on it), combining the large scale communication of StackExchange, with the localized information of Google Classroom. We also wanted ClassExchange to be a platform where students can in a glance find the information that matters most, such as upcoming assessments and due dates.

What It Does

On ClassExchange there are both classes and topics. Classes are private, allowing only those with a key to join, while topics are open forums available to everyone, anywhere in the world. At the core of classes and topics is a chronologically-sorted board of posts asked by students. These posts break out into discussions where peers and/or instructors can respond, even allowing media to seamlessly be linked. Class instructors and Topic administrators can create as many boards as they’d like, allowing posts to be sorted in a way that makes sense for any use case. Additionally, classes have a special Announcements board where only instructors may post. This is students’ one stop page to find the most relevant information relating to their class. For convenience, the webapp is containerized into an Android app.

How We Built It

To allow cross platform support, we built ClassExchange on web technologies: HTML/CSS with Bootstrap for the front end, Firebase for the backend, and Javascript for everything in between. We developed the app using a mobile-first approach; focusing on the mobile UX with the intention to develop the full desktop interface later. User accounts are created and authenticated using either email or a Google account. The Android app is the webapp containerized using Webview.

Challenges We Ran Into

Deciding on what technologies to build our app on presented a challenge. We wanted our app to support both iOS and Android devices, so developing the app natively would mean developing two. We found that building our app solely on web technology best allowed us to reach customers, no matter their device, while allowing us to maintain and develop only one codebase. Additionally, this allowed us to ensure that the user experience was consistent for everybody. We also ran into challenges with the responsiveness features of our website. For our website to seamlessly support mobile and desktop users, we needed a robust grid system that allowed for content to collapse and expand depending on screen size. THis took a lot of effort in the beginning to get started, but once it was in place, it was easy to build into and off of.

Accomplishments We’re Proud Of

We're proud that we made a functioning prototype of our idea within 36 hours. Additionally, we're proud that we were able to prioritize our most important and unique features first.

What We Learned

By developing our front end using Bootstrap, we learned how to make our app responsive; allowing it to be used on any device by adjusting itself to any given screen size. This was not done by just using percentages as measurements, but used viewports and detected screen size in order to change how content is wrapped and displayed in order to better fit a display.

What’s Next for ClassExchange

In the future, we’d like to add Direct Messages to allow easy communication with peers and instructors. We’d also like to add search functionality so that specific discussions can be found easily. Email notifications would also be implemented, preferences for which can be set by the student. Additionally, we’d like to further develop our user interface to make UX as intuitive and powerful as possible. We’d like to develop a full desktop interface for the app. We’d also like to containerize the webapp into an iOS app similar to how we did for Android.

Share this project: