One of the unforeseen consequences of the COVID-19 pandemic has been the forced evolution of education from in-person to remote. We’ve witnessed that many teachers in our local communities have had a difficult time transitioning to online methods during the coronavirus pandemic, as they’ve had to adapt their curriculum and strategies in unprecedented ways. Our team wanted to create a platform where teachers can collaborate with other educators around the nation to bounce ideas off of each other, share resources, and chat with each other. Our goal was to improve the quality of learning for students by giving teachers proper access to materials that they might not have thought of or prepared on their own.
What it does
TeachOverflow is a web app on which teachers can register their account to be able to post resources or view and review materials posted by other teachers around the nation, including handouts, study guides, lecture slides and recordings, and projects. Teachers can filter what lectures they wish to see based on level of education, subject, ratings, etc. They can download these lectures and then give it a rating or review based on its contents. In this way, we hope to provide a platform to promote resource sharing and idea dispersion so that education across the country can become more equitable and meaningful. We incentivize teachers to post quality material because they are being ranked by reviews, so a higher rank means a more reputable source.
How I built it
We hosted a Postgres database in ElephantSQL and created tables to manage teachers, resources shared, and user reviews. We wrote APIs on the backend in Flask that allow teachers to manage their own profile, post or edit a resource such as a lecture recording or handout, filter their search based on keywords, and review resources posted by other teachers. On the frontend, we used Bulma for styling and HTML to render our pages for the user. We extracted the appropriate information by making calls to the backend.
Challenges I ran into
One challenge we ran into was parsing the right file type when a teacher uploads a resource. Right now, the website works well with image uploads of cheat sheets and smaller documents, but a little more work needs to be done to make sure a teacher can properly view a word document, recording, etc. Another challenge we ran into was having too many connections to the database at one time. Using the free version of ElephantSQL only guarantees us a couple of connections at once, so we had a hard time testing together. To fix this, we would need to upgrade to the next tier or add delays for transactions to close.
Accomplishments that I'm proud of
We are proud of how the database updates properly when a user completes an action, how the frontend looks, and most importantly, the idea. The backend works pretty well, especially with throwing errors when proper inputs are not given by a user. We are also pretty impressed by how far we got in terms of making the webpage look nice. We were very flexible in transitioning to using Bulma for styling in a short amount of time while originally starting with React. Finally, we are proud of the flow of one user from start to end. A user is able to register, post and edit, review, and view their profile.
What I learned
Throughout this process, we’ve learned a lot about database management and web app development in general. For most of us, this was our first time developing a web app, and there was certainly a learning curve in the beginning for us to get acquainted with using HTML/CSS, Flask, and SQL in a project environment. Additionally, working together in a team was a very enriching experience, as all of us learned a lot about team management and task delegation throughout the course of the hackathon.
What's next for TeachOverflow
Another feature that we’re looking to add is a discussion forum that can facilitate more communication between teachers and help them connect with each other through posts not limited to teaching materials. Also, we are planning to incorporate React on the frontend to increase functionality and transition to a different cloud service such as AWS RDS to store our database. Lastly, we plan on refining the current functions and implementing analytics to display recommended resources for teachers and track efficiency of the platform.