https://github.com/chrissch-dev/budget-tracking-app
A very simple budget tracking app
https://github.com/chrissch-dev/budget-tracking-app
budget rust tracking
Last synced: about 1 year ago
JSON representation
A very simple budget tracking app
- Host: GitHub
- URL: https://github.com/chrissch-dev/budget-tracking-app
- Owner: ChrisSch-dev
- License: mit
- Created: 2025-06-22T06:19:15.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-22T06:38:12.000Z (about 1 year ago)
- Last Synced: 2025-06-22T07:25:05.878Z (about 1 year ago)
- Topics: budget, rust, tracking
- Language: Rust
- Homepage:
- Size: 9.93 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fintrack
**Fintrack** is a modern, modular, cross-platform finance and budget tracking desktop application written in Rust.
It features a sleek GUI (built with `eframe`/`egui`), robust file persistence (JSON), CSV import/export, analytics, multi-currency support, monthly budgets, and more.
## Features
- 📊 **Modern Native GUI** (eframe/egui)
- 💸 **Add, edit, and delete transactions (with per-transaction currency)**
- 🌎 **Multi-currency support** (per-transaction currency, base currency selection, automatic conversion in analytics and totals)
- 💱 **Editable exchange rates** (edit in GUI; fetch live rates from API)
- 🗂 **Categories, search/filter, and recurring expenses**
- 🏦 **Multi-currency monthly budget limits and progress tracking per category**
- 📈 **Analytics: Pie charts for category spending (in base or original currency)**
- 💾 **Save/load profiles (JSON)**
- 🗃 **CSV import/export (with currency support)**
- 🌗 **Light/dark theme toggle**
- 🎯 **Cross-platform:** Windows, macOS, Linux
## Folder Structure
```
fintrack/
├── Cargo.toml
└── src/
├── main.rs # Entry point
├── app.rs # App struct and core logic
├── gui.rs # All GUI rendering (with pie chart, currency toggles, exchange editing)
├── data.rs # Persistence, currency conversion, exchange rates (with API fetching), CSV import/export
├── analytics.rs # Filtering, stats, charts (totals in base and other currencies)
├── utils.rs # Theme and helpers
└── types.rs # Data types, state, Currency enum
```
## Multi-Currency Support
- Each transaction records its own currency.
- The application maintains a **base currency** (user-selectable, e.g. USD/EUR/GBP/JPY/CHF).
- All totals, analytics, and charts are shown in this base currency, using exchange rates (editable in GUI & fetchable from API).
- Per-category budgets can be set in any currency; analytics display conversions to base currency.
- When adding a transaction, select the appropriate currency from a dropdown.
## Editable Exchange Rates
- Click "Edit Exchange Rates" in the top bar to open the rate editor.
- Edit any rate, or click "Update from API" for live rates.
## Multi-currency CSV Import/Export
- CSV import/export supports a `currency` column for each transaction.
## Multi-currency Charts
- Pie chart analytics can be toggled between base currency (converted) and original transaction currencies.
## Usage
### Prerequisites
- [Rust](https://rustup.rs/) (stable toolchain)
- Add the following dependencies to `Cargo.toml` if not present:
- eframe
- egui_extras
- serde, serde_json
- chrono
- rfd
- csv
- reqwest = { version = "0.12", features = ["blocking", "json"] }
### Run
```
cargo run
```
### Build
```
cargo build --release
```
### Binary will be found in `target/release/fintrack`
## License
MIT
---
Made with ❤️ in Rust.