Inspiration

The MLH Fellowship brings 12-week weeks of fun, educational curriculum with quality practical experience. But it's a lot more than just pure coding. It's collaborative, remote, and happens under the guidance of expert mentors. The orientation and the halfway hackathons provide excellent platforms to:

  • encourage innovation, while acknowledging that innovation is a much larger problem than one hackathon can solve.
  • give people adequate time to tackle challenging problems;
  • help build relationships across teams during the MLH Fellowship.

Throughout the fellowship, we've noticed little cross-pod interaction. This particularly holds true for the open-source track where the only opportunity for cross-pod collaboration was if you were grouped on the same open-source project. The halfway hackathon encourages fellows to team up with other pod members however finding teams can be tough.

There is a need to promote cross-pod collaboration and interaction over the course of the internship and what better way to do it than a social networking site.

What it does

Our platform is built around the model of a social networking site where the users can:

  • Register using their Github accounts, no sing-up forms needed
  • Create posts, share audios, videos, documents, code snippets
  • React to a post. Maybe leave a helpful comment on a code snippet or a help query
  • Get matched with people having identical profiles and interests, follow their activities and chat with them.
  • Get notified on any fellowship events like twitch streams, etc
  • Most importantly, find team members during hackathons to collaborate with filtered by the programming languages

How we built it

Open source is at the core of our tech stack. This project would not have been possible behind these wonderful technologies:

  • MongoDB Atlas
  • EJS
  • Node.js
  • Express.js
  • mongoose
  • Github GraphQl API
  • Github OAuth 2.0
  • Socket.io
  • Markdown
  • Prism.js
  • Darkreader
  • Commitlint for commit conventions.
  • GitHub for collaboration: issues, pull requests
  • AWS S3 for storing static content

Challenges we ran into

  • Integrating notification mechanism with read badges
  • Integrating frontend, backend, database all together using cloud
  • Creating the recommendation system that matched users with identical profiles
  • By passing Github's API call limit (we currently use just the pin repositories to fetch languages since we had to respect Github's API call limit)
  • Implementing the user chat
  • Deploying the application's server as well as client

All the issues were fixed and the app is fully functional, deployed

Accomplishments that we're proud of

We started working on the project late owing to local issues with electricity however we managed to be extremely productive for the remaining days to get a finished project up well before the deadline. Both of us come from varied tech stacks but still managed to work on the project effectively. Sladyn, for example, is relatively new to the JS ecosystem but was familiar with Django. So we used EJS with was in part similar to Jinja.

What we learned

We learnt a lot about system design, background processing and Mongoose's internals, especially the population queries. Apart from this we also learnt a lot about middlewares and effective error handling and logging in Express.js using winston and asynchronous context that reduced our time to debug to half.

What's next for Coolab

The next step is to open source the platform and convert it to a PWA. Additionally improve on our recommendation engine to provide better matches to users.

Built With

Share this project:

Updates