How muuhesham/finance-tracker works
FinanceFlow is a personal-finance web app for authentication, income and expense management, monthly summaries, visualizations, and rule-based insights. A user signs in, selects a month, views dashboard data and tips, and can add, edit, or delete transactions; dashboard changes trigger data reloads. The backend separates HTTP routing, controllers, services, and MongoDB models. The README documents Google OAuth and insight-generation capabilities; some service and route implementations were not excerpted, so uncertain internal links are omitted or marked unverified.
Main entry points: app.js Express app · DashboardPage.jsx Monthly dashboard · client.js API client · App.jsx App routing
Components 29
Web experience
- App routing
frontend/src/app/App.jsx - API client
frontend/src/api/client.js - Monthly dashboard
frontend/src/features/dashboard/DashboardPage.jsx - Dashboard charts
frontend/src/components/charts/MonthlyTrendChart.jsx
Identity
- Sign-in UI
frontend/src/features/auth/AuthPage.jsx - OAuth callback UI
frontend/src/features/auth/GoogleCallbackPage.jsx - Session context
frontend/src/features/auth/AuthContext.jsx - Auth routes
backend/src/routes/auth-routes.js - Auth controller
backend/src/controllers/AuthController.js - Auth service
backend/src/services/AuthService.js - Google auth service
backend/src/services/googleAuthService.js - Users
backend/src/models/User.js
API orchestration
- Express app
backend/src/app.js - Dashboard routes
backend/src/routes/dashboard-routes.js - Dashboard controller
backend/src/controllers/DashboardController.js - Dashboard service
backend/src/services/DashboardService.js
Finance domain
- Transaction editor
frontend/src/components/transactions/TransactionForm.jsx - Transaction list
frontend/src/components/transactions/TransactionList.jsx - Transaction routes
backend/src/routes/transaction-routes.js - Transaction controller
backend/src/controllers/TransactionController.js - Transaction service
backend/src/services/TransactionService.js - Transactions
backend/src/models/Transaction.js
Insights
- Insight routes
backend/src/routes/insight-routes.js - Insight controller
backend/src/controllers/InsightController.js - Insight engine
backend/src/services/InsightService.js - Insight strategies
backend/src/services/insightGenerators.js
Other components
- Finance user
- Google OAuth
- MongoDB
Connections 44
- Finance user → App routing: uses
frontend/src/app/App.jsx - App routing → Sign-in UI: routes to
frontend/src/app/App.jsx - App routing → OAuth callback UI: routes to
frontend/src/app/App.jsx - App routing → Monthly dashboard: routes to
frontend/src/app/App.jsx - Sign-in UI → Session context: uses
frontend/src/features/auth/AuthPage.jsx - OAuth callback UI → Session context: uses
frontend/src/features/auth/GoogleCallbackPage.jsx - Session context → API client: calls
frontend/src/features/auth/AuthContext.jsx - Monthly dashboard → API client: requests data
frontend/src/features/dashboard/DashboardPage.jsx - Monthly dashboard → Dashboard charts: renders
frontend/src/features/dashboard/DashboardPage.jsx - Monthly dashboard → Transaction editor: renders
frontend/src/features/dashboard/DashboardPage.jsx - Monthly dashboard → Transaction list: renders
frontend/src/features/dashboard/DashboardPage.jsx - Transaction editor → Monthly dashboard: submits changes
frontend/src/features/dashboard/DashboardPage.jsx - Transaction list → Monthly dashboard: sends edit/delete
frontend/src/features/dashboard/DashboardPage.jsx - Express app → Auth routes: mounts
backend/src/app.js - Express app → Transaction routes: mounts
backend/src/app.js - Express app → Dashboard routes: mounts
backend/src/app.js - Express app → Insight routes: mounts
backend/src/app.js - Auth routes → Auth controller: dispatches
backend/src/routes/auth-routes.js - Transaction routes → Transaction controller: dispatches
backend/src/routes/transaction-routes.js - Dashboard routes → Dashboard controller: dispatches
backend/src/routes/dashboard-routes.js - Insight routes → Insight controller: dispatches
backend/src/routes/insight-routes.js - Express app → Auth controller: injects services
backend/src/app.js - Express app → Transaction controller: injects service
backend/src/app.js - Express app → Dashboard controller: injects service
backend/src/app.js - Express app → Insight controller: injects service
backend/src/app.js - Express app → Auth service: creates
backend/src/app.js - Express app → Google auth service: creates
backend/src/app.js - Express app → Transaction service: creates
backend/src/app.js - Express app → Dashboard service: creates
backend/src/app.js - Express app → Insight engine: creates
backend/src/app.js - Express app → Transactions: provides model
backend/src/app.js - Express app → Users: provides model
backend/src/app.js - Express app → Google OAuth: configures OAuth
- Express app → MongoDB: persists via
- Insight engine → Insight strategies: uses strategies
- Auth service → Users: reads/writes
- Google auth service → Users: reads/writes
backend/src/services/googleAuthService.js - Transaction service → Transactions: manages
- Dashboard service → Transactions: summarizes
- Insight engine → Transactions: analyzes
- API client → Auth routes: calls auth API
- API client → Transaction routes: calls transaction API
- API client → Dashboard routes: calls dashboard API
- API client → Insight routes: calls insights API