We originally had the idea of creating a productivity chrome extension that had a silly consequence if the user visited any blacklisted sites. The other half of our inspiration came from a swear jar. Combining the two, we came up with a much more meaningful consequence, in that users would have to pay an amount of money towards charity upon visiting the blacklisted sites. This idea kept our original intent of a productivity extension, while adding an altruistic flair to the project.
What it does
Cookie Jar is a chrome extension that allows users to add a list of blacklisted websites – places the user should avoid while working. Whenever the user goes to those sites, a preset amount of money is donated to charity. Accompanying the Chrome extension is a web interface for browsing insights and an iOS application to authenticate and protect users.
How we built it
The backend was written in Node.js using MongoDB as the database for storing user information. The Express module allowed us to easily handle various routes and the usage of documentation generation with automated testing through mocha allowed for reliable code and communication.
We built the iOS app using multiple frameworks that abstracted a lot of the heavy lifting involved with sending HTTP requests, using Touch ID as well as Keychain, creating buttons in the Storyboard, and using web sockets.
Challenges we ran into
Apple push notifications proved to be especially difficult. During our attempts to implement it, we found online examples and documentation lacking. We were never able to get it working but managed to use websockets as an alternative solution.
We also did not have a designated frontend developer so the entire process of creating the extension was a learning experience. We struggled with some of the design concepts but we were able to find existing projects to use as design inspiration.
Accomplishments that we're proud of
We’re proud of the fact that we were able to actually finish creating an functional application in 36 hours; at past hackathons, we’ve cut it close and sacrificed quality of features to save time.
What we learned
We learned a great deal about web and mobile development, and server integration. Specifically,
interacting with the Stripe API through Node.js, various d3.js visualizations, as well as learning how to integrate frameworks in XCode via CocoaPods, such as Alamofire, DCKit, Socket.io, and LocalAuthentication.
What's next for Cookie Jar
Security is obviously a big issue in this application and given that we only had 36 hours, there are probably several issues that were overlooked. Improvements to user security would be the next step.