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
- angular.js
- bolt.new
Log in or sign up for Devpost to join the conversation.