FinTrack Master Documentation

Comprehensive guide explaining every screen, UI control, accounting foundation, code logic, system impact, pitfalls to avoid, and expert pro-tips for dummy & expert users alike.

1. App Setup & Initial Onboarding SetupScreen.kt
The onboarding wizard presented when launching FinTrack for the first time. It establishes your primary accounting currency, default accounts, and base financial structures required for double-entry tracking.
Base Currency Selector Dropdown / Picker

📘 Finance & Accounting Concept

The Functional Currency (or Base Currency) is the primary economic currency in which an entity or individual keeps their official ledger books. All multi-currency transactions and foreign asset balances are converted into this base currency using real-time exchange rates to report accurate unified Net Worth and Cash Flow.

⚙️ Code Logic in Plain English

When selected, the app persists the chosen ISO currency code (e.g., USD, INR, EUR, GBP) into EncryptedPrefsHelper. It sets the baseline exchange rate ratio of 1.0 in the exchange_rates database table and triggers background worker RateUpdateWorker to fetch live foreign exchange conversion rates relative to this base currency.

💥 Financial & System Impact

Sets the monetary symbol across every financial summary, pie chart, budget limit, and account balance. Changing this later will recalculate historical multi-currency entries against new exchange rates.

⚠️ Things to Avoid

Do not select a secondary currency (e.g. travel currency) as your base currency. Avoid switching base currency frequently, as minor rounding differences may occur during foreign rate updates.

💡 Pro Tip

Select the currency in which you pay your primary taxes and earn your primary income. FinTrack handles multi-currency foreign purchases automatically on top of this base currency!
Initial Account Generator Checkbox / Option Toggle / Checkbox

📘 Finance & Accounting Concept

Default Chart of Accounts (COA). Standard accounting requires categorizing liquid assets into distinct buckets such as Cash, Bank Savings, and Credit Cards so that liquidity can be measured accurately.

⚙️ Code Logic in Plain English

Executes a batch transaction insertion into the Room accounts, major_heads, and minor_heads tables. It automatically generates standard micro-heads ("Cash", "Bank Account", "Credit Card") linked under appropriate asset/liability parent accounting heads.

💥 Financial & System Impact

Populates the default account dropdowns across all transaction creation screens, preventing blank state errors for new users.

⚠️ Things to Avoid

Avoid skipping initial account creation unless you intend to set up a custom Chart of Accounts manually.

💡 Pro Tip

Keep the default setup enabled! You can easily rename or add account numbers to these accounts later in the Manage Categories & Accounts screen.
2. Main Dashboard & Home Screen HomeScreen.kt
The main control center showing real-time financial health, net worth, active cash flows, budget statuses, recent transactions, and instant multi-dimensional filters.
Date Range / Period Selector Filter Chips (This Month, Last Month, Custom)

📘 Finance & Accounting Concept

Accounting Period Principle. Financial results must be measured over specific, equal timeframes (monthly, quarterly, yearly) to evaluate burning rates, savings rates, and profitability comparisons.

⚙️ Code Logic in Plain English

Updates the startDate and endDate state variables. Triggers reactive Kotlin Coroutine Flows from ExpenseViewModel to execute SQL range queries against the transactions Room DAO, dynamically recalculating total income, total expense, net savings, and category pie chart breakdowns.

💥 Financial & System Impact

Filters all visible transaction lists, summary totals, and graphical charts instantly without reloading the database disk.

⚠️ Things to Avoid

Avoid comparing partial months with full months when analyzing spending patterns.

💡 Pro Tip

Use "This Month" for daily expense tracking and "Custom" when performing quarterly tax estimation or annual financial reviews!
Search Query Bar Text Input

📘 Finance & Accounting Concept

Ledger Audit Search. Allows instant tracking of specific vendor payees, invoice numbers, merchant tags, or item notes across historical financial records.

⚙️ Code Logic in Plain English

Performs real-time text filtering against transaction.note, merchantName, partyName, and categoryName using case-insensitive substring matching in Kotlin coroutines.

💥 Financial & System Impact

