Inspiration

Last month, we went on a trip with a group of friends. At some point, different people started covering bills for other members of the group: paying full bills in restaurants, sharing taxi rides from the airport, and so on. Keeping track of such expenses gets really messy really fast!

We tried some of the existing apps that solve this problem, and noticed that they're not very good: some of them are pricey and overly complex, some feel outdated and confusing, and lack some functionality we wanted, such as using the app without creating an account, having fully offline groups, and more.

Naturally, after coming back from the trip, we sat down and did some research. Reading reviews for existing solutions showed that users are not satisfied with pricing policies, lack of certain features, and more. Sensing an opportunity, we decided to build the best group expense management app on the market, and this is how SplitBit was born!

What it does

With SplitBit, users can create shared groups to manage group expenses. When creating a group, you add group members and can share it with other SplitBit users. Once the group is created, everyone can add expenses and transfers to the group (e.g., paying a restaurant bill during the group trip). SplitBit keeps track of balances, suggests settle-ups, shows analytics, and does much more!

Some of the highlights of what SplitBit can do:

  • Users can create online and offline groups. Online groups can be shared with other SplitBit users and synced with the backend, while offline groups work fully on the device. SplitBit is offline-first and works completely without an internet connection, with eventual syncing for online groups.
  • When adding an expense, users can specify many parameters: split expenses by shares, percentages, amounts, or equally. They can add receipts or other relevant images, select categories, and more.
  • Users can receive push notifications about new transactions in the group.
  • SplitBit supports multiple currencies with daily updated conversion rates, allowing users to enter expenses in different currencies.
  • SplitBit provides basic analytics to view expenses per group, per member, for specific time periods, and more.

How we built it

We built the app with React Native and Expo (hence an Android version of SplitBit is coming soon as well), using Tamagui as a styling library and SQLite as a database on the application's side.

Our backend is built with Node.js using Nitro.js as a thin framework (with our own extensions built on top of it) and uses PostgreSQL as a database.

For this project, we also built our own sync engine from scratch that enables us to have an offline-first mobile app with optimistic server sync. There were many challenges during the building process, and we'll probably share them in a blog post at some point.

Challenges we ran into

We faced many challenges and learned a lot along the way. We'll share just two of them here:

  1. The biggest challenge was the implementation of the sync engine. As our number one requirement was data consistency and reliability, we couldn't allow any data loss due to the importance of that information. We went through many iterations and added numerous safeguards to ensure it's as stable as possible.
  2. Another challenge was implementing math and calculations on the app's side. Multiple currencies, different formats, and so on made it challenging to build. We had to write numerous test cases to ensure it works properly.

Accomplishments that we're proud of

We started working on SplitBit about a month ago (the initial commit was on August 10th), and we're extremely proud of what we've built in this short period of time!

We believe that we've built one of the best solutions on the market. It has a clean design, polished UX, and a great set of features (we still lack quite a few things compared to existing players, but we're already working on them!).

What we learned

We've had many technical learnings. Performance was one of the most important aspects we cared about, so we learned a lot about database optimizations. We also gained significant knowledge about implementing data sync protocols (the thesis at https://github.com/mirkokiefer/syncing-thesis was extremely useful). Additionally, we learned a great deal about backend service deployment, observability, and reliability.

What's next for SplitBit - Group Expenses Management

We're already working on the new version of SplitBit. Our goal is to achieve full feature parity with existing competitors and then build more on top, including deeper system integrations such as utilizing App Intents, using custom CoreML models to assign expense categories, and more. We plan to turn SplitBit into the category leader!

Built With

Share this project:

Updates