How abhay030/expense-tracker works
Expense Tracker is a full-stack personal-finance application. Users authenticate, record income and expenses, then review dashboard and analytics views; related capabilities include currency preferences, receipt extraction, AI categorization and summaries, forecasting, and Excel downloads. The graph separates browser pages, API routing/controllers, domain services, and persisted models. Direct backend calls are cited from sampled sources or the source index; links from UI feature pages to API capabilities are left dashed because those request details were not shown in excerpts.
Main entry points: server.js Express server · axiosInstance.js API client · App.jsx App routing · expenseController.js Expense handlers
Components 34
Browser application
- App routing
frontend/expense-tracker/src/App.jsx - Login and signup
frontend/expense-tracker/src/pages/Auth - User session
frontend/expense-tracker/src/hooks/useUserAuth.jsx - User context
frontend/expense-tracker/src/context/userContext.jsx - Income and expense
frontend/expense-tracker/src/pages/Dashboard - Dashboard page
frontend/expense-tracker/src/pages/Dashboard/Home.jsx - Analytics page
frontend/expense-tracker/src/pages/Dashboard/Analytics.jsx - Settings page
frontend/expense-tracker/src/pages/Dashboard/Settings.jsx - API client
frontend/expense-tracker/src/utils/axiosInstance.js
API and access
- Express server
backend/server.js - Auth routes
backend/routes/authRoutes.js - Auth handlers
backend/controllers/authController.js - JWT access guard
backend/middleware/authMiddleware.js - Income routes
backend/routes/incomeRoutes.js - Expense routes
backend/routes/expenseRoutes.js - Analytics routes
backend/routes/analyticsRoutes.js - Dashboard routes
backend/routes/dashboardRoutes.js - Currency routes
backend/routes/currencyRoutes.js
Finance records
- Income handlers
backend/controllers/incomeController.js - Expense handlers
backend/controllers/expenseController.js - Income records
backend/models/Income.js - Expense records
backend/models/Expense.js - User records
backend/models/User.js
Insights and tools
- Financial analytics
backend/controllers/analyticsController.js - Dashboard data
backend/controllers/dashboardController.js - AI summaries
backend/services/aiSummaryService.js - AI categorization
backend/services/aiCategorizationService.js - Receipt OCR
backend/services/ocrService.js - Expense forecasting
backend/services/predictionService.js - Forecast models
backend/ml/expense_predictor.py - Currency conversion
backend/utils/currencyConverter.js
Other components
- User
- MongoDB
- OpenAI service
Connections 43
- User → App routing: uses
frontend/expense-tracker/src/App.jsx - App routing → Login and signup: routes to
frontend/expense-tracker/src/App.jsx - App routing → Income and expense: routes to
frontend/expense-tracker/src/App.jsx - App routing → Dashboard page: routes to
frontend/expense-tracker/src/App.jsx - App routing → Analytics page: routes to
frontend/expense-tracker/src/App.jsx - App routing → Settings page: routes to
frontend/expense-tracker/src/App.jsx - Login and signup → API client: requests through
frontend/expense-tracker/src/pages/Auth/Login.jsx - User session → API client: fetches user
frontend/expense-tracker/src/hooks/useUserAuth.jsx - User session → User context: updates session
frontend/expense-tracker/src/hooks/useUserAuth.jsx - Express server → Auth routes: mounts
backend/server.js - Express server → Income routes: mounts
backend/server.js - Express server → Expense routes: mounts
backend/server.js - Express server → Analytics routes: mounts
backend/server.js - Express server → Dashboard routes: mounts
backend/server.js - Express server → Currency routes: mounts
backend/server.js - Auth routes → JWT access guard: protects user lookup
backend/routes/authRoutes.js - Auth routes → Auth handlers: dispatches to
backend/routes/authRoutes.js - Income routes → JWT access guard: protects endpoints
backend/routes/incomeRoutes.js - Expense routes → JWT access guard: protects endpoints
backend/routes/expenseRoutes.js - Income routes → Income handlers: dispatches to
backend/routes/incomeRoutes.js - Expense routes → Expense handlers: dispatches to
backend/routes/expenseRoutes.js - Analytics routes → Financial analytics: dispatches to
backend/routes/analyticsRoutes.js - Dashboard routes → Dashboard data: dispatches to
backend/routes/dashboardRoutes.js - Currency routes → Currency conversion: dispatches to
backend/routes/currencyRoutes.js - JWT access guard → User records: loads user
backend/middleware/authMiddleware.js - Auth handlers → User records: uses
backend/controllers/authController.js - Income handlers → Income records: reads and writes
backend/controllers/incomeController.js - Expense handlers → Expense records: reads and writes
backend/controllers/expenseController.js - Dashboard data → Income records: reads
backend/controllers/dashboardController.js - Dashboard data → Expense records: reads
backend/controllers/dashboardController.js - Dashboard data → AI summaries: requests summary
backend/controllers/dashboardController.js - Expense handlers → AI categorization: requests suggestion
backend/controllers/expenseController.js - Expense handlers → Receipt OCR: processes receipt
backend/controllers/expenseController.js - Expense forecasting → Expense records: reads expenses
backend/services/predictionService.js - Expense handlers → MongoDB: persists records
- Income handlers → MongoDB: persists records
- AI summaries → OpenAI service: uses AI
- Analytics page → API client: requests analytics
frontend/expense-tracker/src/pages/Dashboard/Analytics.jsx - Income and expense → API client: requests records
frontend/expense-tracker/src/pages/Dashboard/Settings.jsx - Dashboard page → API client: requests overview
frontend/expense-tracker/src/pages/Dashboard/Home.jsx - Settings page → API client: updates preferences
frontend/expense-tracker/src/pages/Dashboard/Settings.jsx - API client → Express server: calls API
- Expense forecasting → Forecast models: uses forecasting