How kumarjesh/expenses-tracker works
Expense Tracker is a browser-based finance app. The main workflow is authentication state selection, then a signed-in dashboard that loads date-filtered transactions and presents ledger, home, and budget views; users can add or delete transactions, export the ledger, and create budgets. Theme preference is managed separately. The README is boilerplate; Login and HomeTab are present in the tree but their implementations were not sampled, so their internal behavior and wiring are not inferred.
Main entry points: Dashboard.tsx Dashboard · page.tsx App entry · AuthContext.tsx Auth state · Ledger.tsx Transaction ledger
Components 16
App shell
- Root layout
src/app/layout.tsx - App entry
src/app/page.tsx
Finance workflows
- Dashboard
src/components/Dashboard.tsx - Transaction ledger
src/components/Ledger.tsx - Home summary
src/components/HomeTab.tsx - Budget view
src/components/BudgetsTab.tsx - Transaction form
src/components/ExpenseForm.tsx - Cloud Firestore
Identity and preferences
- Login view
src/components/Login.tsx - Auth state
src/contexts/AuthContext.tsx - Theme state
src/contexts/ThemeContext.tsx - Firebase setup
src/lib/firebase.ts - Firebase Auth
- Browser storage
Other components
- User
- Browser
Connections 21
- User → App entry: opens app
- Root layout → Theme state: wraps
- Root layout → Auth state: wraps
- App entry → Auth state: reads state
- App entry → Dashboard: shows signed-in
- App entry → Login view: shows signed-out
- Auth state → Firebase setup: uses auth
- Firebase setup → Firebase Auth: initializes
- Auth state → Firebase Auth: observes session
- Dashboard → Cloud Firestore: queries and deletes
- Dashboard → Transaction ledger: supplies transactions
- Dashboard → Home summary: supplies transactions
- Dashboard → Budget view: supplies expenses
- Dashboard → Transaction form: opens form
- Transaction form → Cloud Firestore: adds transaction
- Budget view → Cloud Firestore: reads and adds budgets
- Transaction ledger → Browser: downloads CSV
- Transaction ledger → Dashboard: updates date range
- Dashboard → Firebase Auth: signs out
- Theme state → Browser storage: reads and saves theme
- Theme state → Browser: sets document theme