Instantly limits displayed transaction cards to matching entries and calculates the sum of searched items.

⚠️ Things to Avoid

Do not type full sentences; enter single distinct keywords like merchant name or invoice number for best matches.

💡 Pro Tip

Type merchant names like "Amazon" or "#Tax" to view total spend on specific vendors or tax-deductible items instantly!
3. Add & Edit Transaction Screen AddTransactionScreen.kt
The central transaction engine supporting Expenses, Incomes, Transfers, Multi-entry split transactions, Party accounts, Foreign exchange, Subscriptions, and Negotiated discounts.
Transaction Type Selector Filter Chips / Tabs (Expense, Income, Transfer)

📘 Finance & Accounting Concept

Fundamental Transaction Classification:
  • Expense: Cash outflow reducing net worth (Debit Expense, Credit Asset).
  • Income: Cash inflow increasing net worth (Debit Asset, Credit Income).
  • Transfer: Liquidity movement between accounts without altering net worth (Debit Asset A, Credit Asset B).

⚙️ Code Logic in Plain English

Changes state variable type. Dynamically alters form layout: reveals Category & Merchant inputs for Income/Expense, or reveals Destination Account (toAccountId) for Transfer mode.

💥 Financial & System Impact

Determines whether the amount increases or decreases specific account balances and influences income/expense ledger reports.

⚠️ Things to Avoid

Do not log credit card bill payments as "Expense". They are "Transfers" from Bank Account to Credit Card Account!

💡 Pro Tip

Always use "Transfer" for ATM cash withdrawals, credit card bill payments, and inter-bank transfers to keep net worth accurate!
Amount Input & Built-in Calculator Numeric Text Input + Modal Calculator Button

📘 Finance & Accounting Concept

Monetary Valuation. Represents the exact numeric transaction value in currency units. Accurate valuation ensures error-free bank reconciliations.

⚙️ Code Logic in Plain English

Stores text in amount. Validates positive double precision number using toDoubleOrNull(). Clicking the calculator icon opens a floating calculator overlay that evaluates standard mathematical expressions (e.g. 1200 + 150 - 5%) directly into the text field.

💥 Financial & System Impact

Adjusts the linked Account balance and updates Budget usage calculations immediately upon saving.

⚠️ Things to Avoid

Avoid entering negative numbers manually; the transaction type handles directional signs automatically.

💡 Pro Tip

Use the built-in calculator button to sum up multi-item bill receipts or add tips/taxes before saving!
From Account Selection Dropdown Menu

📘 Finance & Accounting Concept

Source Micro Head (Asset / Liability Account). In double-entry accounting, this represents the funding account (e.g. Cash, Checking Account, Credit Card) from which funds originate.

⚙️ Code Logic in Plain English

Binds selectedAccountId to an account ID from the Room accounts table. Validates that an active account is selected before permitting form save.

💥 Financial & System Impact

Deducts (or credits) the specified amount from this selected account's balance in real time.

⚠️ Things to Avoid

Do not leave account unselected or select a disabled account.

💡 Pro Tip

Set up your most frequently used bank or card account as your primary default account in Settings!
Multi-Entry Split Transaction Toggle Toggle Switch / Button

📘 Finance & Accounting Concept

Split Journal Entry. Allows a single single payment/receipt (e.g., a total supermarket bill of $150) to be split across multiple budget categories (e.g., $100 Groceries, $30 Household Supplies, $20 Electronics).

⚙️ Code Logic in Plain English

Toggles isMultiEntry state. Displays a dynamic array of MultiEntryRow inputs. Validates that the sum of all individual split rows matches the main transaction total amount before saving.

💥 Financial & System Impact

Saves individual itemized line entries linked under the primary transaction ID, providing surgical category breakdown in budget reports while keeping a single bank transaction entry.

⚠️ Things to Avoid

Do not save split entries where the sum of rows does not equal the overall receipt total.

💡 Pro Tip

Ideal for departmental store receipts or monthly combined payments where multiple expense heads are paid together!
Foreign Currency & Manual Exchange Rate Dropdown + Numeric Input

