How aakashhh-17/money-manager works
FinMate is a personal-finance and shared-expense application. A user signs in, manages accounts and transactions, reviews dashboard and budget information, and can create groups, record split expenses, see balances, and settle debts. The client exposes these workflows through protected pages and service modules; the server mounts corresponding API route modules and also registers scheduled/event functions. Sampled controllers show database-backed authentication, transactions, expense splitting, group balances, and settlements. Other subsystem connections are limited where implementation excerpts were unavailable.
Main entry points: index.js Express server · App.jsx App routes · db.js Postgres database · transaction.controller.js Transaction logic
Components 32
Client experience
- App routes
client/src/App.jsx - Auth context
client/src/context/AuthContext.jsx - Dashboard
client/src/pages/Dashboard.jsx - Transactions
client/src/pages/Transactions.jsx - Groups pages
client/src/pages/Groups.jsx - Group detail
client/src/pages/GroupDetail.jsx - Auth service
client/src/services/authService.js - Account service
client/src/services/accountService.js - API client
client/src/services/api.js
API and domain
- Account routes
server/routes/account.route.js - Auth routes
server/routes/auth.route.js - Transaction routes
server/routes/transaction.route.js - Dashboard routes
server/routes/dashboard.route.js - Budget routes
server/routes/budget.route.js - Category routes
server/routes/category.route.js - Transaction logic
server/controllers/transaction.controller.js - Authentication
server/controllers/auth.controller.js - Postgres database
server/db.js - Express server
server/index.js
Shared expenses
- Group routes
server/routes/group.route.js - Expense routes
server/routes/expense.route.js - Expense logic
server/controllers/expense.controller.js - Group logic
server/controllers/group.controller.js - Settlement logic
server/controllers/settlement.controller.js - Split calculator
server/services/splitCalculator.js - Balance calculation
server/services/balance.service.js
Background services
- Inngest functions
server/inngest/functions.js - Email service
server/services/email.service.js - Inngest client
server/inngest/client.js
Other components
- User
- Gemini AI
- Resend
Connections 27
- User → App routes: uses
- App routes → Auth context: provides auth
- App routes → Dashboard: routes
- App routes → Transactions: routes
- App routes → Groups pages: routes
- App routes → Group detail: routes
- Auth service → API client: sends requests
- Account service → API client: sends requests
- Express server → Auth routes: mounts
- Express server → Account routes: mounts
- Express server → Transaction routes: mounts
- Express server → Dashboard routes: mounts
- Express server → Budget routes: mounts
- Express server → Category routes: mounts
- Express server → Group routes: mounts
- Express server → Expense routes: mounts
- Authentication → Postgres database: reads and writes
- Transaction logic → Postgres database: reads and writes
- Transaction logic → Gemini AI: requests receipt parsing
- Expense logic → Postgres database: reads and writes
- Expense logic → Split calculator: computes splits
- Group logic → Postgres database: reads and writes
- Group logic → Balance calculation: computes balances
- Settlement logic → Postgres database: records settlement
- Inngest client → Inngest functions: registers functions
- Express server → Inngest functions: serves functions
- Email service → Resend: sends email