In 2013, Peet's Coffee and Tea began rolling out their new Single Cups–a series of Keurig coffee pods for each of their coffee roasts. To promote this product launch, Peet's toured the country giving away samples at events in major cities.
The Do You Give a Cup? campaign was designed to let fans of Peet's coffee decide where these new product giveaways should be held. To gather input from users all over the country, Peet's needed a website that would allow users to say if they "gave a cup" about a certain topic. Whether they did or didn't would determine the next giveaway location.
I took on development of the underlying voting mechanism for the desktop component, as well as the mobile web application. This included a calendar of events that would automatically update itself when voting results were tallied, a gallery of past votes, product descriptions and more.
The biggest challenge on the project was that Peet's wanted users to be able to vote without needing to authenticate themselves. This made it much easier to contribute to the process, but also meant there was no easy mechanism for tracking whether a user had already voted on a given topic.
Using the LocalStorage API (with a cookie fallback), I developed a way to track which topics a user had voted for. This allowed us to stop users from voting multiple times for the same question, and serve them the appropriate content upon subsequent visits to the site.
Because there were many different application states to deal with, I incorporated Backbone.js for model/view data binding. This, coupled with using Handlebars for dynamic templating and Require.js for modularity, made it much easier for me to add additional content as the scope of the application expanded.
Utilizing a Grunt build process to compress images and minify scripts/styles, I was able to deploy a lean yet robust mobile application.
There was a great deal of participation in the giveaway, much of which was driven through the online voting process.
Although the website was quietly retired at the end of the campaign, it served its purpose very well. The mobile application functioned perfectly across an array of devices and there were no reported issues of vote tampering.