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

I think the major thing we learned was how to build an API having never did one before. That also refers to our lack of experience with JavaScript and node.js as a whole. Aside from that we also grew on our mobile development skills on learning to make HTTP requests on native mobile development. Albeit failing to churn out the product of React Native, I think the process has thought me quite a lot on that as well.

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.

Share this project: