Roomly

Takes shared bills and chores out of the group chat: housemates record who paid, settle a debt only when the other side confirms, and see chores, events and open bills on one calendar. Splits must balance to the cent, enforced in Postgres.

The problem Link to heading

Shared expenses live in a group chat and a half-remembered mental ledger. Chores rotate until somebody stops believing it is fair. Every existing app solves one of these and asks the household to install three.

What I built Link to heading

One app with expenses, chores, calendar and shopping in the same account. Splits must balance to the cent or the write is rejected by Postgres, a settlement is only recorded when the person who received the money confirms it, and recurring expenses are generated by a scheduled idempotent job instead of being retyped monthly.

Implementation Link to heading

  • Invariants in the database: Row-level security plus constraints that make unequal splits balance and stop a debt being settled twice, so no client path can write an inconsistent ledger.
  • Settlement needs both sides: Either flatmate can record a payment, but it only closes when the recipient confirms it, which is the part every splitting app leaves to trust.
  • Chores that stay fair: Assignment, recurrence and rotation with a weekly leaderboard, so the rota is visible rather than remembered.
  • Greek and English throughout: Full i18n including date and currency formatting and due-date wording, tested per locale.
  • Designed, not themed: A cream and ink visual system built on semantic design tokens, replacing brand-specific utility classes so components carry meaning instead of a colour name.