How alakhnamdev/expensetracker works
This is a personal expense-tracking product: users authenticate, record expenses, manage category budgets, inspect financial summaries, and request personalized spending advice. The Next.js interface calls the Express service for primary account and finance operations; documented suggestions flow fetches expense data through Express, then submits it to the FastAPI analyzer. The graph separates user-facing features, core API/data, and analysis. Backend controller-to-model details and some feature wiring are inferred only where README/API documentation supports them; unsampled implementation links are omitted.
Main entry points: server.js Express server · routes.js API v1 router · CreateExpenseForm/index.tsx Expense forms · Suggestions/index.tsx Suggestions page
Components 32
User experience
- Finance pages
frontend/src/app/expenses/page.tsx - Account pages
frontend/src/app/login/page.tsx - Expense forms
frontend/src/components/CreateExpenseForm/index.tsx - Budget pages
frontend/src/app/budgets/page.tsx - Dashboard
frontend/src/components/Dashboard/index.tsx - Suggestions page
frontend/src/utils/Suggestions/index.tsx - Expense requests
frontend/src/utils/Expense/CreateExpense.ts - Budget requests
frontend/src/utils/Budget/GetBudgets.ts - Dashboard requests
frontend/src/utils/Dashboard/index.tsx - Report requests
frontend/src/utils/Reports/index.ts
Core finance API
- Express server
backend/src/server.js - API v1 router
backend/src/api/v1/routes.js - Auth routes
backend/src/api/v1/endpoints/auth.js - Expense routes
backend/src/api/v1/endpoints/expenses.js - Budget routes
backend/src/api/v1/endpoints/budgets.js - Dashboard routes
backend/src/api/v1/endpoints/dashboard.js - Report routes
backend/src/api/v1/endpoints/reports.js - Auth controllers
backend/src/controllers/signup.js - Expense controller
backend/src/controllers/expenses.js - Budget controller
backend/src/controllers/budgets.js - Dashboard controller
backend/src/controllers/dashboard.js - Report controller
backend/src/controllers/reports.js - Scheduled reports
backend/src/cronjob/reportGenerator.js - JWT middleware
backend/src/middleware/auth.js
Persistence
- Expense model
backend/src/models/expense.js - Budget model
backend/src/models/budget.js - User model
backend/src/models/user.js - Database connection
backend/src/config/db.js
Suggestions analysis
- Analysis API
FastAPI/main.py - Suggestions route
FastAPI/api/v1/endpoints/suggestions.py - Financial analyzer
FastAPI/controllers/analyzer.py
Other components
- Finance user
Connections 37
- Finance user → Account pages: uses
- Finance user → Finance pages: manages finances
- Finance user → Budget pages: sets budgets
- Finance user → Dashboard: reviews spending
- Finance user → Suggestions page: requests advice
- Finance pages → Expense forms: creates expenses
- Expense forms → Budget requests: loads categories
- Expense forms → Expense requests: submits expense
- Account pages → Express server: authenticates
- Expense requests → Express server: sends expense requests
- Budget requests → Express server: requests budgets
- Dashboard → Dashboard requests: loads metrics
- Dashboard requests → Express server: requests summaries
- Report requests → Express server: requests reports
- Suggestions page → Expense requests: fetches expenses
- Suggestions page → Analysis API: submits expense data
- Express server → API v1 router: mounts API
- API v1 router → Auth routes: dispatches auth
- API v1 router → Expense routes: dispatches expenses
- API v1 router → Budget routes: dispatches budgets
- API v1 router → Dashboard routes: dispatches metrics
- API v1 router → Report routes: dispatches reports
- Auth routes → Auth controllers: dispatches
- Expense routes → Expense controller: dispatches
- Budget routes → Budget controller: dispatches
- Dashboard routes → Dashboard controller: dispatches
- Report routes → Report controller: dispatches
- Auth routes → JWT middleware: protects details
- Auth controllers → User model: uses account data
- Expense controller → Expense model: manages expenses
- Budget controller → Budget model: manages budgets
- Dashboard controller → Expense model: aggregates spending
- Report controller → Expense model: reads spending
- Scheduled reports → Report controller: generates reports
- Express server → Database connection: connects
- Analysis API → Suggestions route: mounts routes
- Suggestions route → Financial analyzer: analyzes expenses