Shared expense management
Shared expenses for rooms of people, built on Firebase.
- Role
- Mobile developer
- Status
- Ongoing
- Stack
- Flutter / Dart / Firebase Auth / Cloud Firestore / Cloud Functions
Making shared expenses easier to understand.
Users create or join rooms and manage expenses together. Each room keeps its own members, expense history and spending summaries.
Still in development.
- Create rooms and generate invitation codes
- Join a room through an invitation
- Add, edit and delete expenses
- Room summaries and per-member contributions
- Monthly expense statistics
Connecting users, rooms and financial records.
Client
Flutter app
Dart
Firebase Authentication
User identity
Server
Callable Functions
Rooms, invitations and expense CRUD
Summary rebuild
Recomputes existing statistics
Data
Cloud Firestore
Expenses plus room, monthly and member summaries
From room to statistics.
- 1
Create a room
A callable function creates the room and its invitation code on the server.
- 2
Join with an invitation
Joining is idempotent, so repeating it cannot create duplicate membership.
- 3
Record an expense
A Firestore transaction writes the expense and updates the derived statistics together.
- 4
Read the summaries
Room, monthly and member totals are kept alongside the expenses. Clients cannot write them directly.
Decisions that shaped it.
01
Sensitive operations on the server
Room creation, invitations and expense writes go through Callable Functions instead of direct client writes.
02
Statistics that stay consistent
Transactions update expenses and their derived summaries as a single unit, including on edits and deletes.
03
Locked-down client writes
Clients are restricted from writing server-managed statistics.
04
Rebuilding existing data
A summary rebuild function brings pre-existing expense records into the derived statistics.
Want to know more?
Next project
QuizThis
Quiz application