📘 Finance & Accounting Concept

Foreign Currency Transaction & Realized Exchange Rate. Tracks purchases made in foreign currencies (e.g., EUR purchase on USD card), recording both original foreign amount and converted local base amount.

⚙️ Code Logic in Plain English

Stores currency code in foreignCurrency, original amount in amountOriginal, and base amount in amountBase. Automatically fetches exchange rate or lets user check isManualLocalAmount to override with bank-charged exchange fee rate.

💥 Financial & System Impact

Ensures your account balance is deducted in local currency while maintaining exact foreign currency audit trail.

⚠️ Things to Avoid

Do not forget bank markup fees when making overseas card payments; use manual rate override to match exact credit card statement charges.

💡 Pro Tip

When traveling abroad, enter foreign price and toggle manual rate to input the exact final charge shown in your mobile banking alert!
Discretionary Expense Toggle Toggle Switch

📘 Finance & Accounting Concept

Needs vs Wants (Essential vs Discretionary Spending). Essential spending covers non-negotiable living costs (rent, utilities, groceries), while discretionary spending represents non-essential lifestyle choices (entertainment, dining out, luxury items).

⚙️ Code Logic in Plain English

Sets boolean flag isDiscretionary on the Transaction entity. Used by FinancialInsightEngine to calculate financial health ratios, emergency fund runway, and savings optimization suggestions.

💥 Financial & System Impact

Feeds financial health insights, showing percentage of income spent on "Wants" vs "Needs" in analytics reports.

⚠️ Things to Avoid

Do not mark fixed essential bills (like house rent) as discretionary.

💡 Pro Tip

Flag impulse purchases as Discretionary to quickly review your lifestyle inflation at the end of every month!
On Account Party & Invoice Clearance Dropdown + Dialog Link

📘 Finance & Accounting Concept

Accounts Receivable / Payable & Invoice Settlement. "On Account" transactions record credit sales/purchases with counterparties (Parties). Invoice clearance links payment transfers to outstanding invoices, reducing unpaid party debt.

⚙️ Code Logic in Plain English

Binds partyId and toPartyId. Upon settlement transfer, creates records in invoice_clearances table, linking payment transaction ID with invoice transaction ID and deducting cleared amounts.

💥 Financial & System Impact

Updates counterparty balance ledgers, clears outstanding party dues, and tracks unpaid customer/vendor invoices.

⚠️ Things to Avoid

Avoid logging direct vendor payments without linking the party if you track invoice-wise debt balances.

💡 Pro Tip

Use On Account tracking for freelance clients or personal loans to know exact outstanding balance per person!
4. Loan & EMI Management Screen AddLoanScreen.kt & LoanCalculator.kt
Comprehensive loan management engine supporting fixed-rate amortization schedules, Annuity Due calculations, Gap interest adjustments, repayment schedules, and automatic ledger synchronization.
Loan Type Selector Filter Chips (Borrowing vs Lending)

📘 Finance & Accounting Concept

Liability vs Asset Debt:
  • Borrowing: Liability (Money you owe to a lender like a bank or friend).
  • Lending: Asset (Money owed to you by a borrower).

⚙️ Code Logic in Plain English

Sets loanType to "BORROWING" or "LENDING". Influences account mapping creation (Liability micro-head vs Asset micro-head) under the "Loans" major accounting head.

💥 Financial & System Impact

Borrowing increases total liabilities and decreases Net Worth. Lending increases loan assets and maintains Net Worth.

⚠️ Things to Avoid

Do not confuse Borrowing with Lending; reversing this will invert your net worth calculation.

💡 Pro Tip

Create separate entries for home loans (Borrowing) and personal peer-to-peer loans given to friends (Lending)!
Principal Amount & Annual Interest Rate (%) Numeric Text Inputs

📘 Finance & Accounting Concept

Principal Borrowing & Annualized Percentage Rate (APR). The principal is the initial borrowed sum. The annual rate represents interest charged per annum on the outstanding balance.

⚙️ Code Logic in Plain English

