Inspiration

If you have ever had a roommate or two or three, you know the pain of being woken up by their early morning alarm. On that blessed day where you can finally sleep in, you get a rude awakening from someone else's phone, blaring whatever god awful noise they have chosen; yet they have the audacity to hit snooze and slumber away, leaving you to wake up a few mere minutes later. Ultimately, you wake up irritated and fatigued while your roommate is late for whatever appointment they set the alarm for. Or perhaps, you are that roommate, unable to resist the soft temptation of your bed, submit yourself to the temptation of the snooze button, thinking that there is no harm in a measly moment more. You annoy whoever sleeps near you and you waste time hovering on the line between faint dreams and reality. This has been a near daily issue for many people, ourselves included, so thus, we set out to find a way to ameliorate if not solve this problem.

What it does

Upon opening the app, you would create a account and link payment information to your account. Following that, you are placed into a group with your roommates and, together, set a monetary amount. The usage of the app is straight forward -- at it's core, it is an alarm clock, but the differences begin when the alarm goes off. Every time the snooze button is hit, or the alarm is otherwise ignored -- that is, the person in question remains in bed without waking up -- the agreed amount is transferred from the offender's account into the accounts of the roommates who have had their sleep disrupted. This continues on until the offender finally gets up and fully disables the alarm, with the cost of snoozing increasing each time. Of course, by being in the group, all roommates are held to the same penalties and rewards. This dissuades people from snoozing and waking up properly and also compensates the roommate who were disturbed.

How we built it

The app has two main components, front end and back end. The front end was built as an iOS app using Swift in xCode, having a login/account creation screen, settings, so that your group and payment details can be modified post-account creation, alarm clock, and a transaction history, so you can see how much was been paid or received. The back end was a server coded in Python using the Flask micro-framework and mySQL database.The iOS app will communicate with the API, which in turn makes use of mySQL This manages the login data, roommate groups, payments, and calls to the native alarm.

Challenges we ran into

We were not particularly familiar with the tools used in this project, having done little or no iOS development, and never having written a server. Specifically, only one person had experience with back end and only one person had experience with iOS. With this limited experience and the miscellaneous skills among us, we were hard-pressed to learn all that was necessary to build this app. On particular challenge was with linking the dependencies; while on person had managed to get the server running in their virtual environment, another had failed to do so, in spite of following the same procedure. Upon consultation with a mentor, it was found that the importing of the dependencies, in this case flash and zlib, were no working properly, as it was only being picked up by python 3. Thus, we had to develop on both python 2 and 3.

Accomplishments that we're proud of

We are proud of what we have learned in the process of making this app, as well as the fact that we made something that is potentially useful. Having created the back end and front end and linked them together, what isn't there to be proud of?

What we learned

While not directly related to the end product of this hackathon, we learned much in the process of writing this app. For one, since iOS development is limited to Macs, one of our group members had to run virtual box so that he could work on the code. Additionally, because of our limited experience in app development, we went to the relevant talks and learned how to create specifically, iOS apps. Or the sake of testing the server, we also had to learn how to run a virtual environment, so that we could test the server in it's isolated environment with it's own dependencies. While the length of a single hackathon was not enough to cover the extensive uses of Flask, by using it to create a server, we managed to get a grasp of its potential whether it be for making data aggregator, simulators, or even a personal website.

What's next for WakeTFUp

We hope to eventually deploy WakeTFUp onto the app store so that it may be used on iOS devices; following that, we hope to give it Android support. As we continue developing, we will include more features such as in the payment framework, so that transactions can be done without needing to access the associated credit card or bank account. additionally, so that people my better use the app for their own purposes, set up friend invites and support for multiple groups. So that this app can be more kid-friendly, expanding the user-base, credits may be used instead, where using the app provides credits, and the credits can be used to customize their app experience, such as modification of the alarm sounds.

Share this project:

Updates