We originally set out to work on the problem of mental health, and create a tool that could track your emotions such as sadness. We realized though, no one wants to know when they are sad, they want to know when they are happy! This quickly evolved into CU-Smile, as we focused more and more on providing users with data on what makes them happy so that when they are down, they can use that data to feel better.
What it does
CU-Smile integrates the Pebble smartwatch with a full CRUD web application, allowing users to easily indicate when they are happy, while still having the web interface to later review and edit their smiles.
How we built it
CU-Smile is built using the JS library Meteor. We provide a route for the pebble watch to hit with an AJAX call, using query vars to pass the application the user's current latitude and longitude.
Challenges we ran into
The hardest part hands down of the process was getting the pebble's AJAX calls to actually trigger the code that stores the smile. In our first implimentation, the browser and Postman would easily hit the url and submit a smile event into the collection. cURL and the actual AJAX call however, would hit the call, yet not trigger the code on the backend to store the given query vars. 5 different implimentations, and 8 hours later, and we still had the same results. It was not until a few hours later when one of our team members decided to make another go at fixing it, and 2 hours later, we finally had the pebble talking to the application.
The next hardest part was dealing with the recent meteor update. Meteor had a major version update just a day or two prior to the hackathon. It started with the project generation and structuring, which was majorly different than we had just spent time learning. But where it really hurt was when attempting to deploy the application. Due to the brand new version, our Meteor builpack for Heroku was failing. We found an updated buildpack, (that had literally been updated that morning), to use for this instead. However for whatever reason, this one was much lower quality, taking Heroku 10+ minutes to build the application. This forced us to limit how often we pushed to production, as we would waste a lot of time waiting on it.
Accomplishments that we're proud of
We are very proud of how, after the 8+ hours of trying to get pebble to talk to meteor, we finally pulled it off. Let's just say that during that time where we were working on this, there were very few "smiles". However, after taking a break from the code, looking into possible pivot alternatives, the team stayed determined, and 12 hours after the first request was sent, we finally achieved the core of our application.
We are also proud of the way that our organization lead us to create the barebones MVP needed for the demo. Whenever we would analyze the features for the project, we would put it into different versions. V1, was the must get done to not look stupid on stage, V2 was the nice to have features, and V3 was the imaginary place where we are infinitely productive. This allowed us to prioritize our time, ending us with a working application to demo.
What we learned
Beyond the technical, our team learned a hard lesson about perseverance and grit. Without learning to buckle down and work, we never would have gotten our application working. Furthermore, learning about prioritizing features and focusing on "the features you would make if you only had 15 minutes left".
What's next for CU-Smile
The next steps for CU-Smile is to add a tagging feature. This would make tags based on time of day (morning, afternoon, night, etc), weather, and allow users to create their own tags. This feature would allow us to track and do even more with the data that we already get from the pebble. Furthermore, because this is a meteor app, integrating the app with Phonegap to get this on mobile would be great as well, as it would allow even more convenience in using the application.