A premium, professional-grade personal finance application built with Go and Fyne.
MyTrack is a privacy-focused, double-entry accounting money tracker that helps you manage your finances with professional-grade features. All data is stored locally in SQLite - no cloud, no tracking, complete privacy.
- Overview
- Highlights
- Features
- Architecture
- Installation
- Usage Guide
- Development
- Documentation
- Contributing
- License
MyTrack is designed for users who want granular control over their finances. It combines the rigor of double-entry accounting with a modern, fast, and intuitive user interface.
- Privacy First: Your financial data never leaves your device.
- Double-Entry Accuracy: Every transaction is balanced, ensuring zero discrepancies.
- Performance: Native Go application with minimal resource footprint.
- Cross-Platform: Runs on Windows, macOS, and Linux.
- Expenses: Track daily spending with detailed categorization.
- Income: Record various income sources.
- Assets: Monitor cash, bank accounts, and investment portfolios.
- Liabilities: Track debts, credit cards, and loans.
- Real-time Net Worth: Instant calculation of your financial health.
- Trend Analysis: 6-month income vs. expense charts.
- Account Balances: Live updates of all asset and liability accounts.
- Monthly Budgets: Set spending limits per category.
- Visual Tracking: Progress bars indicating budget utilization.
- Alerts: Visual indicators when budgets are exceeded.
- Split Transactions: Categorize a single transaction across multiple categories.
- Recurring Detection: Automatically identify subscription patterns.
- Anomaly Detection: Flag unusual large transactions.
- Data Export: Backup your data to JSON for portability.
- Command Palette (Ctrl+K): Rapid navigation to any feature.
- Keyboard Shortcuts: Fast data entry.
MyTrack relies on a robust stack:
- Language: Go (Golang) 1.20+
- GUI Framework: Fyne v2
- Database: SQLite (via
modernc.org/sqlitepure Go driver) - Architecture Pattern: Repository Pattern with MVC-like separation.
The application uses a strict double-entry system. A Transaction consists of multiple Splits. The sum of all splits in a transaction must always equal zero.
Transaction
├── ID
├── Date
├── Description
└── Splits []
├── AccountID (Source/Destination)
├── CategoryID (Optional)
└── Amount (Positive for Debit/Expense, Negative for Credit/Income)
- Go: Version 1.20 or later.
- C Compiler: Required for Fyne's graphical drivers (OpenGL).
- Windows: TDM-GCC or MinGW-w64.
- Linux: GCC (
sudo apt install gcc libgl1-mesa-dev xorg-dev). - macOS: Xcode Command Line Tools.
-
Clone the Repository
git clone https://github.com/nabinkatwal7/go-eila.git cd go-eila -
Install Dependencies
go mod download
-
Run Application
go run cmd/mytrack/main.go
To build a standalone executable:
Windows:
go build -ldflags="-s -w" -o mytrack.exe cmd/mytrack/main.goLinux/macOS:
go build -ldflags="-s -w" -o mytrack cmd/mytrack/main.goThe -ldflags="-s -w" flags strip debug information to reduce binary size.
On the first launch, MyTrack will create a local mytrack.db file and seed it with default accounts (Cash, General Expenses) and categories (Food, Transport).
- Click + Add New in the sidebar.
- Select Simple for one-off expenses or Split for complex receipts.
- Enter amount, date, and select Account/Category.
- Click Save.
- Navigate to the Budgets view.
- Click Set/Update Budget.
- Select a category and define the monthly limit.
cmd/mytrack/: Entry point.internal/model/: Domain models (structs).internal/repository/: Database logic and queries.internal/ui/: Fyne UI components and view logic.
To create a standalone binary:
go build -ldflags="-s -w" -o mytrack.exe cmd/mytrack/main.gogo test ./...Comprehensive documentation is available in the docs/ directory:
- Quick Reference - Quick reference guide for common tasks
- User Guide - Detailed usage instructions for end users
- API Documentation - Complete API reference for the repository layer
- Architecture Guide - System design and architectural decisions
- Roadmap - Planned features and improvements
See CHANGELOG.md for version history and release notes.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project is open source and available under the MIT License.