Inspiration

Splitting bills after a group outing or trip is always a headache. From calculating who spent how much, to figuring out who owes whom — it's easy to get lost in spreadsheets or manual math. I wanted to solve this problem with a simple, intuitive app that feels effortless to use.

What it does

Split bills smartly — enter, calculate, settle. No math, no mess.

How we built it

This project was built using Angular and styled for a clean, mobile-friendly experience. I used:

  • expr-eval to let users enter math expressions directly in the amount field.
  • LocalStorage to persist sessions without needing any backend.
  • A simple settlement algorithm that calculates who paid more or less, and determines the minimal repayments required.
  • Angular forms with editable rows, delete buttons, and a recalculate feature.

Challenges we ran into

  • Parsing and evaluating expressions safely without errors.
  • Keeping the UI intuitive and snappy for both editing and recalculating in real time.
  • Managing LocalStorage in a way that supports multiple saved sessions.
  • Ensuring minimal repayments (i.e., reducing the number of people each user needs to pay).

Accomplishments that we're proud of

  • Built a fully functional app in a single prompt using Angular.
  • Enabled math expression support in the amount field — no calculator needed!
  • Created a clean, mobile-friendly UI that just works.
  • Designed a fair and transparent settlement system for group expenses.
  • Used LocalStorage to save and recall bill sessions without needing a backend.
  • Handled editable dynamic forms with smooth recalculation logic.

What we learned

  • How to parse math expressions in user inputs using expr-eval.
  • Writing a smart settlement logic that minimizes the number of transactions.
  • Managing dynamic form states and two-way binding cleanly in Angular.
  • Designing a lightweight yet responsive UI that works well on both desktop and mobile.

What's next for Smart Bill Splitter

  • Session export/import – allow sharing bills with friends as JSON or QR.
  • PWA support – make it installable like a native app.
  • Smart reminders – notify users of unsettled bills.
  • Multi-user sync – support collaborative editing using Firebase or Supabase.
  • Image to bill parsing – extract data from uploaded receipts using OCR.

Built With

Share this project:

Updates