How udbhav-44/bahikhata works
BahiKhata is an offline-first Android household expense ledger. The main workflow is entering a regular or catalog-priced grocery expense, saving it locally, then reviewing totals and transactions on the dashboard or in reports. Other major capabilities include editable categories and product catalog, monthly budgets, item-spending analysis, export/backup, reminders, preferences, and a quick-add widget. The graph combines README-documented capabilities with sampled entry-point, repository, storage, export, reminder, and widget code; unsampled screen-to-view-model wiring is shown only where the product structure supports it.
Main entry points: LedgerRepository.kt Ledger repository · BahiKhataApp.kt App navigation · MainActivity.kt Main activity · AppContainer.kt Dependency container
Components 32
Application shell
- Main activity
app/src/main/java/com/bahikhata/app/MainActivity.kt - App navigation
app/src/main/java/com/bahikhata/app/ui/navigation/BahiKhataApp.kt - Dependency container
app/src/main/java/com/bahikhata/app/di/AppContainer.kt
Expense entry
- Expense form
app/src/main/java/com/bahikhata/app/ui/addexpense/AddExpenseScreen.kt - Expense state
app/src/main/java/com/bahikhata/app/ui/addexpense/AddExpenseViewModel.kt - Grocery catalog
app/src/main/java/com/bahikhata/app/ui/catalog/CatalogScreen.kt - Catalog state
app/src/main/java/com/bahikhata/app/ui/catalog/CatalogViewModel.kt - Expense categories
app/src/main/java/com/bahikhata/app/ui/categories/CategoriesScreen.kt - Category state
app/src/main/java/com/bahikhata/app/ui/categories/CategoriesViewModel.kt
Ledger and insights
- Home dashboard
app/src/main/java/com/bahikhata/app/ui/home/HomeScreen.kt - Home state
app/src/main/java/com/bahikhata/app/ui/home/HomeViewModel.kt - Transactions
app/src/main/java/com/bahikhata/app/ui/transactions/TransactionsScreen.kt - Transaction state
app/src/main/java/com/bahikhata/app/ui/transactions/TransactionsViewModel.kt - Monthly budgets
app/src/main/java/com/bahikhata/app/ui/budget/BudgetScreen.kt - Budget state
app/src/main/java/com/bahikhata/app/ui/budget/BudgetViewModel.kt - Spending reports
app/src/main/java/com/bahikhata/app/ui/reports/ReportsScreen.kt - Report state
app/src/main/java/com/bahikhata/app/ui/reports/ReportsViewModel.kt - Item spending
app/src/main/java/com/bahikhata/app/ui/itemspending/ItemSpendingScreen.kt - Item spending state
app/src/main/java/com/bahikhata/app/ui/itemspending/ItemSpendingViewModel.kt
Local state
- Ledger repository
app/src/main/java/com/bahikhata/app/data/LedgerRepository.kt - Room database
app/src/main/java/com/bahikhata/app/data/AppDatabase.kt - Ledger DAOs
app/src/main/java/com/bahikhata/app/data/dao - Preferences store
app/src/main/java/com/bahikhata/app/data/PreferencesRepository.kt
Conveniences
- Export and backup
app/src/main/java/com/bahikhata/app/data/backup/ExportManager.kt - More and settings
app/src/main/java/com/bahikhata/app/ui/more/MoreScreen.kt - Settings
app/src/main/java/com/bahikhata/app/ui/settings/SettingsScreen.kt - Settings state
app/src/main/java/com/bahikhata/app/ui/settings/SettingsViewModel.kt - Quick-add widget
app/src/main/java/com/bahikhata/app/widget/QuickAddWidgetProvider.kt - Reminder worker
app/src/main/java/com/bahikhata/app/work/ReminderWorker.kt
Other components
- Household user
- Android notifications
- User-selected file
Connections 43
- Household user → Main activity: opens
- Main activity → App navigation: hosts
- Main activity → Dependency container: gets services
- App navigation → Home dashboard: shows
- App navigation → Expense form: routes to
- App navigation → Transactions: routes to
- App navigation → Grocery catalog: routes to
- App navigation → Expense categories: routes to
- App navigation → Monthly budgets: routes to
- App navigation → Spending reports: routes to
- Home dashboard → Home state: collects state
- Expense form → Expense state: submits form
- Grocery catalog → Catalog state: edits catalog
- Transactions → Transaction state: requests history
- Expense categories → Category state: edits categories
- Monthly budgets → Budget state: edits limits
- Spending reports → Report state: requests reports
- Item spending → Item spending state: requests details
- Home state → Ledger repository: observes ledger
- Expense state → Ledger repository: saves expense
- Catalog state → Ledger repository: manages catalog
- Transaction state → Ledger repository: queries entries
- Category state → Ledger repository: manages categories
- Budget state → Ledger repository: queries budgets
- Report state → Ledger repository: queries totals
- Item spending state → Ledger repository: queries item spend
- Dependency container → Room database: creates
- Dependency container → Ledger repository: provides
- Dependency container → Preferences store: provides
- Ledger repository → Ledger DAOs: queries and writes
- Ledger DAOs → Room database: accesses
- More and settings → Settings: opens
- Settings → Settings state: updates options
- Settings state → Preferences store: reads and writes
- Main activity → Preferences store: observes theme
- More and settings → Export and backup: starts export
- Export and backup → Ledger repository: loads ledger data
- Export and backup → User-selected file: writes output
- Quick-add widget → Preferences store: reads widget config
- Quick-add widget → Ledger repository: adds grocery entry
- Reminder worker → Android notifications: posts reminder
- Household user → Quick-add widget: uses
- Household user → More and settings: opens tools