Public Lab Research note

SoC proposal: Community Toolbox overhaul

by icode365 new contributor | | 136 views | 9 comments |

Read more:

About me

I'm Rishabh Rawat, a 3rd year (Junior year) engineering student specializing in Electronics and Communication from GGSIPU, India.



Location: New Delhi, India

Project description

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).

Adding Tests

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:

Adding Documentation

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.



First-time contribution

Links to show my recent activity:


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 ( and a simple chat-app made with Django-channels ( and a dynamic theme firefox add-on (


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, (website for a hospital) and (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.


Thanks for submitting proposal. Can you please tell us what are you going to implement in the proposal?

Is this a question? Click here to post it to the Questions page.

Reply to this comment...

Hi @bansal_sidharth2996, sorry for incomplete proposal...I'll update it ASAP. For now, please take a look here for the things that I'm going to implement during GSoC.

Reply to this comment...

OK no problem. There are some suggestions which I wrote on call for proposal, please add them too

Yeah, we are looking forwards for supportive folks. Make sure to do 1. at least one PR review each week and

make some FTO issues in each week to involve new contributors inside your projects. People will love to be part of big projects. It is a great feeling to help others.

Please take out a day from timeline from each month at end of each phase of SoC fellowship to write about what you learnt and did in the period. Earlier it was not compulsory. But let's make it compulsory. By this mentors will be able to access your progress. Don't forget to mention the ftos which you created during this period. Also mention the PR reviews which you did.

We are planning for video calls I'm each month during SoC program. So, it will be great to see you all.

These are small activities which can lead to better and supportive community at PL. All participants all programs are encourage to write these in their proposals.

Thanks and best of luck.

Reply to this comment...

Also we will really appreciate if you all will review each other's proposal and give suggestions. Thank

Reply to this comment...

@bansal_sidharth2996 Yes, I agree to that. Thanks for the feedback!

Reply to this comment...

@warren @bansal_sidharth2996 I've updated my draft. Actually, there is a lot of work left here...can you please take a look at the ideas and suggest improvements!?

Thanks πŸ‘

Is this a question? Click here to post it to the Questions page.

Reply to this comment...

Hi @icode365 you should put add test1 and add test 2 in separate months. Similarly documentation. If there is some difference in test1 and test2 or documentation 1 and documentation2 then please explain. Also, please add the sections which I commented above. Thanks

Reply to this comment...

@bansal_sidharth2996 Okay, I'll update it as per your suggestions. Thanks!

Reply to this comment...

Login to comment.

Public Lab is open for anyone and will always be free. By signing up you'll join a diverse group of community researchers and tap into a lot of grassroots expertise.

Sign up