Social activism is more relevant than ever, but due to social distancing, many potential avenues to push for reform have been hampered. Recently, a growing number of activists have been making their mark through signing online petitions. The problem we faced when participating in these online movements was that there was no centralized platform to find petitions from relevant movements. This wasted time looking for petitions and increased the possibility of not seeing petitions we would have signed otherwise.

That all changes with Pocket Justice. We have created a project to make at-home social activism more productive by reducing the time it takes to find petitions that you are passionate about. We hope that by making this process easier for many people, we can make an indirect contribution to the global movements for social change that are currently ongoing.

What it does

Pocket Justice brings together petitions from all across the internet to allow activists to easily find and sign petitions for causes that they are passionate about. Using automated scraping to keep petitions up to date, this tool greatly increases convenience to allow activists to focus on the things that matter over spending time hunting the web. We hope this will do a small part in contributing to the social justice movements of our day and age.

How we built it

Our application is served on Heroku and deployed as a MERN stack app, that is MongoDB, Express.JS, React and Node JS. We used React and the ant design library to create a smooth user experience for visitors, and used Node and Express to set up a fast reliable back end to serve petition data to the react client. Using the Beautiful-Soup library for Python, data is scraped in increments of 30 minutes from a list of petitions sites we found that were popular among activists. The Node JS side of the application handles requests from the client, but also automates the scraping process by running Python scripts on its own and pushing the resulting scraped data to the MongoDB database so that the site stays current and up to date. With an estimated 70-80 hours of combined development time among the three people on our team, we have put our hearts into deploying a working application over the course of the last 4 days.

Challenges we ran into

This was our first time creating a full stack application, so we had to learn how to build a back end and manage a database from the ground up. React hooks were also a beast of their own that we overcame while working on this project. Since this was the first time we had made a project with all of these tools, nearly every task required hours of google searching and debugging to get right. One of the biggest challenges we faced came when we were deploying the project. Figuring out how to integrate the front and back end successfully was a monstrous task that took nearly two days to get right. Boy are we are glad we started trying early!

Accomplishments that we're proud of

One thing we are proud of is getting a functional app deployed, despite starting with zero knowledge of how a back end works and having never deployed an app before! Most of all, we are proud that a project we created may contribute in some small way to the path to equality for all men and women across the world through the hard work of activists and dedicated allies. We hope this will be useful to at least one, if not more of these people. We know we will be using it for sure!

What we learned

We created a web app for our project so it comes as no surprise that front-end design covered a huge portion of our workload. From building functional react components to styling our pages, we were able to sharpen our skills with front-end development and further our experience in dealing with react and JavaScript in general. Perhaps the hardest element of our project consisted of the back-end development since this was a topic that we were less familiar with. Our website implemented a web scraping function, which made this already difficult task even harder. Thus in order to complete our website, building our back-end knowledge and learning how to manipulate data with a database effectively was a must.

What's next for Pocket Justice

Although it may seem that Pocket Justice is complete, we still have a long way to go to improve the user experience and convenience. The ultimate goal is to save time and be the go-to site for online activists. This means better sorting and categorizing features using machine learning and natural language processing, as well as scraping data from a larger array of websites to make sure we don't miss anything.

Share this project: