How tsujit74/kharchamate works
KharchaMate lets people form shared-expense groups, record and split costs, inspect balances, and settle what they owe; admins also manage users, groups, announcements, and support. The main flow runs from the Next.js interface through API services and Express routes/controllers to MongoDB-backed models. Settlement validation and group PDF reporting are distinct backend stages. The README documents the core workflow; sampled source confirms representative API dispatch, data access, and settlement logic, but not every frontend-to-service connection.
Main entry points: server.js Express API · adminController.js Admin operations · Group.js Groups · api.ts API services
Components 27
Web application
- Groups and expenses
frontend/app/groups/[groupId]/page.tsx - Dashboard and insights
frontend/app/dashboard/page.tsx - Settlement requests
frontend/app/settlement-requests/page.tsx - Authentication
frontend/app/auth/page.tsx - API services
frontend/app/services/api.ts - Auth service
frontend/app/services/auth.service.ts
API and business logic
- Express API
backend/server.js - Group routes
backend/routes/groupRoutes.js - Expense routes
backend/routes/expenseRoutes.js - Balance routes
backend/routes/blanceRoutes.js - Auth routes
backend/routes/authRoutes.js - Group operations
backend/controllers/groupController.js - Expense operations
backend/controllers/expenseController.js - Settlement operations
backend/controllers/settlementController.js - Payment validation
backend/service/settlementService.js - Group PDF report
backend/controllers/groupReportController.js
Persistent data
- Groups
backend/models/Group.js - Expenses
backend/models/Expense.js - Settlements
backend/models/Settlement.js - Users
backend/models/User.js - Announcements
backend/models/Announcement.js - Support tickets
backend/models/Ticket.js
Administration
- Admin routes
backend/routes/adminRoutes.js - Admin operations
backend/controllers/adminController.js
Other components
- Group member
- Administrator
- MongoDB
Connections 43
- Group member → Groups and expenses: manages costs
- Group member → Dashboard and insights: reviews balances
- Group member → Settlement requests: settles payments
- Group member → Authentication: signs in
- Groups and expenses → API services: requests group data
- Dashboard and insights → API services: loads summaries
- Settlement requests → API services: requests payments
- Authentication → Auth service: submits credentials
- Auth service → API services: sends auth requests
- API services → Express API: calls API
- Express API → Group routes: dispatches groups
- Express API → Expense routes: dispatches expenses
- Express API → Balance routes: dispatches balances
- Express API → Auth routes: dispatches auth
- Express API → Admin routes: dispatches admin
- Group routes → Group operations: invokes handlers
- Group routes → Group PDF report: invokes report
- Expense routes → Expense operations: invokes handlers
- Balance routes → Settlement operations: invokes handlers
- Group operations → Groups: reads and writes
- Expense operations → Groups: reads groups
- Expense operations → Expenses: reads and writes
- Settlement operations → Payment validation: validates payments
- Payment validation → Groups: checks membership
- Payment validation → Expenses: reads expenses
- Payment validation → Settlements: reads payments
- Settlement operations → Settlements: reads and writes
- Group PDF report → Groups: loads group
- Group PDF report → Expenses: loads expenses
- Group PDF report → Settlements: reads settlements
- Administrator → Admin routes: manages platform
- Admin routes → Admin operations: invokes handlers
- Admin operations → Users: reads and writes
- Admin operations → Groups: reads and writes
- Admin operations → Expenses: reads expenses
- Admin operations → Announcements: manages announcements
- Admin operations → Support tickets: manages tickets
- Groups → MongoDB: persists records
- Expenses → MongoDB: persists records
- Settlements → MongoDB: persists records
- Users → MongoDB: persists records
- Announcements → MongoDB: persists records
- Support tickets → MongoDB: persists records