How thakkalisuresh/budget-dashboard works
Fundient is a household budgeting dashboard whose browser app reads and writes the user-owned Google Sheet. The main workflow is sign in, load a month’s budget and expenses, inspect or update spending, and persist changes to the sheet; receipt and statement imports add capture and reconciliation stages. Separate branches cover household splits, card rewards, AI chat, mobile-wallet capture, offline use, and notifications. Relationships reflect the README and sampled source; some feature wiring is documented but not shown in the excerpts.
Main entry points: App.jsx Dashboard app · sheetsApi.js Sheets access · claude.mjs Claude proxy · CardsTab.jsx Card analytics
Components 28
Dashboard client
- Dashboard app
src/App.jsx - Sign-in and lock
src/useAuth.js - Budget views
src/BudgetRules.jsx - Expense ledger
src/LedgerTab.jsx - History views
src/HistoryTab.jsx - Household split
src/SplitTab.jsx - Card analytics
src/CardsTab.jsx
Budget data
- Sheets access
src/sheetsApi.js - User budget sheet
Capture and analysis
- Receipt scanner
src/useReceiptScanner.js - Statement reconciliation
src/ReconcileDialog.jsx - Statement parsers
src/csvParsers.js - Card rewards engine
src/cardRewards.js - AI budget chat
src/ChatAgent.jsx
Backend services
- Claude proxy
functions/claude.mjs - Wallet capture webhook
functions/wallet-webhook.mjs - Telegram bot
functions/telegram-webhook.mjs - Bot workflows
functions/lib/_bot-core.mjs - Bot and user state
functions/lib/firestore.mjs - Push functions
functions/push-subscribe.mjs
Access and engagement
- Offline queue
src/offlineQueue.js - Push notifications
src/usePush.js
Other components
- Household user
- Mobile automation
- Telegram user
- Anthropic Claude
- Google OAuth
- Web Push service
Connections 36
- Household user → Dashboard app: uses
- Dashboard app → Sign-in and lock: authenticates
- Sign-in and lock → Google OAuth: signs in via
- Dashboard app → Budget views: shows
- Dashboard app → Expense ledger: shows
- Dashboard app → History views: shows
- Dashboard app → Household split: shows
- Dashboard app → Card analytics: shows
- Budget views → Sheets access: loads and updates
- Expense ledger → Sheets access: reads expenses
- History views → Sheets access: reads history
- Household split → Sheets access: reads split data
- Card analytics → Card rewards engine: uses
- Card analytics → Sheets access: reads card data
- Sheets access → User budget sheet: reads and writes
- Household user → Receipt scanner: scans receipts
- Receipt scanner → Claude proxy: requests extraction
- Claude proxy → Anthropic Claude: calls
- Receipt scanner → Sheets access: saves expenses
- Household user → Statement reconciliation: imports statement
- Statement reconciliation → Statement parsers: parses files
- Statement reconciliation → Sheets access: matches and writes
- Household user → AI budget chat: asks budget questions
- AI budget chat → Claude proxy: requests AI response
- Mobile automation → Wallet capture webhook: posts transaction
- Wallet capture webhook → Claude proxy: extracts transaction
- Wallet capture webhook → Sheets access: categorizes and writes
- Telegram user → Telegram bot: sends updates
- Telegram bot → Bot workflows: dispatches messages
- Bot workflows → Sheets access: reads and writes
- Telegram bot → Bot and user state: stores bot state
- Dashboard app → Offline queue: queues offline expenses
- Dashboard app → Push notifications: manages subscriptions
- Push notifications → Push functions: subscribes
- Push functions → Bot and user state: stores subscriptions
- Push functions → Web Push service: sends notifications