In today's world, there are experts in every field. Your neighbors, your best friends, people you see every day or those you have never met could be possible experts or at least knowledgeable in the field of your question. Instead of having to find clunky explanations online, search and filter through hours of youtube content, or even set up meetings with tutors days in advance to understand concepts, problems or doubts, Guru saves the day.
What it does
Guru is a native iOS application that utilizes live streaming instructional technology that instantaneously connects students with "Gurus" in an effective learning environment. If you ever had to ask a quick question or understand a certain topic, Guru is the app for you. You sign in to the application stating what topics you're comfortable teaching. You can either ask a question to a global audience of gurus or you can see a list of questions that students are asking related to your skills. Gurus receive instantaneous push notifications or in-app alerts that their presence is requested. When the guru accepts the student's question, they are both simultaneously taken into a Live Video Call, through which the guru can explain the problem. We have seamlessly integrated a collaborative whiteboard in the stream, allowing the guru to draw on the screen and explain difficult concepts.
How we built it
Guru is a native iOS app backed with a nodeJS powered Parse Server, a popular open source deployment framework. We host our server on Heroku’s powerful infrastructure which allows us to easily deploy new server side changes via a git command line and manage performance in an integrated environment. For the client side languages, most of the app is written in Apple’s Swift 3.0 with Objective C libraries as well. Cocoapods was our dependency manager and proved to be very useful in organizing the external packages we used. For live video streaming/conferencing, we used Twilio to deliver fast and reliable content streams connecting the Guru and student. There is native Twilio code running in the app, as well as a server component hosted on our backend for authenticating users with the service before granting them access to a session. The real time whiteboard that is provided during a call is powered by the open source Live Query server project which facilitates web socket connectivity for efficiently sharing coordinate points across devices to create the effect a continuous line is being drawn live. A separate portion of our Heroku instance (dyno) manages this live websocket system. We use a MongoDB database hosted on MLab which has proven to be fast and very adaptable to our needs.
Challenges we ran into
Setting up the Live Video Stream
Aside from coming up with the idea for Guru (which took over 3 hours between all of us), we faced two main technical challenges. They consisted of implementing a video chat service in our app along with having a live whiteboard to draw on during a video call. At first, the idea of a video chat system seemed daunting and we researched possibilities of transcoding and delivering our own content across infrastructure providers such as AWS, but in the end Twilio was found to be a less difficult way to build out this feature while allowing time to focus on the app and interface. We coded a demo app before integrating video with the main Guru platform and divided up tasks such as researching various APIs, efficient server management with video, and designing/developing user interfaces for the product.
Integrating a Collaborative Whiteboard
We thought this would be the most difficult feature, but as we soon found out an even harder task was to build the dynamic drawing system. This required setting up a continuous websocket connection to avoid unnecessarily polling a server for new points to download and wasting precious resources. Parse’s newly open sourced Live Query project was slightly complicated and had minimal documentation but after many hours we figured out how to receive subscription alerts for newly updated points and were able to complete this feature. There were many other smaller challenges such as how to properly assign and delegate tasks among our group, as well as when to sleep (if at all!), but we are happy to have a finished product and to have overcome these challenges.
Accomplishments that we're proud of
Guru is a near-complete application. We delivered on all our promises, a fully functional and instantaneous live stream viewer, a fleet of push notifications to alert Gurus of requests and the integration of a collaborative whiteboard in the live stream to ensure a better learning experience for the student. The fact that we were able to complete this in a mere 36 hours speaks volumes. We're extremely proud that we were able to get this far, to get this functional app that allows anyone, anywhere to connect with a guru who could be anywhere in the World and still learn valuable information with ease. Developing this app seemed impossible in the beginning, but one by one, as we finished off tasks and created features, everything came together in the end.
What we learned
The most important thing we learned is team-driven collaboration and the division of tasks to ensure maximum productivity. With such a complex app such as Guru, it was imperative we all were on the same page, focusing on different areas of the application and tying them in at the end into one superb app. This meant raging through intense git merges, trying to manage 3 people working on the same Xcode project and resolving major conflicts that seemed impossible. At the end of the day, however, we did it together and that's what matters.
What's next for Guru
The future of Guru is unlimited. We plan to publish this app in to the Apple App Store and promote this app between high school students and college students alike. The use case for this application is truly present - any person who has a doubt, a problem or a confusion can post a question in a couple of seconds, and 5 seconds later be talking to a Guru who's walking the student through what he or she needs to do. We hope to engage in productive conversations with students and leaders in the education industry to see how Guru can be a fit for teachers and students alike, gaining tractions and pushing this app to its limits.