Skip to content

End1essspace/XLedger

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

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.

Packages

 
 
 

Contributors

Languages