[ENG]
💰 XLedger
XLedger is a cross-platform personal finance manager built with .NET 9 + Avalonia UI, featuring SQLite storage, localization, and system tray support.
🚀 Features
✅ Expense & Income Tracking Add, edit, and delete transactions with categories and notes.
✅ Accounts & Categories Default accounts and categories are automatically created on the first launch.
✅ Multilanguage Support Available in Russian, Uzbek, and English. The language is detected automatically based on the system settings and can be changed manually in the toolbar.
✅ Automatic Table Layout Saving
Column widths of the transaction grid are saved to
%LocalAppData%\XLedger\grid.json and restored on next startup.
✅ Local Data Storage
All user data is stored in a local SQLite database at:
%LocalAppData%\XLedger\XLedger.db
✅ System Tray Integration
- 📌 Hides to tray when the window is closed
- 🖱 Left-click: opens the main window
- ⚙ Right-click: context menu with “Open” and “Exit”
✅ Dark Theme & Modern UI Built with Avalonia UI using a custom color scheme and smooth adaptive design.
✅ Bulk Delete
- Delete Selected — remove multiple chosen rows
- Delete All — clear the entire filtered list
- Fully localized confirmation dialogs
✅ Multi-Selection Support
- Shift for range selection
- Ctrl for toggling items
- Smooth synchronization with the ViewModel
📂 Project Structure
XLedger/
├── XLedger.Domain/ # Models and entities (Transaction, Account, Category)
├── XLedger.Shared/ # Shared services and utilities (LocalizationService, etc.)
├── XLedger.Infrastructure/ # Repositories, SQLite access
├── XLedger.UI/ # Avalonia interface, ViewModels, Views
│ ├── Assets/ # Icons, JSON localization files
│ ├── Views/ # XAML windows (MainWindow, NewTransactionDialog)
│ └── ViewModels/ # MVVM layer
└── README.md
⚙️ Requirements
- .NET 9 SDK or newer
- Windows 10/11, Linux, or macOS
- SQLite (included via
Microsoft.Data.Sqlite)
🧩 Build & Run
git clone https://github.com/End1essspace/XLedger.git
cd XLedger
dotnet build
dotnet run --project XLedger.UIOn the first launch, the app will automatically create:
XLedger.db— local databasegrid.json— table layout configuration- folder
%LocalAppData%\XLedger
🗃 Data Storage Format
SQLite tables:
- accounts — user accounts
- categories — income/expense categories
- transactions — transaction records
All dates are stored in UTC (OccurredAtUtc) and automatically converted to local time when displayed.
🌍 Localization
Language files are located in:
XLedger.UI/Assets/Lang/
├── en.json
├── ru.json
└── uz.json
To add a new language, simply create a JSON file following the same structure
and register the language code in LocalizationService.
🖼 System Tray Behavior
-
Left-click on the tray icon — open main window
-
Right-click — open context menu:
- Open
- Exit
-
Closing the window hides the app to tray (does not terminate the process)
📦 Data Paths
| Purpose | Path |
|---|---|
| Database | %LocalAppData%\XLedger\XLedger.db |
| Grid configuration | %LocalAppData%\XLedger\grid.json |
🛠 Technologies Used
- Avalonia UI 11.3+
- .NET 9
- SQLite (Microsoft.Data.Sqlite)
- MVVM Pattern
- DynamicResource Localization
💡 Author
XCON | RX Telegram: @End1essspace GitHub: End1essspace
🧾 License
This project is distributed under the MIT License.
[RUS]
💰 XLedger
XLedger — это кроссплатформенное приложение для учёта личных финансов,
написанное на .NET 9 + Avalonia UI с поддержкой SQLite, локализаций и системного трея.
🚀 Возможности
✅ Учёт расходов и доходов
Добавляйте, редактируйте и удаляйте транзакции с категориями и заметками.
✅ Счета и категории
Приложение автоматически создаёт стартовые категории и счета при первом запуске.
✅ Мультиязычность
Поддержка русского, узбекского и английского языков.
Язык автоматически определяется по системе и может быть переключён вручную в панели инструментов.
✅ Автосохранение таблицы
Ширина колонок таблицы транзакций сохраняется в
%LocalAppData%\XLedger\grid.json и восстанавливается при следующем запуске.
✅ Хранение данных
Все данные сохраняются в локальной базе SQLite по пути:
%LocalAppData%\XLedger\XLedger.db
✅ Системный трей
- 📌 Приложение прячется в трей при закрытии.
- 🖱 ЛКМ по иконке — открывает главное окно.
- ⚙ ПКМ — меню с пунктами «Открыть» и «Выход».
✅ Темная тема и современный UI Интерфейс построен на Avalonia с кастомной цветовой схемой и плавным адаптивным дизайном.
✅ Массовое удаление
- Delete Selected — удалить несколько выбранных строк
- Delete All — очистить весь отфильтрованный список
- Полностью локализованные диалоговые окна подтверждения
✅ Поддержка множественного выбора
- Shift — выделение диапазона
- Ctrl — переключение выделения элементов
- Плавная синхронизация с ViewModel
📂 Структура проекта
XLedger/
├── XLedger.Domain/ # Модели и сущности (Transaction, Account, Category)
├── XLedger.Shared/ # Общие сервисы и утилиты (LocalizationService и т.д.)
├── XLedger.Infrastructure/ # Репозитории, работа с SQLite
├── XLedger.UI/ # Интерфейс Avalonia, ViewModels, Views
│ ├── Assets/ # Иконки, языковые файлы JSON
│ ├── Views/ # XAML окна (MainWindow, NewTransactionDialog)
│ └── ViewModels/ # ViewModel-слой (MVVM)
└── README.md
⚙️ Требования
- .NET 9 SDK или новее
- Windows 10/11, Linux или macOS
- SQLite (входит в состав .NET через
Microsoft.Data.Sqlite)
🧩 Сборка и запуск
git clone https://github.com/End1essspace/XLedger.git
cd XLedger
dotnet build
dotnet run --project XLedger.UIПосле первого запуска приложение создаст:
XLedger.db— база данных;grid.json— конфигурация ширин таблицы;- папку
%LocalAppData%\XLedger.
🗃 Формат хранения данных
Таблицы SQLite:
- accounts — счета
- categories — категории (доходы/расходы)
- transactions — транзакции
Все даты хранятся в UTC (OccurredAtUtc) и автоматически конвертируются в локальное время при отображении.
🌍 Локализация
Языковые файлы находятся в:
XLedger.UI/Assets/Lang/
├── en.json
├── ru.json
└── uz.json
Для добавления нового языка — просто создайте JSON по аналогии и добавьте код языка в LocalizationService.
🖼 Системный трей
- ЛКМ по иконке — открыть окно.
- ПКМ — открыть меню:
- Открыть
- Выход
- Крестик в окне скрывает приложение в трей (не завершает процесс).
📦 Путь хранения данных
| Назначение | Путь |
|---|---|
| База данных | %LocalAppData%\XLedger\XLedger.db |
| Конфиг таблицы | %LocalAppData%\XLedger\grid.json |
🛠 Используемые технологии
- Avalonia UI 11.3+
- .NET 9
- SQLite (Microsoft.Data.Sqlite)
- MVVM-паттерн
- DynamicResource локализация
💡 Автор
XCON | RX TG: @End1essspace GitHub: End1essspace
Проект распространяется под лицензией MIT.