Commit Graph

24 Commits

Author SHA1 Message Date
ed5a5e231f Add settings view with theme, categories, export, and backup 2026-03-02 00:57:05 +02:00
2fff781a53 Add full state backup and restore with ZIP archives 2026-03-02 00:53:17 +02:00
341e31ed3b Add PDF monthly report generation 2026-03-02 00:51:31 +02:00
e53301421e Add JSON export for full data dump 2026-03-02 00:43:23 +02:00
987ab925ef Add CSV export for transactions with date filtering 2026-03-02 00:41:34 +02:00
f12edd8ea1 Add recurring transactions view and launch catch-up 2026-03-02 00:37:30 +02:00
6adf10c41b Add recurring transaction logic with catch-up generation 2026-03-02 00:34:34 +02:00
d247c56cfa Add desktop notifications for budget threshold crossings
After saving an expense, checks if the category budget reaches 75%,
90%, or 100% thresholds. Sends gio::Notification for each newly
crossed threshold. Tracks sent notifications in database to prevent
duplicates within the same month.
2026-03-02 00:28:43 +02:00
2741df45ad Add budgets view with progress bars and management
Month selector, summary of total budgeted vs spent, per-category
progress bars with green/yellow/red color coding based on percentage.
Add budget dialog with category picker and amount. Edit and delete
budgets with confirmation.
2026-03-02 00:26:09 +02:00
b772870d98 Add budget CRUD operations and progress calculation
set/get/list/delete budgets per category per month. Budget progress
calculates spent vs budgeted percentage. Copy budgets from one month
to the next. Seven new unit tests covering all operations.
2026-03-02 00:24:08 +02:00
29d86a5241 Add charts view with pie, bar, and line charts
Pie chart shows expense breakdown by category with color-coded slices.
Bar chart shows income vs expense for the last 6 months. Line chart
shows cumulative daily net trend. All charts render via plotters
BitMapBackend to GDK MemoryTexture for display. Month navigation
shared across all three charts.
2026-03-02 00:22:19 +02:00
0a198db8c6 Add currency selection with live exchange rate fetching
Currency dropdown now uses 30 currencies from ExchangeRateService.
Defaults to base currency from settings. Selecting a different
currency fetches the exchange rate asynchronously and displays it.
Rate is stored with the transaction on save.
2026-03-02 00:16:47 +02:00
e342272dbe Add exchange rate service with caching and fallback API
ExchangeRateService fetches rates from fawazahmed0/exchange-api with
Frankfurter API as fallback. Rates are cached in SQLite for 24 hours.
Includes response parsers, 30 supported currencies, and 8 unit tests
covering parsing, caching, and same-currency identity.
2026-03-02 00:14:50 +02:00
a3ffc531b9 Add edit and delete for transactions in history view
Click a transaction row to open an edit dialog with pre-filled amount,
date, and note fields. Save updates the database and refreshes the
list. Delete button shows a confirmation dialog before removing the
transaction. Toast notifications for all actions.
2026-03-02 00:13:04 +02:00
854c3469b9 Add history view with day-grouped transaction list
Month navigation with prev/next buttons, transactions grouped by date
with headers (Today/Yesterday/formatted date), category icons, amounts
color-coded green for income and red for expenses, and daily net totals.
2026-03-02 00:09:21 +02:00
00de036de8 Wire log view to database for transaction persistence
Initialize SQLite database at XDG data directory on app startup.
Categories now load from database with emoji icons. Save button
validates input, inserts transaction, shows toast notification,
clears the form, and refreshes the recent transactions list.
2026-03-02 00:07:39 +02:00
bc4a3453f8 Add log view UI with transaction entry form
Expense/Income toggle, amount entry, currency dropdown, category
dropdown (filtered by transaction type), date picker with calendar
popover, optional note field, save button, and recent transactions
placeholder section.
2026-03-02 00:05:10 +02:00
6daec1ea38 Add main window with sidebar navigation
AdwNavigationSplitView with six sidebar items (Log, History, Charts,
Budgets, Recurring, Settings) and placeholder StatusPage content that
switches via crossfade transition on selection.
2026-03-02 00:02:53 +02:00
a5f578844f Add minimal AdwApplication with empty window 2026-03-01 23:59:43 +02:00
61ced2d482 Add CRUD operations for transactions, categories, and aggregation queries 2026-03-01 23:59:15 +02:00
9865f8288f Add database layer with schema creation and default categories 2026-03-01 23:57:37 +02:00
26d0be20c2 Add core data models for transactions, categories, budgets 2026-03-01 23:56:41 +02:00
2ca1f87bf3 Scaffold cargo workspace with core and gtk crates 2026-03-01 23:54:45 +02:00
2b984c3f5d Initial commit - add gitignore 2026-03-01 23:31:06 +02:00