How morttare/evabudjetti works
EVA MyBudget is a cross-platform personal budgeting and expense-tracking app. The main workflow starts on the home screen, where a user records an initial balance and enters the budget wizard, then manages planned and ad-hoc transactions and views balances, usable funds, and summaries. Finance hooks coordinate month-based occurrence and balance caches, with versioning for invalidation and query modules for persistence. The README documents budgeting, transaction tracking, analytics, localization, and web fallback state. Several screen and query implementations were not sampled, so uncertain screen-to-screen and query wiring is omitted.
Main entry points: hook Finance hooks · index.tsx Home dashboard · logic Finance calculations · client.ts Database client
Components 22
App experience
- Home dashboard
app/(tabs)/index.tsx - Budget setup
app/budget_wizard.tsx - Transaction screens
app/add_transaction2.tsx - Budget views
app/(tabs)/budget/index.tsx - Summary views
app/(tabs)/summary/index.tsx - Funds view
app/(tabs)/funds.tsx - Settings and language
app/(tabs)/settings.tsx
Finance domain
- Finance hooks
src/finance/hook - Finance queries
src/finance/query - Finance calculations
src/finance/logic - Occurrence cache
src/finance/cache/transactionOccurrencesCache.ts - Balance cache
src/finance/cache/balanceCache.ts - Summary cache
src/finance/cache/transactionSummariesCache.ts - Combined cache
src/finance/cache/occurrencesAndBalanceCache.ts - Month versioning
src/finance/versioning - Finance data model
src/dataModel/index.ts
Persistence
- Database client
src/db/client.ts - SQLite schema
src/db/schema.ts - SQLite database
App state
- Persistent UI state
src/store - Web transaction fallback
src/store/useWebFallbackPlannedTransactionsStore.ts
Other components
- Budget user
Connections 29
- Budget user → Home dashboard: opens app
- Home dashboard → Finance hooks: requests balances
- Finance hooks → Finance hooks: requests usable funds
- Home dashboard → Finance hooks: saves reconciliation
- Home dashboard → Budget setup: starts setup
- Budget user → Transaction screens: records transactions
- Budget user → Budget views: reviews budget
- Budget user → Summary views: reviews analytics
- Budget user → Funds view: checks funds
- Budget user → Settings and language: sets preferences
- Budget views → Finance hooks: requests finance data
- Summary views → Finance hooks: requests summaries
- Funds view → Finance hooks: requests finance data
- Transaction screens → Finance hooks: manages transactions
- Finance hooks → Month versioning: tracks month versions
- Finance hooks → Occurrence cache: updates occurrences
- Finance hooks → Balance cache: updates balances
- Finance hooks → Summary cache: builds summaries
- Finance hooks → Combined cache: combines results
- Finance hooks → Finance queries: requests persisted data
- Occurrence cache → Finance calculations: generates occurrences
- Balance cache → Finance calculations: calculates balances
- Summary cache → Finance calculations: calculates summaries
- Finance queries → Database client: reads and writes
- Database client → SQLite schema: uses schema
- Database client → SQLite database: connects
- Finance hooks → Persistent UI state: uses timeframe state
- Web transaction fallback → Finance calculations: generates occurrences
- Web transaction fallback → Persistent UI state: persists fallback state