Paying bills has always been a pain, moreso when you are on a road trip with a group of friends. In many occasions, each group will always have that one friend who does all the calculation with his / her spreadsheet magic while everyone just pay as it was written. We thought this process could've been automated, therefore we decided to build Breakups. Breakups is a bill splitting system focusing not only on scenario where each person pay a different size of the share, but it also creates a payment chain that minimizes the required transaction for the group of people to settle all their payments.
What it does
It can splits up bills and calculate how much each person has to pay and to whom. Just download the app and give it around to let people enter the amount they have already paid. And we will display the final payment chain for everyone. The API for doing the processing is open-source so you can always build your own app and make POST requests to the API.
How we built it
We first developed the backend API, which was then used by the Android and iOS for processing purposes through HTTP POST request
Challenges we ran into
The very first challenge (or more like self-assigned challenge) was that none of us has any experience with building an API. However, thanks to the great help from the mentors, it was quickly figured out and worked on with Express.js. The process was still rocky nonetheless but is one that is rather smooth for a first timer. The initial plan to build the mobile on React Native was proven to be too much of a hassle when it comes to dynamically creating UI objects. Hence, after a short half day of fiddling with it, the plan was ditched and we went on to build mobile applications on Native platform. Making HTTP request was a chore. For the first few hours, I forgot to request for permission to access the internet. For the following few hours, it was just trying to figure out how to make the HTTP request asynchronously as it seems to keep throwing errors when making the request on the MainThread. The previous problem of dynamically creating UI objects was dealt with much easier in the native development environment. Swift updates again. So it will take some time to learn Swift 4 before we can actually write the iOS app.
Accomplishments that we're proud of
Building an API on a first attempt. This easily enables us to build apps that utilizes its feature on multiple platforms without having to rewrite much of its core features. In this case, we made an iOS and Android app that make POST request to the API to do the processing. Same can be done to other platforms like web, desktop and even Alexa.
What we learned
What's next for Breakups
Web, Desktop, Alexa, and probably add some more features like OAuth to the API. Maybe you can help? Hacktoberfest is not over yet! PR is welcomed.