We wanted to make a small impact towards harassment in Vancouver. The four of us have used online classifieds before and knowing how nerve-racking it can be buying from a stranger, decided we'd help others by building a tool / application.
What it does
Safe Sale is a chrome extension that runs whenever you are viewing a product on craigslist. When a seller has specified a location to pickup, it will retrieve a list of safest locations to complete the transaction based on Vancouver RCMP's crime and safety statistics.
How we built it
We built the application into two separate modules. The first module is the backend API running on NodeJS, ExpressJS, and CockroachDB that interfaces with Google Maps API and Google Directions. After receiving a incoming request for safe locations, the backend will determine the closest locations with the maximum security also taking into account whether the user wants to commute via transit, walking, or driving. The second module is the chrome extension that is build using jQuery, MustacheJS and Google Chrome API. It injects code into craigslist ads that have a location set.
Challenges we ran into
Finding a good data source to cross reference crime and safety statistics. We also had no experience with cockroachdb and how to configure/set it up to use it with our NodeJS backend. Lastly, Google API has a limit on each token key, which got very frustrating while trying to test because Google doesn't have visible stats on how much you're used the token.
Accomplishments that we're proud of
Most of us had no web experience, so we're very proud to have build an app that uses many different web technologies and manage to communicate / work together. For some of us it is our first hackathon and we're proud to have made it through the night.
What we learned
We're learnt how to build more advanced chrome extensions that are able to make external requests, as well as be able to integrating a foreign database (cockroachdb) into our existing codebase.
What's next for Safe Sale
Create extensions for other browsers so that we don't leave anyone out.