Skip to content
End1essspacePublic

About

Cross-platform personal finance manager built with .NET 9 + Avalonia UI

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Repository files navigation

[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.UI

On the first launch, the app will automatically create:

  • XLedger.db — local database
  • grid.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

End1essspace | 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 локализация

💡 Автор

End1essspace | RX TG: @End1essspace GitHub: End1essspace

🧾 Лицензия

Проект распространяется под лицензией MIT.

About

Cross-platform personal finance manager built with .NET 9 + Avalonia UI

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages