The Kindness Project was inspired by the heartwarming community responses to the COVID-19 pandemic we've seen across the globe. In particular, thousands of mutual aid Facebook groups have popped up, filled with posts from those offering and requesting help from their local community.
However, these groups have a big problem. If you wish to offer help, it's unlikely that the person who needs it most will find your post. Similarly, if you require help, it's difficult for you to find the post most relevant to you.
The Kindness Project aims to remove the friction in connecting those who are willing to help with those who need it.
What it does
The Kindness Project is on a mission to help the vulnerable amongst us get support during the current pandemic.
Put simply, we connect those in your area who are willing to help with those who need it.
1) Select whether you need help or are willing to offer it 2) Search for your location 3) Browse the results for posts from nearby neighbours who can help you or who require your help. The tags on a post can help you identify which are relevant to you. 4) If you find a suitable result, simply reply to the post to get in touch with the author via email 5) If there are no suitable results, you can create a post to request or offer help for your community to see
How I built it
The application is a single page app built with the following technologies:
- Angular.js front-end
- Node.js + Express for the REST API
- MongoDB data store
Supporting technologies include:
- Bulma (UI framework)
- Mongoose (MongoDB ORM)
- Joi (validation library)
- Grunt (JS task runner)
Challenges I ran into
A key challenge was to define a minimal feature set that would deliver real value to the community. Our goal was to minimise the time to market so that The Kindness Project was able to help people suffering due to the coronavirus lockdown measures as quickly as possible. To this end, we focused on connecting those who need help with those who offer it via email, allowing the subsequent conversation between parties to take place over existing and well-established communication channels.
An additional challenge was to ensure the UX was as intuitive, beautiful and simply designed as possible, so that our application was accessible to a wide range of user demographics. This allows the project to have a positive impact on as many people as possible.
The challenge of ensuring user safety was a consideration from the inception of this project. This led us to develop a robust reporting mechanism, allowing users to inform us when others abuse the platform or do not deliver on their promises.
Accomplishments that I'm proud of
We were able to build a production-ready application over the course of a week which is already having a significant positive impact on many people's lives during this crisis. We're proud to be able to use our skills as engineers to help the most vulnerable in our society during this time of need.
What I learned
This project was an excellent lesson in:
- the importance of deeply understanding the problem you wish to solve
- defining a minimal yet sufficient feature set to address this problem
- the importance of quality UX design
- development of a production-ready REST API and frontend, with the ability to scale elastically
- efficient geospatial queries on NoSQL databases
- using containerisation (Docker) to facilitate cross-platform development and deployment
What's next for The Kindness Project
We will continue to develop this platform and make it even easier to support those in your community. Planned features include:
- Post tag filters
- Keyword search
- Map view
- Pamphlet generator for offline distribution
- AI-assisted reporting and spam filters
- Support for additional communication platforms, e.g. Facebook Messenger