Full-stack webmedium

Shared expense splitter

A small web app for a group to record shared expenses, see balances and get the fewest payments that settle everyone up.

Suggested effort
~4h focused work
Window
24 hours
Starts from
An empty repo
Stack
Your choice
Sign in to start this build →

Opens in a new tab. The clock starts when you press Start inside the environment, not before, and your workspace is kept while you step away.

Time window 24 hours. Suggested effort about 4 hours.

Context

A group of friends shares a flat and keeps losing track of who paid for what. They want a small web app where anyone in a group can record an expense, see running balances, and get the fewest payments that settle everybody up.

Core requirements

  • Create a group with a name and a list of members (no accounts or login needed; a shareable group URL is enough).
  • Add an expense: description, amount, payer, and the members it is split between (equal split).
  • Show every member's balance (positive = is owed, negative = owes), updated as expenses change.
  • Edit and delete expenses.
  • "Settle up" view: the list of payments (who pays whom, how much) that clears all balances with as few transfers as practical.
  • Data survives a server restart (SQLite or a JSON file is fine).

Acceptance criteria

  • Money is never represented with binary floating point: amounts are stored as integer cents (or a decimal type). Splitting 10.00 three ways yields 3.34 / 3.33 / 3.33 and balances still sum to exactly 0.
  • After applying the settle-up payments, every balance is exactly 0.
  • Invalid input (negative amount, empty split, unknown member) is rejected with a clear message, in the UI and the API.
  • The balance and settlement logic is covered by unit tests independent of the web layer.

Stretch goals (optional)

  • Unequal splits (exact amounts or percentages) with validation that they add up.
  • Multiple currencies with a fixed, configurable exchange-rate table.
  • Activity log ("Sam edited 'Groceries': 42.00 to 45.50").
  • CSV export of a group's expenses.

Constraints

  • Any stack. Suggested: a small server (Node/Express, FastAPI, Flask) plus a plain or React front end, or a full-stack framework such as Next.js.
  • Must run locally with one or two commands and no external services.

Deliverables (every project)

  • Source code committed in this repository (the grader diffs against the first commit).
  • README.md that replaces the stub, with: how to install, run and test it (copy-pasteable commands); the decisions and trade-offs you made; what you would do next with more time; and a short note on how you used the AI agent (what you delegated, what you checked or rewrote).
  • Automated tests that run with a single command (npm test, pytest, go test ./... or cargo test).
  • No secrets in the repository. Anything configurable reads from environment variables with safe defaults.

Ground rules

  • The 24-hour clock is a window, not a workload. Stop at roughly the suggested effort, then write down what you would do next. A small, finished, tested core beats a large unfinished one.
  • Use the AI agent as much or as little as you like: every prompt is recorded and the report shows how it was used. You are judged on the result and on whether you understood and verified what the agent produced.
  • The work is yours. PraxisAI uses it only to produce your assessment report.
Shared expense splitter: a 24-hour take-home project | PraxisAI