INITIALIZING...
⚠ CONFIRM DELETE
Delete {{ deleteDialog.label }} LKR {{ fmtAmt(deleteDialog.amount) }}? This cannot be undone.
{{ liveTime }}
{{ selectedMonthLabel }} CURRENT
INCOME THIS MONTH
LKR {{ fmtAmt(monthIncome) }}
SPENT THIS MONTH
LKR {{ fmtAmt(monthStats.total) }}
BALANCE
{{ balance < 0 ? '-' : '' }}LKR {{ fmtAmt(Math.abs(balance)) }} OVER
DAILY BUDGET LEFT
NET SAVINGS
LKR {{ fmtAmt(Math.abs(dailyLeft)) }} /day
{{ balance >= 0 ? '+' : '-' }}LKR {{ fmtAmt(Math.abs(balance)) }}
0% {{ budgetPct.toFixed(1) }}% UTILIZED 100%
{{ budgetPct.toFixed(0) }}%
↑ LOG INCOME FOR THIS MONTH TO ENABLE BUDGET TRACKING
LOG EXPENSE
LKR
LOG INCOME — {{ selectedMonthLabel }}
LKR
THIS MONTH'S INCOME
LOADING...
📈 No income logged for {{ selectedMonthLabel }}.
Use the form above or tap SALARY (7th) to get started.
{{ incomeEntries.length }} ENTR{{ incomeEntries.length===1?'Y':'IES' }} TOTAL: LKR {{ fmtAmt(monthIncome) }}
TRANSACTIONS — {{ selectedMonthLabel }}
{{ expenses.length }} RECORDS
LOADING...
[--] No expenses for {{ selectedMonthLabel }}.
MULTI-MONTH REPORTS
MONTH INCOME EXPENSES NET SAVE %
{{ fmtMonthLabel(row.month) }} {{ row.total_income > 0 ? 'LKR '+fmtAmt(row.total_income) : '—' }} {{ row.total_expenses > 0 ? 'LKR '+fmtAmt(row.total_expenses) : '—' }} {{ row.total_income > 0 || row.total_expenses > 0 ? (row.net >= 0 ? '+' : '') + 'LKR '+fmtAmt(row.net) : '—' }} {{ row.savings_rate !== null ? row.savings_rate.toFixed(1)+'%' : '—' }}
TOTAL INCOME
LKR {{ fmtAmt(reportTotals.income) }}
TOTAL SPENT
LKR {{ fmtAmt(reportTotals.expenses) }}
NET SAVED
LKR {{ fmtAmt(Math.abs(reportTotals.net)) }}
// CATEGORY BREAKDOWN ({{ reportMonths }}-MONTH PERIOD)
{{ getCatIcon(cat.category) }} {{ getCatLabel(cat.category) }}
LKR {{ fmtAmt(cat.total) }}
📊 No data available yet. Start logging expenses and income.
GROCERY TRIPS — {{ selectedMonthLabel }}
📷
TAP TO SCAN / UPLOAD RECEIPT
JPG / PNG / WEBP · Processed on-device
SCANNING... {{ ocrProgress }}%
First scan downloads language data (~10 MB, cached afterwards)
ITEM NAME QTY UNIT PRICE/U TOTAL
TRIP TOTAL LKR {{ fmtAmt(newTripTotal) }}
TRIPS — {{ selectedMonthLabel }}
LOADING...
🍕 No grocery trips for {{ selectedMonthLabel }}.
Use the form above to log your first trip.
DATA EXPORT
Export your data for analysis in Excel, Google Sheets, or any BI tool. CSV includes a UTF-8 BOM. JSON is structured for API consumption.
PERIOD
CATEGORY COLOR MAP
{{ cat.icon }} {{ cat.label }}
// SPENDING BREAKDOWN — {{ selectedMonthLabel }}
{{ getCatLabel(cat.category) }}
LKR {{ fmtAmt(cat.total) }}
No data for this month.
GROCERY ANALYSIS
{{ item.item_name }} LKR {{ fmtAmt(item.total_spent) }}
{{ item.total_qty % 1 === 0 ? item.total_qty : item.total_qty.toFixed(2) }} units · {{ item.trip_count }} trip{{ item.trip_count !== 1 ? 's' : '' }} · avg LKR {{ fmtAmt(item.total_qty > 0 ? item.total_spent / item.total_qty : 0) }}/unit
// MONTHLY BREAKDOWN
MONTHQTYSPENTAVG/UNIT
{{ fmtMonthLabel(m.month) }} {{ m.qty % 1 === 0 ? m.qty : m.qty.toFixed(2) }} LKR {{ fmtAmt(m.spent) }} LKR {{ fmtAmt(m.avg_price) }}
📊 No grocery item data yet.
Log trips with individual items to see buying patterns.
{{ t.msg }}