Timid students engage less. Those that engage less flourish less in their field. There is a gap between quiet students and the answers to their questions, and this needed to be fixed.
What it does
Lecturers sign in and deliver a lecture through the web app. This starts a session that students can sign into on their mobile phones and post anonymous questions to the lecture. Students can upvote comments and questions posted in the lecture for greater visibility from the lecturer. After the lecture, the video is processed with Transloadit and pushed to Google Cloud Storage, where we can later serve it to students and/or archive the lecture delivery.
How we built it
Distil runs on two main platforms. Firstly, it is a web app utilising Flask powered by Python. We created a RESTfulAPI to handle all the data interaction between the project and the MongoDB database. This means that the second part of the project, the Flutter mobile app, can interact with the data with a simple API call. The API interacts with the data using a number of classes as we decided to use a clear and simple ORM architecture. This makes the code readable and concise, a necessary attribute when working with data.
Challenges we ran into
Permission issues ran amock between Google Cloud Storage and Transloadit's assemblies, but we were able to thwart a number of errors with a bit of help from Marcus. After more midnight digging, we were able to get the full flow start to finish uploading webcam videos to Google Cloud servers complete with thumbnails, watermarks, a virus scan, plus encoding for android and webm! This is our first time programming in Dart and using the Flutter framework. The latter is still rather new and so documentation was somewhat lacking, but we were still able to fully produce what we wanted with a little bit of luck and elbow grease.
Accomplishments that we're proud of
We think the interface looks really clean and professional, easy to navigate, and could really empower students that are perhaps more reluctant to raise their hands and pause the lecture to get the answers to their questions. The beck-end code is really quite clean as well - it's easy to navigate and easy to add to, should more features arise.
What we learned
Many skills were gained! We learned how to use Transloadit and Uppy together, Google Cloud Storage Buckets, Google Cloud Service Accounts. Another large part of the project that we had no experience with before is Dart and Flutter. Granted, it caused us a lot of pain, but the pain was worth the payoff.
What's next for Distil
Live Streaming lectures! We feel this is an important part of of learning enhancement and a platform like Distil could really benefit from full-video streams. We would also love to see audio-only streams and playback. This would allow students to gain learning content with far less data usage on mobile networks, which could come in handy while commuting or while reading over notes.