How sahastrawin/spliter-master works
Splitr lets authenticated users organize shared expenses, choose equal, percentage, or exact splits, inspect balances and spending, and record settlements. The main UI is backed by Convex queries and mutations for users, groups, expenses, settlements, and dashboard data; Convex supplies live updates. Separate Inngest jobs support debt reminders and AI spending insights. Paths for those documented capabilities are present in the tree, but their internal calls were not sampled, so the graph shows only the documented connections and marks external integrations optional.
Main entry points: use-convex-query.jsx Query/mutation hook · schema.js Convex database · route.js Job endpoint · payment-reminders.js Payment reminders
Components 26
User experience
- Sign in / up
app/(auth)/sign-in/[[...sign-in]]/page.jsx - Authenticated app
app/(main)/layout.jsx - Dashboard
app/(main)/dashboard/page.jsx - Contacts & groups
app/(main)/contacts/page.jsx - Group detail
app/(main)/groups/[id]/page.jsx - Person detail
app/(main)/person/[id]/page.jsx - New expense
app/(main)/expenses/new/page.jsx - Settlement form
app/(main)/settlements/[type]/[id]/page.jsx - Convex client
components/convex-client-provider.jsx - Query/mutation hook
hooks/use-convex-query.jsx
Expense domain
- Groups & members
convex/groups.js - Expense splits
convex/expenses.js - Debt settlements
convex/settlements.js - Balances & analytics
convex/dashboard.js - Contact queries
convex/contacts.js
Convex data
- User sync
convex/users.js - Convex database
convex/schema.js
Background services
- Job endpoint
app/api/inngest/route.js - Payment reminders
lib/inngest/payment-reminders.js - Spending insights
lib/inngest/spending-insights.js - Inngest client
lib/inngest/client.js - Email delivery
convex/email.js
Other components
- User
- Gemini AI
- Resend
- Clerk
Connections 31
- User → Sign in / up: signs in
- Sign in / up → Clerk: authenticates
- User → Authenticated app: opens app
- Authenticated app → Convex client: provides client
- Convex client → Clerk: gets auth
- Dashboard → Query/mutation hook: queries
- Contacts & groups → Query/mutation hook: queries
- Group detail → Query/mutation hook: queries
- Person detail → Query/mutation hook: queries
- New expense → Query/mutation hook: mutates
- Settlement form → Query/mutation hook: mutates
- Query/mutation hook → Convex client: uses client
- Query/mutation hook → Balances & analytics: calls
- Query/mutation hook → Contact queries: calls
- Query/mutation hook → Groups & members: calls
- Query/mutation hook → Expense splits: calls
- Query/mutation hook → Debt settlements: calls
- User sync → Convex database: reads/writes
- Groups & members → Convex database: reads/writes
- Expense splits → Convex database: reads/writes
- Debt settlements → Convex database: reads/writes
- Balances & analytics → Convex database: reads
- Contact queries → Convex database: reads
- Job endpoint → Inngest client: serves jobs
- Job endpoint → Payment reminders: registers
- Job endpoint → Spending insights: registers
- Payment reminders → Convex database: finds debts
- Payment reminders → Email delivery: sends reminders
- Email delivery → Resend: delivers email
- Spending insights → Convex database: reads/stores insights
- Spending insights → Gemini AI: generates insights