- Community Building (Meeting new Fellows from the Community and building connections)
- Getting Help (Finding Fellows based off of a Technical skill)
A major goal of the MLH Fellowship is to expand your network and make wonderful friends. But, it becomes hard to reach out to people outside of your Pod, mainly because we know so less about the likes/dislikes/technical interests of other Fellows. As a result, Fellows are often only able to interact within their Pod, and not meet other like-minded people.
What it does
A new user registers and adds their information, hobbies, technical skills, dislikes (things they'd love to rant about) to their profile. Different users can then either view all the registered Fellows, or filter them by various categories like Hobbies, Technical Interests, Country, or even by what they want to mutually rant about! Once they find a relatable Fellow, they can press the "Connect" button for that Fellow, to send them an Email, with an auto-generated custom Jitsi meeting link by us, and anything else they want, to start the talk.
How we built it
Backend (REST API)
- Django - Django REST Framework (only for JWT authentication) - Neo4j (Graph database)
- Vue.js - UIkit
Challenges we ran into
This hackathon was full of challenges. We decided to use Django so as to leverage the most out of its built-in functionalities given the amount of time we had. But we also wanted to try out Neo4j, which is an interesting Graph database. Django not being so fond of graph databases, gave us all sorts of challenges, but eventually we hacked through them! We had some other implementation hindrances too because almost all of the concepts and technologies that most of us used were new to us. Our initial plans to use WebRTC didn't pan out well since I had underestimated WebRTC and believed that it'll not be that big a task to create a communication client in the short time we had. Also, user authentication using OAuth2.0 was a major challenge. At the last stages, one of our teammates fell really ill and they couldn't work on the frontend. So I, who had no experience in using a frontend framework before, had to shift gears and learn Vue in a night to create the whole frontend app.
Accomplishments that I'm proud of
I'm really proud of learning so much at such an accelerated rate and managing the stressful challenges that came along. I'm glad that I decided to try and experiment with new technologies, and in turn learned so much new and interesting stuff (which follows in the next section). Sure they're stressful, but the thrill of hackathons is what I enjoy the most.
What I learned
This was probably the most I've ever learned in such a short amount of time. There were a lot of things that I had long been planning to learn, but didn't find the right incentives to start with them. Starting with WebRTC, even though we eventually didn't create something using it, I learned the ins and outs of how real-time communication works and various networking concepts. It sparked my interest so much that I'm going to continue looking around it and go through the Open-Source code of WebRTC.
Another thing that I'd been wanting to learn was Django REST Framework. I finally figured out how it works and what it does along with Django. I also got to know how interesting graph databases are, and even learned some Cypher queries. Being unable to use a lot of Django's built-in features, we had to implement them on our own. As a result, I ended up learning so much about OAuth2.0 and even implemented it! I'd been using it for so long, but now I finally know what actually goes on behind the scenes!
And then comes the best part. To fill in for our teammate who was feeling unwell, I had to create the entire frontend as well for the project. I had only used basic HTML and CSS in the past, but was always curious as to how huge JS frontend frameworks work. I grabbed some courage and ended up learning a good amount of Vue.js to make an entire app out of it, which really motivated me!
Even my other teammates went out of their way and learned Django and Neo4j, which they were new to as well, so it was a great learning experience for us all.
What's next for Fship
There's a lot of scope for improvement in our app right now. The most prominent one is to integrate the login system (which is currently on a separate branch and needs to be synced with the frontend), and have a more robust authentication system and password storage. There are various features that we had planned but couldn't implement due to time constraints, and would love to add them soon. These include verification of the user being a Fellow by checking their presence in the MLH Fellowship GitHub org when registering to Fship, adding a "Find best 5 matches" feature to automatically recommend you the 5 Fellows who have most number of matching interests with you, and last but not the least, have an embedded video call in the app itself to make connecting easier. With a few tweaks and additions, Fship can help the Fellowship become more interactive and spark new friendships!