As software engineers and students, we often procrastinate and are distracted. There are many productivity apps that work on a positive incentive basis, encouraging users to work by promising rewards. However, there are few that use negative incentives to discourage users from distractions.
What it does
Charitry is an app that charges its user a small fee every time the user is distracted for more than 3 seconds and automatically donates the fee to a charity of the user's choice. Here's a sample workflow:
- User Jon downloads Charitry from the Google Playstore
- Jon opens the app for the first time and is asked to authorise a credit or debit card of VISA/Mastercard/Amex payment network. He sets his preferred charity as giving.sg and the default fine amount is USD $ 0.01 per second of distraction.
- Jon sets a timer to study for 1 hour.
- However, Jon gets distracted after 30 minutes and uses Whatsapp for 20 seconds.
- Charitry immediately deducts (20 - 3 = 17 * 0.01 = 0.17 $).
- The amount is held in our account and will be donated to giving.sg
Charitry also has a positive incentive feature to encourage concentrated effort. Here's a sample workflow:
- Jon sets a timer to study for 2 hours.
- Jon doesn't get distracted for more than 3 seconds and successfully completes the 2 hours of study. No amount is deducted from his card.
- Jon is awarded with a certificate from Charitry automatically and the certificate is sent to his email ID.
- Jon can click the "add to Linkedin" button in the email to add the certificate directly to his email.
Thus, you can either be productive or generous. You can't go wrong with Charitry.
How we built it
We used the Java Android SDK as our client-side frontend to build the android app. We used node and express js to build our backend. We also integrated the Stripe API and nodemailer.
Challenges we ran into
We faced a lot of difficulty in using the Stripe API. It was a challenge to use the Stripe payments for our purpose because there wasn't a prebuild UI component or example that we could refer to. We had to navigate permissions to store the user's card first and then be able to charge it arbitrarily in the future.
We also faced a challenge in implementing the node server. Thankfully, we learnt express to simplify our task. We also faced difficulty in communicating with the client-side android project.
Accomplishments that we're proud of
-Successfully implementing the Stripe API
- Building a #SociallyUseful hack that helps both the user by increasing their productivity and the society by increasing donation
What we learned
- Building and deploying a node js server
- Android Native using Java
What's next for Charitry
- Implementing Firebase Cloud Messaging (FCM), an advanced version of GCM, to keep a track of the background popping notifications so that we can factor the amount of distractions in the reward points apart from the certificate as earlier mentioned.
- Perpetually increase fine if repeated distractions occur.
- Introduce maximum cap of fine in order to prevent excess fine.
- Introduce an emergency pause/stop button that charges a fixed fee and lets the user pause/stop the current timer.
- Introduce hardware shortcut to immediately stop the app in case of an emergency without a fine. Maximum number of use also set in order to prevent mischief.