FinTrack Complete Step-by-Step User & Feature Tutorial

Comprehensive walkthrough of every screen, route, menu drawer item, form control, and feature workflow directly mapped from the FinTrack codebase.

Chapter 1: Initial Setup & Permissions Onboarding Route: setup > permissions
Initialize your functional currency, auto-create essential default accounts, and grant required permissions for automatic transaction tracking.
1.1 First-Time Setup Wizard (SetupScreen.kt)
Configure your base functional currency and initialize the default Chart of Accounts.
  1. 1
    Launch FinTrack for the First Time

    FinTrack checks SharedPreferences("app_settings", "setup_complete"). If false, the app lands on the setup screen.

  2. 2
    Select Your Primary Base Currency

    Tap the Base Currency dropdown (e.g., USD ($), INR (₹), EUR (€), GBP (£)). This sets your baseline accounting currency for all multi-currency conversions and net worth calculations.

  3. 3
    Keep Default Accounts Generator Checked

    Leave the "Create Default Accounts" checkbox checked. This automatically populates default major heads, minor heads, and accounts (Cash, Bank Account, Credit Card).

  4. 4
    Tap "Complete Setup"

    Saves setup_complete = true in settings and navigates to the permissions route.

✅ Expected Result
Your base currency is established, standard accounting heads are generated, and you proceed to permissions setup.
1.2 Granting Android System Permissions (PermissionsScreen.kt)
Enable automatic SMS transaction parsing and reminder notifications.
  1. 1
    Grant Receive SMS Permission

    Tap Grant SMS Permission to allow SmsReceiver.kt to detect incoming bank transaction messages automatically.

  2. 2
    Grant Post Notifications Permission (Android 13+)

    Tap Grant Notification Permission to receive payment due alerts, subscription reminders, and backup status notifications.

  3. 3
    Tap "Continue to App"

    Navigates to the main Dashboard (home route).

Chapter 2: App Customization & Security Settings Drawer > Settings (Route: settings)
Customize visual themes, RGB accent colors, language localization, biometric app lock, screenshot protection, and Ultra-Secure database encryption at rest.
2.1 Themes, Accent Colors & Localization (SettingsScreen.kt)
Personalize your app UI, display mode, and language.
  1. 1
    Open Navigation Drawer & Tap Settings

    Tap top-left hamburger menu or swipe right from left edge > tap Settings.

  2. 2
    Select App Theme

    Tap Theme dropdown and choose:

    • Light — Standard light color scheme.
    • Dark — Standard dark mode.
    • OLED — Pitch black theme optimized for AMOLED battery savings.
  3. 3
    Customize Primary Accent Color

    Tap Color button. Adjust the Red, Green, and Blue sliders in the dialog to generate your personalized Material 3 primary tint.

  4. 4
    Select App Language

    Tap Language dropdown and select English, Spanish (Español), German (Deutsch), Chinese (中文), or Russian (Русский).

2.2 Security, Biometric App Lock & Ultra-Secure Mode
Protect your financial records with Android Biometrics, FLAG_SECURE, and database encryption at rest.
  1. 1
    Enable Biometric App Lock & Inactivity Timeout

    Toggle App Lock switch ON. Tap Inactivity Timeout dropdown to select auto-lock duration: 5 seconds, 15 seconds, 30 seconds, 1 minute, 5 minutes, or Keep unlocked until app closure.

  2. 2
    Enable Disable Screenshots (FLAG_SECURE)

    Toggle Disable Screenshots ON. Prevents screen recording, screenshots, and Android task switcher previews of your sensitive financial data.

  3. 3
    Enable Ultra-Secure Mode (Database Encryption at Rest)

    Toggle Ultra-Secure Mode ON. Prompts to set a master password. When enabled, FinTrack encrypts your SQLite database file on disk using PBKDF2 + AES-GCM 256-bit encryption whenever the app is closed!

