Inspiration

Splitting bills with roommates always ends the same way: a messy spreadsheet, a group chat full of "you owe me $12.50," and that one person who never pays up. I wanted an app that makes shared expenses boring. Log it, split it, settle it, done. No awkward conversations.

What it does

BrokeTogether is a mobile app that takes the awkwardness out of shared living expenses:

Households in seconds. Create a home, share an invite code, and your roommates are in. No spreadsheets, no group-chat accounting. Flexible splitting. Every bill can be split equally, selectively among specific people, or with fully custom amounts. Groceries for everyone, dinner for two. One flow handles both. Real-time balances. A live dashboard shows exactly who owes whom, plus smart settlement suggestions that minimize the number of payments needed to square everyone up. Recurring expenses. Rent, wifi, utilities. Set them once and they post themselves every cycle, so the boring bills never slip through the cracks. Shared shopping list (Pro). The whole household adds items with price tracking, marks them off as they're bought, and converts the finished list into a split expense in one tap. The grocery run becomes the expense automatically. Analytics and insights (Pro). See where the household money actually goes with spending breakdowns by category and member, then export everything to PDF or CSV when you need receipts. BrokeTogether Pro. Premium subscription powered by RevenueCat, unlocking the shopping list, analytics, unlimited household members, and smart payment reminders.

How I built it

Client: React Native with Expo, NativeWind styling, React Navigation, Axios, and Expo SecureStore for tokens. Backend: Spring Boot 3 on Java 17, Spring Security with JWT, Spring Data JPA, PostgreSQL. Containerized with Docker and deployed on Railway. Auth: email and password plus Google and Apple mobile sign-in, with token-based password recovery. Monetization: RevenueCat SDK (entitlement: Broketogether Pro) handling the paywall, subscriptions, and entitlement checks, with a RevenueCat webhook keeping the backend's premium status in sync.

Challenges we ran into

The trickiest part was money math you can trust. Every cent has to be accounted for across splits, settlements, and recurring charges, so the balance engine got the most testing of anything in the project. Second was subscription state: keeping the RevenueCat entitlement on the device and the backend's view of "is this user premium?" consistent through webhooks took real care, since each side reports truth on its own schedule. Apple sign-in token verification on the backend was its own adventure. And through all of it, the mobile client and API had to stay in lockstep while both were still evolving.

Accomplishments that I am proud of

Shipped a real monetization loop. The app doesn't just demo a paywall, it runs one: RevenueCat entitlements, a working premium tier, and webhook sync so premium status survives reinstalls and device switches. Money math that holds up. 46 backend endpoints, and the balance engine underneath them accounts for every cent across equal, selective, and custom splits, settlements, and recurring charges. That's the part I tested hardest, because it's the part users have to trust. Two sign-in worlds, one account. Email/password, Google, and Apple sign-in all resolve to a single user identity, with secure token storage and auto-logout on the device. A shopping list that pays for itself. My favorite feature: the household builds a shared list, checks items off, and converts it into a split expense in one tap. It's the kind of small loop that makes the app sticky. Production-grade habits. Dockerized backend on Railway, clean controller/service/repository separation, global exception handling, and docs I can actually hand to another developer.

What I learned

I came in knowing Spring Boot and came out understanding mobile monetization end to end: paywalls, entitlements, webhooks, and the edge cases of app-store billing. I also learned that financial logic deserves tests before features, not after. Most of all, I learned how much polish matters in something people trust with their money. A confusing balance screen kills confidence faster than any missing feature.

What's next for BrokeTogether

The Shipaton build is the foundation. From here:

App store launches. Finish the Google Play closed-testing track and ship to production, then bring the iOS build to the App Store. Smarter money features. Budgets per category with overspend alerts, receipt scanning to create expenses from a photo, and multi-currency support for households splitting costs across borders. Beyond the household. Trip and event groups with their own balances, so the same splitting engine works for vacations and one-off gatherings. Web dashboard. A companion web app for the full analytics and export experience on desktop. Deeper Pro value. More premium insights like spending trends and forecasts, plus richer payment reminders. The goal stays the same: make shared money so boring you never have to think about it.

Built With

Share this project:

Updates

Submission history