Bill Split
Finance · React + Node (Express) · 4 @molecule/* packages
Splitwise-like group expense splitting with shared costs, per-member balances, simplified settle-up suggestions, and activity feed
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (16)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - Groups
/groups(signed in) - GroupDetail
/groups/:id(signed in) - NewExpense
/expenses/new(signed in) - Balances
/balances(signed in) - Activity
/activity(signed in) - Friends
/friends(signed in) - Settings
/settings(signed in) - About
/about - Privacy
/privacy - Terms
/terms
Data model (8 tables)
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- groups — id, user_id, name, description, currency, created_at, updated_at
- members — id, user_id, name, email, is_self, created_at
- memberships — id, group_id, member_id, role, joined_at
- expenses — id, group_id, payer_member_id, amount_cents, description, category, date, split_method, …
- expense_shares — id, expense_id, member_id, amount_cents
- settlements — id, group_id, from_member_id, to_member_id, amount_cents, method, date, note, …
- activities — id, group_id, kind, payload, created_at
API (9 handlers)
- \_activity
api/src/handlers/_activity.ts - \_balances
api/src/handlers/_balances.ts - \_seed
api/src/handlers/_seed.ts - activities
api/src/handlers/activities.ts - dashboard
api/src/handlers/dashboard.ts - expenses
api/src/handlers/expenses.ts - friends
api/src/handlers/friends.ts - groups
api/src/handlers/groups.ts - settlements
api/src/handlers/settlements.ts
Built from 4 @molecule/* packages
Required secrets
DATABASE_URLPostgreSQL connection string
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing