I'm Rishabh Rawat, a 3rd year (Junior year) engineering student specializing in Electronics and Communication from GGSIPU, India.
Location: New Delhi, India
As we know, community-toolbox plays a big role when it comes to welcoming newcomers and having an in-depth look at our growing community, the idea revolves around enhancing the project with some new features and making it more reliable (error reporting to the user etc.). The ideas include adding tests, adding documentation, making it a Progressive Web App for incorporation of offline support and data fallback support.
Abstract/summary (<20 words):
The implementation of this project can be classified majorly into 3 categories,
- Adding features,
- Writing tests, and
- Writing documentation.
Community-toolbox allows everybody to take a look at the activities going on in the PublicLab projects, helps in welcoming newcomers. It plays a major role in growing our community, the fact that newcomers can look for fto and help-wanted issues in order to get-started & other people are able to notice their contributions (and help them) is absolutely amazing.
Refactoring the code
The code in the current state is not refactored and contains files with lots of big chunk of functions. File names are not specified accordingly and the project structure needs to be updated. It is clearly not easy to read and get started with, so this idea includes segregating the code according to their use-case. This will make the code very easy to read and will make highly maintainable.
Refactoring the code will make the project structure look like,
Here, in these screenshots, the model/database component is segregated according to the stages of their workflow, initialize.js will set-up the database, crud.js will be containing the code related to creation, deletion and reading the database and at last, util.js will provide the helper functions which will communicate with the outer code and to pass parameters to it.
Similarly, UI files, scripts, and utilities will get refactored.
Filter for sorting recent contributors
This idea includes adding a filter button for recent contributors' section which will allow users to sort the list according to the number of commits (highest first or lowest first). Here's how it will tentatively look like,
Adding the Notification system
This includes adding a notification system to the website. The main reason behind it is keeping the user in touch through notifications. This would let the user know what is going on or what's gone wrong. It will include notifications for some unexpected errors, exceeding the API limit and the likes. A simple error notification will look like,
Adding Leaderboard of contributors
As the name suggests, this idea is about making a leaderboard of contributors last week/last month and show them on the page in a table-like format. This would provide inspiration to the new contributors and a sense of healthy competition will surely increase the productivity of people. As of now, we get the list of contributors last week and last month, that would help in extracting the list of contributors having highest contributions (relatively).
As the project is getting big lately, we need to make sure that we don't break things as we go forward. So, writing tests for that would surely help. As by this point of time the project will get bigger, I would be segregating the tests into three major categories:
- Tests for repository contributors,
- Tests for recent contributors last week & last month,
- Tests for issues & the features implemented by that time
Here's how the tests folder will tentatively look like,
Implementing PWA, offline support with data-fallback
As of now, the project cannot be used on a smartphone as a native app, does not support visiting the page when offline and does not support data-fallback in case of Github API not returning any data back to us.
So, this idea includes incorporating these features to the website which will allow a user to:
- Visit a (cached) page when offline provided he/she has visited that page at least once before,
- [Data Fallback] Take a look at the data that Github API provides when offline, a copy of the data will always be the latest one and will be reliable, and
- Visit the project through his/her smartphone as if it is a native mobile app.
Here's a quick look at how the website will behave when offline:
As the name suggests, this includes adding documentation for the project. As the project is getting big, it needs proper documentation for a newcomer to get going with it and it should be easy to read and get started with. The good way of structuring this documentation would be to show a flowchart of the functions/files and indicate the flow of control through it. Adding code snippets will make it more easy to understand.
A sample flowchart for showing the control flow of the project in its current state looks like,
This can be explained along with code snippets. A good way of structuring the documentation.
Links to show my recent activity:
- Comments, to show overall community involvement (like helping others): https://github.com/search?utf8=%E2%9C%93&q=commenter%3Arishabh570+org%3Apubliclab&type=Issues
- Open issues: community-toolbox , plots2, image-sequencer
- Closed PRs: community-toolbox, image-sequencer, leaflet-environmental-layers
I started programming around 1.5yrs back. So my first exposure to programming (webdev) was learning HTML and CSS. I am contributing to PublicLab since October, 2018. I was also the part of Google Code-In Mentors team at PublicLab.
I've worked on other projects as well, I made incoming webhook notifiers and chatbots (more like slash commands) (on an already baselined codebase) for zulip, I've worked with coding blocks as I was part of their annual summer of code event named Bountiful Open Source Summer (BOSS) and ranked in top 10, my personal projects include a python/Django website (https://github.com/rishabh570/refresher) and a simple chat-app made with Django-channels (https://github.com/rishabh570/chatroom) and a dynamic theme firefox add-on (https://github.com/Rishabh570/themed).
During my summer internship at Malik Ventures, I was working with a team of 6 people. We were working on two projects at that time, radixhealthcare.org (website for a hospital) and harvin.academy (a coaching institute) and I was responsible for the backend part (Node.js/Express). Moreover, I've been working with PublicLab since GCI'18 and have contributed to Zulip & Fossasia as well. I can say that I am a good team player.
First of all, we at PublicLab have such a diverse group of people. Our community is very active which helps in maintaining the momentum, I get to learn so much while working on the project and the best thing is, we care about welcoming newcomers to our community (by ftos/fto-candidate/help-wanted) which is great. These things mixed with technology is a great combination!
My project would help in making the organisation's portfolio more robust and will provide some features which will help in having a deeper look at the community involvements and welcoming newcomers.
Yes, I understand that. I would be fully commited to my work.