Passes principalAmount and interestRateAnnual to LoanCalculator.calculateStandardEMI(). Computes periodic interest rate r = annualRate / (multiplier * 100).

💥 Financial & System Impact

Determines periodic interest charges, total interest payable over loan tenure, and generates full amortization tables.

⚠️ Things to Avoid

Do not enter monthly rate; always enter full annual rate (APR) in percent.

💡 Pro Tip

Check your loan contract document for exact floating or fixed APR percentage!
Gap Interest Method Selector Filter Chips (Actual Days vs Bank Convention Month/Odd)

📘 Finance & Accounting Concept

Broken Period Interest / Pre-EMI Interest. The interest accrued between loan disbursement date and first EMI payment date when they do not align perfectly on month boundaries.
  • Days (Actual/365): Simple daily interest accrued based on exact days elapsed.
  • Bank Convention: Interest calculated on full months plus odd days divided by 30 days.

⚙️ Code Logic in Plain English

Evaluates gapMethod. Invokes LoanCalculator.calculateGapInterestDays() or LoanCalculator.calculateGapInterestBankConvention(). Adds computed gap interest into initial repayment principal amortization formula.

💥 Financial & System Impact

Ensures calculated EMI matches exact banking schedules down to cent-level accuracy.

⚠️ Things to Avoid

Do not ignore gap interest if first EMI date is more than 30 days after disbursement.

💡 Pro Tip

Most retail banks use "Bank Convention". Use "Days" if your loan agreement explicitly specifies daily interest accrued!
Installment (EMI) Auto-Calculation & Override Numeric Text Input + Manual Lock Toggle

📘 Finance & Accounting Concept

Equated Monthly Installment (EMI) / Annuity Due. A fixed payment amount made by a borrower to a lender at a specified date each calendar month.

⚙️ Code Logic in Plain English

Automatically computes standard EMI via formula: EMI = (Principal + GapInterest) / AnnuityFactor. If user manually edits the EMI field, sets isInstallmentManuallyEdited = true and uses binary search solver calculatePeriodicRateFromEMI() to back-calculate implied interest rate.

💥 Financial & System Impact

Determines actual monthly cash outflow required for loan service and builds amortization schedules.

⚠️ Things to Avoid

Avoid entering EMI lower than monthly interest portion, which leads to negative amortization.

💡 Pro Tip

If your bank rounds EMI up to nearest dollar, type exact bank EMI figure and let FinTrack auto-adjust implied rate!
5. Budgets & Budget vs Actual Screen BudgetScreen.kt
Budgeting workspace for setting target limits across categories and accounts, monitoring burning run-rates, and comparing budgeted versus actual expenditure.
Target Categories & Accounts Multi-Select Multi-Select Dialog Chips

📘 Finance & Accounting Concept

Cost Center Grouping. Groups multiple expense accounts or categories (e.g. Dining Out + Fast Food + Coffee) into a unified budget ceiling.

⚙️ Code Logic in Plain English

Stores comma-separated ID strings in categoryIds and accountIds columns of Room budgets table. Filters transactions matching any of these IDs during run-rate evaluation.

💥 Financial & System Impact

Aggregates all matching category spending to compute real-time budget utilization percentages.

⚠️ Things to Avoid

Do not assign the same category to multiple overlapping budgets of identical duration.

💡 Pro Tip

Create an umbrella "Food & Dining" budget covering Groceries, Restaurants, and Delivery categories together!
Higher-Is-Better Goal Toggle Toggle Switch

📘 Finance & Accounting Concept

Savings / Revenue Targets vs Expense Ceilings:
  • Disabled (Default): Expense ceiling where spending MORE than budget is BAD (Red alert).
  • Enabled: Income/Savings target where earning MORE than target is GOOD (Green alert).

⚙️ Code Logic in Plain English

Sets boolean higherIsBetter. Reverses progress bar color logic in UI (Green above 100% for income targets; Red above 100% for expense ceilings).

💥 Financial & System Impact

Allows users to track monthly investment or income goals alongside traditional expense budgets.

⚠️ Things to Avoid

Do not enable this toggle for expense budgets like Rent or Dining Out.

