A multi-user expense tracker made for making splitting the bills, keeping track of debts, and providing summary of consumption easier. Click here to check it out in production (branch main).
-
Friends A, B and C spend the weekend in a rented weekend house, they travel by the same car:
- A pays for gas, which is split 3-way
- B pays for all the food and soft-drinks (split 3-way)
- B pays for alcoholic beverages, which are split 2-way, since person A doesn't drink alcohol
- C books and pays for the accommodation (split 3-way)
After everyone joined the same group, created the relevant categories, added their receipts (marking shares of each item vs. user), the balance view will show each "realtion of debt" within the group, while the consumption view shows the total consumption of each category/user.
The app uses Next.js, Auth.js, Recharts, drizzle ORM (with SQLite backend) and custom migrations written in plain SQL, which are handled atomically (also rolling back on FK violations) during instrumentation. The database sports a few solutions aiming to minimize storage size.
Docker images are generated from select commits (via inserting "#deploy" in the head commit message). A previous version of branch staging is deployed here, providing access to (the clone of) production data, while branch dev is deployed here without access to production data or OAuth (any email address is viable and the password TEST_PASSWD).