⚠️ Important Notice on Ultra-Secure Mode
When Ultra-Secure Mode is active, you must enter your Master Password on app startup (`DecryptionScreen`) to decrypt the database into memory!
Chapter 3: Categories, Accounts & Accounting Heads Drawer > Categories / Headers / Tags
Build your multi-tiered Chart of Accounts (Major Heads > Minor Heads > Micro Accounts), Categories, Counterparties (Parties), and Target Tags.
3.1 Managing Major & Minor Accounting Heads (ManageHeadsScreen.kt)
Organize top-level accounting categories (Assets, Liabilities) and parent groups.
  1. 1
    Navigate to Manage Headers

    Drawer > tap Manage Headers (Route: manage_heads).

  2. 2
    Switch Between Major and Minor Tabs

    Tap Major tab to view top-level heads, or Minor tab to view parent sub-groups (e.g., Bank Accounts, Credit Cards, Loans).

  3. 3
    Add New Major / Minor Head

    Tap + Add floating button (Route: add_head). Enter head Name. If Minor Head, select parent Major Head from dropdown list.

  4. 4
    Edit or Toggle Status

    Use the toggle switch on any item row to enable/disable it, or tap Edit / Delete icons.

💡 System Protection Rule
System-critical mandatory heads (like "On Account (Loan)" or "Credit Card") cannot be deleted to prevent database corruption.
3.2 Creating Categories, Accounts & Parties (AddCategoryScreen.kt)
Add bank accounts, cash wallets, credit cards, income/expense categories, and counterparties.
  1. 1
    Navigate to Categories & Accounts Manager

    Drawer > tap Categories (Route: manage_categories) > tap + Add floating button (Route: add_category).

  2. 2
    Select Item Type Chip

    Select filter chip at the top: Income, Expense, or Accounts.

  3. 3
    Enter Details for Account (Micro Head)
    • Name: e.g., Chase Checking or Cash Wallet.
    • Emoji Icon: Select an emoji from the horizontal icon slider (e.g. 🏦, 💵, 💳).
    • Opening Balance: Enter current balance (e.g., 1500.00).
    • Minor Head: Select parent group (e.g., Bank Accounts).
    • Credit Card Options: If linked to Credit Card head, enter Credit Limit, Billing Cycle Start, Billing Cycle End, and Payment Due Date.
    • Is Emergency Fund: Toggle ON if this account is dedicated to your emergency fund.
    • Default Due Days: Optional default payment window days.
  4. 4
    Draft Auto-Save Protection

    If you press back or tap "Modify Heads" to create a new parent head, your inputs are preserved automatically in viewModel.draftAccount!

  5. 5
    Tap "Save"

    Saves entry to database and refreshes all dropdowns instantly.

3.3 Managing Horizontal Tags & Target Goals (ManageTagsScreen.kt)
Create tags for project tracking and set target financial goals.
  1. 1
    Navigate to Tags Hub

    Drawer > tap Tags (Route: manage_tags) > tap + Add Tag (Route: add_tag).

  2. 2
    Configure Tag Options
    • Name: e.g., #Vacation2026 or #TaxDeductible.
    • Tracking Type: Select Income, Expense, or Both.
    • Target Number: Optional goal target (e.g. 2000.00 for trip limit).
  3. 3
    View Tag Summary Analytics

    Drawer > Tags > Summary by Tags (Route: summary_by_tags) to compare actual tagged spending against target goal numbers!