💡 Pro Tip

Enable "Higher-Is-Better" to set monthly Investment or Side-Hustle Income goals!
6. Credit Card Dashboard CreditCardDashboard.kt
Dedicated command hub for credit cards, managing billing statement cycles, billed vs unbilled transactions, payment due alerts, and credit utilization ratios.
Billing Cycle Start / End & Payment Due Date Numeric Day Input (1 - 31)

📘 Finance & Accounting Concept

Statement Billing Cycle & Grace Period. Credit card transactions are divided into Billed (statement generated) and Unbilled (current cycle). Paying billed dues before Payment Due Date avoids interest charges.

⚙️ Code Logic in Plain English

Stores day integers in account entity (billingCycleStart, paymentDueDate). Dynamically splits card transactions into "Billed Total" and "Unbilled Current Period" based on transaction dates relative to current statement date.

💥 Financial & System Impact

Triggers background alert worker CcAlertWorker to post overdue payment reminders and displays exact statement balance due.

⚠️ Things to Avoid

Do not set billing cycle start date after payment due date without checking your card statement terms.

💡 Pro Tip

Enter exact billing statement cycle dates to know precisely how much to pay each month to avoid finance charges!
Credit Limit Input Numeric Text Input

📘 Finance & Accounting Concept

Credit Utilization Ratio (CUR). The percentage of total available credit limit currently utilized. Financial institutions recommend keeping CUR below 30% to maintain high credit bureau scores.

⚙️ Code Logic in Plain English

Stores double value in account.creditLimit. Computes utilization = (currentBalance / creditLimit) * 100. Evaluated by FinancialInsightEngine to trigger credit score impact warnings if utilization exceeds 30%.

💥 Financial & System Impact

Displays visual credit utilization gauge and triggers risk warnings in dashboard insights.

⚠️ Things to Avoid

Do not enter total household credit limit for an individual card; enter specific sanctioned limit per card.

💡 Pro Tip

Keep utilization below 30% on each card to boost your credit score!
7. Subscriptions & Recurring Payments SubscriptionDashboard.kt
Recurring payment manager for tracking auto-debits, software subscriptions, recurring transfers, and pending dues with one-tap catchup recording.
Auto-Record Switch Toggle Switch

📘 Finance & Accounting Concept

Automated Standing Instructions (SIP / Direct Debit). Pre-authorized periodic payments automatically deducted by financial institutions on fixed dates.

⚙️ Code Logic in Plain English

Updates SubscriptionStatus.isAutoRecordEnabled. When enabled, background worker ReminderWorker automatically creates transaction entries on due dates without requiring manual user approval.

💥 Financial & System Impact

Automatically creates verified ledger entries and updates account balances on exact recurrence schedules.

⚠️ Things to Avoid

Do not enable auto-record for subscriptions with variable monthly billing amounts (like electric bills).

💡 Pro Tip

Enable Auto-Record for fixed monthly costs like Netflix or iCloud, and manual record for variable bills!
8. Categories, Accounting Heads & Tags AddCategoryScreen.kt & AddHeadScreen.kt
Structural setup for managing 3-tier Chart of Accounts (Major Head > Minor Head > Micro Head / Account), Income/Expense Categories, Counterparties, and Target-based Tags.
Major Head & Minor Head Assignment Dropdown Selectors

📘 Finance & Accounting Concept

Hierarchical Chart of Accounts (COA):
  • Major Head: Top-level financial classification (e.g. Assets, Liabilities, Equity).
  • Minor Head: Sub-grouping (e.g. Bank Accounts, Credit Cards, Loans).
  • Micro Head / Account: Actual transaction account (e.g. Chase Checking 1234).

⚙️ Code Logic in Plain English

Enforces foreign key constraint in minor_heads table pointing to major_heads.id, and links accounts.minorHeadId. Enables hierarchical balance rollups in balance sheet reports.

💥 Financial & System Impact

Structures entire balance sheet and net worth aggregations across asset and liability classes.

⚠️ Things to Avoid

Do not delete primary system heads such as "On Account (Loan)" or "Credit Card".

