Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions Projects/2-Intermediate/Expense-Splitter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Expense Splitter
**Tier:** 2-Intermediate

Tracking shared expenses can get messy, especially during trips or among roommates.
In this project, you’ll build an Expense Splitter app that helps users divide group expenses fairly, calculate balances, and generate minimal settlement plans.

## User Stories

- [ ] User can create a new group/event and add participants.
- [ ] User can add an expense with: title, amount, payer, date, and participants included.
- [ ] User can choose how to split an expense: equally, by shares/percentages, or custom per-person amounts.
- [ ] User can edit or delete an expense.
- [ ] User can view the current balance for each participant (positive = should receive, negative = owes).
- [ ] User can see a settlement suggestion that minimizes the number of transactions to settle everyone.
- [ ] User can export group data as CSV or JSON.
- [ ] User can filter expenses by date, payer, or category.

## Bonus features

- [ ] User can scan receipts using OCR to extract amounts and participants automatically.
- [ ] User can use multi-currency support with live exchange-rate conversion.
- [ ] User can integrate payment options (PayPal, Venmo, etc.) to settle balances.
- [ ] User can access the app offline with local storage or sync later.
- [ ] User can handle tax/tip per expense and apply rounding options.
- [ ] User can upload profile avatars and set a default currency.

## Useful links and resources

- [Splitwise](https://www.splitwise.com) – UX inspiration
- [Minimal cash flow settlement algorithm (Greedy approach)](https://medium.com/@krunallathiya/how-to-split-bills-fairly-like-splitwise-app-35ed9a98c3e5)
- [Chart.js Documentation](https://www.chartjs.org/docs/latest/)
- [Fetch API (MDN)](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)

## Example projects

- [Splitwise](https://www.splitwise.com/) – commercial example
- [Settle Up](https://settleup.io/) – open-source inspired expense app
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix hyphenation in compound adjective.

Apply this diff to correct the grammar issue:

-- [Settle Up](https://settleup.io/) – open-source inspired expense app
+- [Settle Up](https://settleup.io/) – open-source-inspired expense app
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- [Settle Up](https://settleup.io/) – open-source inspired expense app
- [Settle Up](https://settleup.io/) – open-source-inspired expense app
🧰 Tools
🪛 LanguageTool

[grammar] ~37-~37: Use a hyphen to join words.
Context: ... Up](https://settleup.io/) – open-source inspired expense app

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
In Projects/2-Intermediate/Expense-Splitter.md around line 37, the compound
adjective "open-source inspired" is hyphenated incorrectly; change it to "open
source–inspired" (use "open source" as the noun phrase and an en dash or hyphen
between "source" and "inspired" per style) so the line reads: [Settle
Up](https://settleup.io/) – open source–inspired expense app.