Chapter 4: Daily Transaction Entry & Operations Dashboard > '+' Floating Action Button
Log expenses, incomes, inter-account transfers, multi-entry split receipts, foreign currency transactions, subscriptions, and invoice settlements.
4.1 Recording Standard Expenses, Incomes & Transfers (AddTransactionScreen.kt)
Primary transaction creation workflow.
  1. 1
    Open Add Transaction Screen

    From Dashboard, tap the primary + Floating Action Button (Route: add_transaction).

  2. 2
    Select Transaction Type Filter Chip
    • Expense — Outflow reducing net worth.
    • Income — Inflow increasing net worth.
    • Transfer — Movement between two of your own accounts.
  3. 3
    Enter Amount & Use Built-in Calculator

    Type numeric amount. Tap calculator icon next to input to open floating calculator dialog to sum bill items (e.g. 45.50 + 12.00).

  4. 4
    Select Accounts & Categories
    • From Account: Source account (e.g., Checking Account).
    • Category / To Account: Select Expense/Income category OR destination account if Transfer.
    • Party (Optional): Select counterparty for On-Account transactions.
  5. 5
    Set Date & Time Pickers

    Defaults to current time. Tap date/time fields to open DatePickerDialog and TimePickerDialog.

  6. 6
    Configure Additional Options
    • Merchant Name: Enter merchant name (e.g. Amazon).
    • Discretionary Toggle: Toggle ON if this is non-essential ("Want") spending.
    • Tags: Select project tags (e.g. #Vacation).
    • Invoice & Due Days: Optional invoice number and due period days.
  7. 7
    Tap "Save Transaction"

    Saves entry to SQLite, updates balances, recalculates budgets, and triggers background alert checks.

✅ Transfer Rule Reminder
Always select `Transfer` mode when transferring funds between your bank accounts or paying off credit card bills!
4.2 Itemized Multi-Entry Split Transactions
Split a single store receipt across multiple categories.
  1. 1
    Enable Multi-Entry Switch

    In Add Transaction, toggle Multi-Entry switch ON.

  2. 2
    Enter Overall Total Amount

    Type full receipt amount (e.g., $150.00).

  3. 3
    Add Itemized Rows

    Tap + Add Item to add category split rows:

    • Row 1: Category = Groceries, Amount = $100.00.
    • Row 2: Category = Household Supplies, Amount = $30.00.
    • Row 3: Category = Electronics, Amount = $20.00.
  4. 4
    Sum Validation Check

    If split row sum does not equal overall receipt total ($150.00), FinTrack displays a mismatch dialog showing exact variance before saving!

4.3 Foreign Currency & Manual Rate Override
Log foreign purchases with exact bank conversion rates.
  1. 1
    Select Foreign Currency

    Select foreign currency code (e.g. EUR) from Foreign Currency dropdown.

  2. 2
    Enter Foreign Amount

    Enter price in foreign currency (e.g. €100.00).

  3. 3
    Toggle Manual Rate Override

    Check Manual Rate if your credit card issuer charged specific markup fees, and type the exact final local base currency charge shown on your mobile banking alert!

4.4 Transaction Templates & Quick Entry Widget
Ultra-fast transaction entry shortcuts.
  1. 1
    Create Transaction Template

    Drawer > Templates (Route: templates) > tap + Add Template (Route: add_transaction_template). Pre-configure account, category, amount, and note.

  2. 2
    Log Entry in One Tap

    Tap Use Template on any saved template card to instantly log transactions!

  3. 3
    Use Quick Entry Screen (QuickEntryScreen.kt)

    Access `quick_entry` route via home widget shortcut for rapid 3-second logging without opening the full app!

Chapter 5: Debt & Loan Management Drawer > Subscriptions > Loans Tab
Set up Bank Mortgages, Auto Loans, Personal Borrowings, and P2P Lendings with exact Annuity Due EMI calculations, gap interest, and amortization tables.
5.1 Adding Borrowing vs. Lending Loans (AddLoanScreen.kt & LoanCalculator.kt)
Configure loan terms, gap interest methods, and repayment schedules.
  1. 1
    Open Add Loan Screen

    Drawer > Subscriptions > select Loans Tab > tap Add Loan.

  2. 2
    Select Loan Type Chip

    Select Borrowing (Liability - money you owe) or Lending (Asset - money owed to you).

  3. 3
    Enter Principal, Interest Rate & Tenure
    • Name: e.g. Home Mortgage Chase.
    • Principal Amount: Sum borrowed (e.g. 250000.00).
    • Annual Interest Rate (%): APR percentage (e.g. 6.5).
    • Total Tenure: Total periods (e.g. 360 for 30 years).
    • Frequency: Monthly, Quarterly, Half Yearly, or Yearly.
  4. 4
    Select Gap Interest Method

    Select Days (Actual/365) or Bank Convention (Month/Odd) to account for broken-period interest accrued between disbursement date and first repayment date.

  5. 5
    Review Auto-Calculated EMI or Manual Override

    FinTrack computes standard EMI using Annuity Due logic: LoanCalculator.calculateStandardEMI(). If you manually edit the EMI field, FinTrack uses a binary search solver (calculatePeriodicRateFromEMI()) to back-calculate implied interest rates!

  6. 6
    Inspect Full Amortization Schedule & Save

    Tap View Full Schedule overlay to inspect principal vs interest breakdown for all periods, then tap Save.

✅ Expected Result
Creates a dedicated Loan micro-head account, establishes party tracking, and adds EMI payment reminders to your dashboard.
Chapter 6: Credit Card Dashboard Drawer > Credit Cards (Route: credit_cards)
Track credit card spending cycles, billed statement balances, unbilled current charges, payment due dates, and credit utilization ratios.
6.1 Statement Cycles & Credit Utilization Tracking (CreditCardDashboard.kt)
Manage statement due dates and credit bureau score impacts.
  1. 1
    Open Credit Card Dashboard

    Drawer > tap Credit Cards.

  2. 2
    Swipe Card Pager

    Swipe horizontally across top card pager cards to inspect individual card summaries (Total Balance, Credit Limit, Utilization Gauge).

  3. 3
    Inspect Billed vs. Unbilled Overlays

    Tap Billed Transactions to view current statement balance due, or tap Unbilled Transactions to view charges incurred in the current active cycle.

  4. 4
    Pay Card Statement

    Tap Pay Statement to open a pre-configured Transfer entry from your checking account to your credit card!

💡 Credit Score Impact Alert
If card credit utilization exceeds 30%, `FinancialInsightEngine.kt` generates a warning alert on your home dashboard to help protect your credit score!
Chapter 7: Subscriptions & Recurring Payments Drawer > Subscriptions (Route: subscriptions)
Manage recurring memberships, direct debits, recurring transfers, auto-recording, and catch-up payments.
7.1 Auto-Recording & Catch-Up Payment Management (SubscriptionDashboard.kt)
Automate recurring standing instructions.
  1. 1
    Open Subscription Dashboard

    Drawer > tap Subscriptions.

  2. 2
    Switch Between Tabs

    Tap Subscriptions, Recurring Transfers, or Loans tabs.

  3. 3
    Enable Auto-Record Switch

    Toggle Auto-Record switch ON for fixed subscriptions. ReminderWorker.kt will automatically record transaction entries on due dates!

  4. 4
    Perform Catch-Up Payment

    If you missed logging past dues, tap Catch-Up Payment on any subscription card to log all pending historical months in one tap!

Chapter 8: Budgets & Performance Goals Drawer > Budgets (Route: budgets_main)
Establish spending limits across category groups and monitor real-time burning run-rates.
8.1 Creating Category Budgets & Higher-Is-Better Targets (BudgetScreen.kt)
Set cost ceilings or income/savings targets.
  1. 1
    Open Budgets Hub

    Drawer > tap Budgets > tap Set / Remove Budget (Route: manage_budgets) > tap + Add Budget (Route: add_budget).

  2. 2
    Select Target Categories & Accounts

    Tap Select Categories and select categories (e.g., Groceries + Dining Out).

  3. 3
    Set Amount & Duration

    Enter budget ceiling (e.g. $500.00). Select duration: Daily, Weekly, Monthly, Half Yearly, Yearly, or Custom (e.g., 14 days).

  4. 4
    Toggle Higher-Is-Better Switch

    Leave OFF for expense ceilings (Red when over budget). Toggle ON for income/savings targets (Green when over target)!

  5. 5
    View Budget vs. Actual (BudgetComparisonScreen.kt)

    Drawer > Budgets > Budget vs Actual (Route: budget_vs_actual) to inspect real-time progress bars and run-rate projections!

Chapter 9: Automated SMS Rules Drawer > Auto Rules (Route: rules)
Automatically convert bank SMS notifications into pre-categorized accounting transactions.
9.1 Creating Auto-Categorization Rules (RulesScreen.kt & SmsReceiver.kt)
Configure regex pattern matching for bank notifications.
  1. 1
    Open Rules Manager

    Drawer > tap Auto Rules > tap + Add Rule.

  2. 2
    Configure Rule Pattern Criteria
    • Rule Name: e.g. Amex Uber Rule.
    • Sender ID (msgFrom): Bank SMS sender code (e.g. AMEX-US).
    • Contains Text: Keyword pattern (e.g. Uber).
  3. 3
    Set Automatic Pre-Mappings

    Select pre-assigned Account (e.g. Amex Credit Card), Category (e.g. Transportation), Party, and Tags.

  4. 4
    Save Rule

    When an SMS arrives matching these criteria, SmsReceiver.kt automatically extracts the transaction amount and logs the entry!

Chapter 10: Statement CSV Importer Drawer > Import Statement (Route: import_statement)
Import historical bank CSV files, map table headers, and perform bulk category tagging.
10.1 Bank Statement ETL Import & Bulk Tagging (ImportStatementScreen.kt)
Bulk load historical bank transactions in seconds.
  1. 1
    Select Destination Account

    Drawer > tap Import Statement > select target Account (e.g. Chase Checking).

  2. 2
    Pick CSV File

    Tap Select CSV File and pick your bank export CSV file from device storage.

  3. 3
    Map Interactive Table Header Roles

    In the parsed preview table, map each column header dropdown to its role: Date, Amount, Description, and Type (Debit/Credit).

  4. 4
    Perform Bulk Category Tagging

    Select multiple transaction rows in the preview > tap Bulk Edit > assign category to 50 entries in one click!

  5. 5
    Finalize Import

    Tap Import Selected to commit verified entries to your SQLite database.

Chapter 11: Financial Notes, Checklists & Drawings Drawer > Notes (Route: notes)
Store tax checklists, warranty notes, asset serial numbers, and canvas drawings organized by notebooks.
11.1 Managing Financial Notes & Notebooks (NotesScreen.kt)
Rich text notes, checklists, drawing canvases, and pinning.
  1. 1
    Open Notes Screen

    Drawer > tap Notes > tap + Add Note.

  2. 2
    Select Note Type

    Choose Text, Checklist, or Drawing canvas.

  3. 3
    Organize with Notebooks & Color Coding

    Select Notebook folder, select visual card color, and toggle Pin Note to pin top financial tasks to your notepad screen!

Chapter 12: Database Backup, WebDAV Sync & E2EE Drawer > Database (Route: database)
Perform manual SQLite database backups, set up WebDAV private cloud sync, configure auto-backup schedules, and protect data with master passphrase encryption.
12.1 WebDAV Cloud Sync & Passphrase Encryption (DatabaseScreen.kt & WebDavWorker.kt)
Automate private encrypted cloud backups to Nextcloud/ownCloud/WebDAV endpoints.
  1. 1
    Open Database Administration Screen

    Drawer > tap Database.

  2. 2
    Configure WebDAV Credentials
    • Server URL: HTTPS WebDAV URL (e.g. https://cloud.example.com/remote.php/dav/files/user/).
    • Username & Password: Enter WebDAV account credentials.
  3. 3
    Configure End-to-End Encryption (E2EE)

    Toggle Encrypt Remote Backups ON. Enter your master backup passphrase (PBKDF2 + AES-GCM 256-bit encryption via EncryptionService.kt).

  4. 4
    Set Scheduled Auto-Backup Interval

    Select Schedule Frequency: Off, Daily, or Weekly. BackupWorker.kt handles periodic background uploads.

  5. 5
    Tap "Sync Now"

    Triggers immediate backup upload to test cloud connection.

⚠️ Master Passphrase Security Notice
Store your master E2EE passphrase in a secure password manager! Encrypted database backups cannot be decrypted without this exact passphrase.