How aritrasphs16-design/bill_splitter_website works
SplitEasy is a shared-expense ledger for travelers and roommates. Users sign up or log in, create or join a group, record expenses and splits, review spending and balances, then settle debts; personal expenses, profile preferences, and UPI details are also managed in the dashboard. The UI invokes server actions for ledger operations, while the documented stack identifies Supabase Auth and MongoDB/Mongoose persistence. The README also describes currency conversion, email nudges, and PDF reports. Some subsystems are represented from documentation and the file tree; their internal wiring was not sampled.
Main entry points: mongoose.ts Mongoose connection · [id]/page.tsx Group ledger · expenses/page.tsx Personal expenses · groups/page.tsx Group directory
Components 25
Identity and entry
- Landing page
src/app/page.tsx - Login
src/app/login/page.tsx - Signup
src/app/signup/page.tsx - Supabase Auth
src/lib/supabase.ts - Profile
src/app/dashboard/profile/page.tsx - User actions
src/app/actions/user.ts - Supabase
Expense ledger
- Personal expenses
src/app/dashboard/expenses/page.tsx - Group directory
src/app/dashboard/groups/page.tsx - Group ledger
src/app/dashboard/groups/[id]/page.tsx - Expense actions
src/app/actions/expenses.ts - Group actions
src/app/actions/groups.ts - Group detail actions
src/app/actions/groupDetails.ts - Message actions
src/app/actions/messages.ts
Balances and insights
- Dashboard
src/app/dashboard/page.tsx - Dashboard actions
src/app/actions/dashboard.ts - Settlement algorithm
src/lib/settlement-algorithm.ts
Integrations
- Currency rates API
src/app/api/currency/route.ts - Exchange-rate service
- Email API
src/app/api/send-email/route.ts - Email delivery
Persistence
- MongoDB
- Mongoose connection
src/lib/mongoose.ts - Ledger models
src/models
Other components
- User
Connections 37
- User → Landing page: opens
- User → Login: signs in
- User → Signup: registers
- Landing page → Login: links to
- Login → Supabase Auth: authenticates
- Signup → Supabase Auth: registers with
- Supabase Auth → Supabase: uses
- User → Dashboard: opens
- Dashboard → Dashboard actions: loads data
- Dashboard → Settlement algorithm: calculates balances
- Dashboard → Dashboard actions: saves UPI
- User → Personal expenses: records expenses
- Personal expenses → Expense actions: loads and writes
- Personal expenses → Currency rates API: requests conversion
- Personal expenses → Group ledger: opens group
- Personal expenses → User: exports PDF
- User → Group directory: manages groups
- Group directory → Group actions: loads and changes
- Group directory → Group ledger: opens ledger
- Group directory → User: exports PDF
- User → Group ledger: records group activity
- Group ledger → Group detail actions: loads and adds
- Group ledger → Message actions: loads messages
- Group ledger → Settlement algorithm: uses transactions
- Group ledger → Currency rates API: requests conversion
- User → Profile: manages profile
- Profile → User actions: loads and updates
- Currency rates API → Exchange-rate service: fetches rates
- Email API → Email delivery: sends email
- Expense actions → Mongoose connection: uses persistence
- Group actions → Mongoose connection: uses persistence
- Group detail actions → Mongoose connection: uses persistence
- Message actions → Mongoose connection: uses persistence
- Dashboard actions → Mongoose connection: uses persistence
- User actions → Mongoose connection: uses persistence
- Mongoose connection → MongoDB: connects to
- Mongoose connection → Ledger models: uses models