As previous MLH Fellows in the Pre-Fellowship, we always felt the need for a central area for all our Fellowship related activities. Whether it was submitting our standup notes, or staying updates with all the issues we have been assigned to, we always had to scramble between different places to find what we needed. Presenting FellowSpot!
What it does
FellowSpot is a web application that aims to simplify the process of finding information related to the Fellowship, by providing a single source of truth, for everything you need.
You can save your standup notes in a markdown editor as you finish tasks throughout the day, and can also submit those standup notes with just one click, without having to find the right discussion in your GitHub team, and scrolling through a bunch of standups already submitted.
How we built it
We used Next.js, a React framework to build the frontend of the application, along with Chakra UI for the styling and next-auth to handle authentication using GitHub OAuth. For the markdown editor and preview, we used Slate.js, to render an editor onto the page, with instant markdown previewing too.
The backend for the application was built using Flask using flask-restful to quickly scaffold out a REST API. We used the requests library to make requests to the GitHub API and carry out a variety of tasks, such as fetching a list of pods, getting all team discussions, and automating the standup note submission.
We also containerized the entire application using Docker, so it becomes easy to run on your local systems using one simple command
Challenges we ran into
The first massive blocker we had was related to user scopes in the GitHub API and not knowing that we had to request the MLH-Fellowship GitHub organization to give access to our GitHub OAuth App. This slowed us down qiute a bit, and hence the late submission.
Another blocker we had was again related to user scopes in the GitHub API, but this time, not defining them the right way in the client side projcet, which also cost us some valuable time.
Accomplishments that we're proud of
- Integrating GitHub OAuth, and implementing the principle of least privilege with regards to the scope of the logged in user.
- Making an easily navigable user interface, while making it performant and accessible
- Finding the right GitHub discussion to post the standup notes to, to make the process as easy as possible for the end users.
What we learned
We learned to work as a team, across different timezones and still were updated with what each other did throughout the day.
We also learned a lot about the technologies we used in the project, and especially a lot about the GitHub API and how we can interact with it.
What's next for FellowSpot
Instead of having links for the websites that we couldn't find an API for, we aim to embed the websites into the main dashboard itself, using something like an iframe in HTML. This would prevent users from having to click a bunch of links to find what they want.