💡 Pro Tip

Organize accounts under appropriate Minor Heads to view clean sub-totals for liquid cash vs investments vs debts!
Tag Target Amount & Tracking Type Dropdown + Numeric Input

📘 Finance & Accounting Concept

Tag-Based Goal Tracking / Project Accounting. Tracks horizontal cross-cutting expenses (e.g. #Vacation2026 or #Wedding) across different categories against a fixed target budget.

⚙️ Code Logic in Plain English

Stores tracking type ("Income", "Expense", "Both") and target double in tags table. Evaluates sum of transactions bearing this tag against targetNumber in TagSummaryScreen.kt.

💥 Financial & System Impact

Displays target progress bars in Tag Analytics without restricting category budgeting.

⚠️ Things to Avoid

Do not create redundant tags for items already covered by existing categories.

💡 Pro Tip

Create a tag like `#EuropeTrip2026` with a target amount to track all vacation expenses regardless of category!
9. Auto-Categorization & SMS Rules RulesScreen.kt & SmsReceiver.kt
Automation engine that intercepts incoming bank SMS alerts or notification strings and automatically parses amounts, accounts, counterparties, and categories.
Sender ID & Keyword Pattern Matching Text Inputs

📘 Finance & Accounting Concept

Automated Transaction Processing (STP). Eliminates manual data entry friction by parsing digital banking notifications straight into accounting ledgers.

⚙️ Code Logic in Plain English

SmsReceiver.kt receives incoming SMS intent. Evaluates regex rule patterns against msgFrom and textContaining. If matched, extracts amount, populates default category/account/party, and creates transaction draft or auto-records transaction.

💥 Financial & System Impact

Logs bank transactions automatically in real time as SMS alerts arrive on your phone.

⚠️ Things to Avoid

Avoid using overly generic keywords like "spent" without specifying Sender ID, to prevent false triggers from personal messages.

💡 Pro Tip

Combine bank sender code (e.g. `AMEX-US`) with vendor keyword (e.g. `Uber`) for 100% accurate auto-categorization!
10. Statement CSV Importer ImportStatementScreen.kt
Bank statement import wizard featuring interactive column mapping previews, transaction duplicate detection, and bulk category assignment.
Column Role Mapping (Date, Amount, Description, Type) Interactive Table Header Selectors

📘 Finance & Accounting Concept

ETL Data Import (Extract, Transform, Load). Normalizes raw banking CSV exports from diverse financial institutions into FinTrack's standardized accounting schema.

⚙️ Code Logic in Plain English

Parses CSV stream into rawRows. User maps columns to roles (Date, Amount, Debit/Credit, Description). Code normalizes date formats via DateTimeFormatter, parses debit/credit signs, and performs duplicate checks against existing database entries.

💥 Financial & System Impact

Bulk imports hundreds of historical bank transactions in seconds without manual entry.

⚠️ Things to Avoid

Do not swap Debit and Credit columns; doing so converts all expenses into incomes.

💡 Pro Tip

Use the Bulk Category Tagging tool on the preview screen to categorize 50 imported transactions in one click!
11. Financial Notes & Checklists NotesScreen.kt
Financial notepad supporting rich text notes, financial checklists, drawing canvases, notebook categorization, and pin toggles.
Note Type & Notebook Organizer Dropdown / Filter Chips (Text, Checklist, Drawing)

📘 Finance & Accounting Concept

Financial Planning & Audit Notes. Stores non-transactional financial records such as tax filing checklists, warranty notes, asset serial numbers, or investment thesis notes.

⚙️ Code Logic in Plain English

Persists Note entity in Room database with columns type ("text", "checklist", "drawing"), notebookId, isPinned, and color.

💥 Financial & System Impact

Organizes auxiliary financial documents and checklists alongside primary ledger accounts.

⚠️ Things to Avoid

Do not store plain-text unencrypted passwords or credit card CVV codes in unpinned notes.

💡 Pro Tip

Create a "Tax Documents 2026" notebook with a interactive checklist to tick off receipts during tax filing season!
12. Analytics & Performance Dashboard PerformanceScreen.kt
Advanced performance engine offering dynamic period column grouping (Monthly, Quarterly, Yearly, Custom) and trend comparison charts.
Column Grouping Dropdown Dropdown (Monthly, Quarterly, Half-Yearly, Yearly, Custom)

📘 Finance & Accounting Concept

Comparative Trend Analysis. Comparing period-over-period performance across multi-month windows helps identify expenditure trends and seasonal spikes.

⚙️ Code Logic in Plain English

Sets ColumnGrouping enum. Re-buckets SQL aggregated transactions into customized period intervals (e.g. 3-month quarters or custom 14-day blocks) and renders comparative bar/line chart visualizations.

💥 Financial & System Impact

Aggregates financial performance statistics over macro timeframes for long-term wealth building analysis.

⚠️ Things to Avoid

Avoid selecting very short custom intervals (like 1 day) when analyzing multi-year trends.

💡 Pro Tip

Switch to "Quarterly" or "Yearly" grouping to evaluate long-term savings growth without monthly volatility noise!
13. Database, Sync & Security DatabaseScreen.kt & WebDavWorker.kt
Database administration screen handling local SQLite backups, WebDAV private cloud synchronization, auto-backup schedules, and PBKDF2 AES-GCM End-to-End Encryption (E2EE).
WebDAV Server Credentials & Auto-Sync Schedule Text Inputs + Dropdown

📘 Finance & Accounting Concept

Data Sovereignty & Offsite Backup. Protects financial ledgers against device loss or corruption using private cloud synchronization without relying on third-party proprietary servers.

⚙️ Code Logic in Plain English

Stores encrypted credentials using EncryptedPrefsHelper. Enqueues WebDavWorker in WorkManager with periodic constraints (Off, Daily, Weekly). Transfers encrypted database backups to user's personal WebDAV cloud endpoint.

💥 Financial & System Impact

Ensures automated offsite cloud backup recovery while preserving absolute privacy.

⚠️ Things to Avoid

Do not use unencrypted HTTP WebDAV URLs over public Wi-Fi networks; always use HTTPS.

💡 Pro Tip

Set up a free Nextcloud or WebDAV server and enable Daily auto-sync for zero-maintenance cloud backups!
End-to-End Encryption (E2EE) Passphrase Password Input + Toggle Switch

📘 Finance & Accounting Concept

Zero-Knowledge Data Security. Ensures financial ledgers exported or backed up to cloud servers cannot be read by unauthorized third parties.

⚙️ Code Logic in Plain English

Invokes EncryptionService.encryptFile() using PBKDF2 key derivation with 100,000 iterations and AES-GCM 256-bit encryption. Protects database backups with user passphrase before disk export or cloud upload.

💥 Financial & System Impact

Renders exported backup files completely unreadable without the correct user passphrase.

⚠️ Things to Avoid

Do not forget your master E2EE passphrase! Without it, encrypted backups cannot be recovered under any circumstances.

💡 Pro Tip

Store your backup E2EE passphrase in a secure password manager like Bitwarden or 1Password!
14. Settings & Appearance SettingsScreen.kt
Personalization hub for adjusting UI themes (Light, Dark, OLED Pitch Black), custom RGB accent color palettes, multi-language localization, and SMS auto-detection permissions.
App Theme & RGB Custom Color Picker Dropdown + RGB Color Sliders

📘 Finance & Accounting Concept

User Experience & Display Efficiency. OLED pitch black theme reduces device battery consumption during extensive financial logging sessions.

⚙️ Code Logic in Plain English

Persists theme mode ("Light", "Dark", "OLED") and ARGB integer color in ExpenseViewModel. Dynamically updates Material 3 ColorScheme across the Jetpack Compose UI hierarchy.

💥 Financial & System Impact

Customizes visual appearance and optimizes battery utilization on OLED mobile screens.

⚠️ Things to Avoid

Avoid choosing low-contrast custom accent colors that make text difficult to read.

💡 Pro Tip

Use "OLED" theme on modern AMOLED screens to maximize battery life while managing budgets on the go!