How vishnuvardhangupthajavvaji/split-even works
SplitEven is a group-expense ledger: people create a group, add members, record expenses with configurable splits, inspect per-currency balances and optimized settlement transfers, then record payments. The React interface calls a Django REST API; expense splitting and balance/debt calculations are separate domain layers, while Django models persist the ledger. README also documents activity history, CSV export, and recurring-expense templates/scheduled generation. Some frontend and backend modules were not sampled, so those branches use documented capabilities and tree-supported paths; no scheduler is shown as deployed.
Main entry points: views.py API operations · api.js HTTP API client · GroupPage.jsx Group workspace · settings.py Ledger database
Components 23
React interface
- Browser app
frontend/src/main.jsx - Page routing
frontend/src/App.jsx - Groups home
frontend/src/pages/GroupsHome.jsx - Group workspace
frontend/src/pages/GroupPage.jsx - Expense entry
frontend/src/components/ExpenseForm.jsx - Balances & settle
frontend/src/components/BalancesTab.jsx - Activity feed
frontend/src/components/ActivityFeed.jsx - HTTP API client
frontend/src/api.js
REST API
- API routing
backend/ledger/urls.py - API operations
backend/ledger/views.py - Request serialization
backend/ledger/serializers.py
Ledger domain
- Groups & members
backend/ledger/models.py - Expenses & splits
backend/ledger/models.py - Payments
backend/ledger/models.py - Recurring templates
backend/ledger/models.py - Activity history
backend/ledger/models.py - Ledger database
backend/config/settings.py
Ledger services
- Split calculation
backend/ledger/splitting.py - Balance & simplification
backend/ledger/balances.py - Activity logging
backend/ledger/utils.py - Ledger CSV export
backend/ledger/views.py - Due expense generation
backend/ledger/management/commands/run_recurring_expenses.py
Other components
- Group participant
Connections 36
- Group participant → Browser app: uses
- Browser app → Page routing: renders
- Page routing → Groups home: routes
- Page routing → Group workspace: routes
- Group workspace → Expense entry: renders
- Group workspace → Balances & settle: renders
- Group workspace → Activity feed: renders
- Groups home → HTTP API client: requests groups
- Group workspace → HTTP API client: loads group ledger
- Expense entry → HTTP API client: creates or edits
- Balances & settle → HTTP API client: loads balances; records payment
- Activity feed → HTTP API client: loads activity
- HTTP API client → API routing: HTTP requests
- API routing → API operations: dispatches
- API operations → Request serialization: validates and formats
- API operations → Groups & members: reads and writes
- API operations → Expenses & splits: reads and writes
- API operations → Payments: reads and writes
- API operations → Recurring templates: reads and writes
- API operations → Activity history: reads
- API operations → Split calculation: computes expense splits
- API operations → Balance & simplification: computes balances and transfers
- API operations → Activity logging: logs events
- API operations → Ledger CSV export: serves CSV
- Ledger CSV export → Expenses & splits: reads ledger
- Ledger CSV export → Payments: reads payments
- Activity logging → Activity history: writes events
- Due expense generation → Recurring templates: reads due templates
- Due expense generation → Split calculation: computes splits
- Due expense generation → Expenses & splits: creates expenses and splits
- Due expense generation → Activity logging: logs generated events
- Groups & members → Ledger database: persists
- Expenses & splits → Ledger database: persists
- Payments → Ledger database: persists
- Recurring templates → Ledger database: persists
- Activity history → Ledger database: persists