We were intrigued with the idea of developing an app for a smartwatch, since it is such a different field compared to traditional app development. The simplicity of design and the pure accessibility of applications for wearables caught our collective eye, and with two members of the team already owning and experiencing the simplicity of a smartwatch, we set our minds to developing an application that could challenge our most experienced member while also helping to build the skills and problem solving abilities of our less experienced teammates.

What it does

The main functionality of our application is to serve as a backup plan or a failsafe for a user who acknowledges the possibility of a dangerous situation somewhere in his or her immediate future. Our user is able to set a "failsafe" timer for a specific length of time in which they could foresee a possible unfavorable outcome, such as walking through a certain neighborhood after a late-night shift. At any point during this timer's descent, if the user feels as if there is no longer a threat, the timer he or she set can be cancelled and nothing happens; however, if the user fails to cancel the timer due to some external threat or unforeseen misfortune, the app automatically sends out an alert to this user's pre-determined emergency contacts. This message describes the situation and suggests that the user may be in need of immediate help; as such, the user's last recorded GPS coordinates are provided to aid in the location of the user if need be. The application also has a so-called "panic button" functionality, where the message that would usually be sent upon the expiration of the timer would be sent immediately. (While we currently do not support adding of custom phone numbers, we plan to do this with an android app; we simply did not have time to do both an android app and pebble app. The app does, however, currently support the previously described messaging aspect—it just has a hardcoded phone number to which it sends the alert.)

How we built it

We built the app using CloudPebble, Pebble's online cloud based IDE. The language we created with was the pebble.js framework which is based on node.js.

Challenges we ran into

We ran into quite a few challenges, from just getting pebble to setup and compile, to issues with REST endpoints and trouble finding adequate documentation. The primary problem we ran into using Pebble watches was that they do not support third-party access to send out a text from a user's phone to a user's contact. Not having support for texting natively led us to a search for a web based SMS service. We chose to use Twilio, as their website ended up really impressing during their pre-hacking demonstration, and using it was pretty fluid as well. We successfully set up a REST endpoint to which we simply had to make a POST request using Pebble.js, and this succeeded in sending a text message to whichever phone number it was passed.

Accomplishments that we're proud of

Having very little experience using Javascript coming into this event, we're proud of the way we dealt with the variety of bugs and growing pains that arose from exploring the capabilities of Javascript and a few of its frameworks. It was certainly a challenge for our team of three, having two primarily Java programmers, to really take a chance and dive into a project that diverged pretty thoroughly from the comfort zone of the classroom environment. It's always tough knowing that you're going to fail, and fail we did; but we felt we truly buckled down and came out of it the experience as better programmers, plus with a pretty cool application that has the potential to save a life someday in the future.

What we learned

We all learned a variety of different skills and lessons while working on this project together. One team member was already decently proficient with JavaScript and took this as an opportunity to focus on working with the API and other more difficult tasks relating to JavaScript. He was able to learn how to use the Twilio API for basic tasks such as sending text messages and quite a bit about how the Pebble likes to handle its data. The other two members had only a brief familiarity with javascript and as such were able to accumulate a ton of actual coding experience from this project. That first jump from watching videos and beginning to understand concepts to finally writing a function that does specifically what you intended is huge, especially when it comes to both feeling accomplished and gathering real programming and debugging skills more effectively than any video or lecture can provide.

What's next for Watch My Back

As previously mentioned, our first priority is the development of at the very least an android companion app for our Pebble application. While we will support functionality for the user to manually input emergency contact numbers using the pebble's buttons, an android app would let the user enter phone numbers with ease, or even select one from the comments. We could even add the capability to send reports out via email, in case the user doesn't have a contact point or they simply wish to track a stolen device without sending out alerts that could unintentionally describe a situation as potentially life-threatening.

We'd also love to eventually add features that would prove vital in situations where, say, the user's phone and watch were stolen. Ideally, we'd like to have the watch consistently (send out/push) out GPS coordinates to the emergency contacts of the user, which would prove extremely beneficial in the rare case of a kidnapping, or the more common occurrence of assisting in the location of a stolen device.

In summary, we created an app for pebble smart watches that could be considered a "smart" panic button. Most panic buttons require a user to pull out their phone or watch in times of distress but there might not be time to do that. With our app the panic button is constantly running and rather than needing to be initialized and then activated, it simply needs to be shut off or pressed within the already running app.

Thank you for looking at our app! We'd love to show it off more in person.

Share this project: