Open source · Self-hostedOpen source · Self-hosted

Ваши деньги.
Ваш сервер.
Your money.
Your server.

Raccounting — self-hosted трекер личных финансов: счета, транзакции, переводы между валютами, бюджеты по категориям и отчёты. Разворачивается одной командой и остаётся полностью вашим — как старая бухгалтерская книга, только считает быстрее. Raccounting is a self-hosted personal finance tracker: accounts, transactions, cross-currency transfers, per-category budgets and reports. One command to deploy, and it stays entirely yours — like an old ledger book, just faster at arithmetic.

Go + embedded Vue 3 MySQL · PostgreSQL · SQLite
Экран «Обзор» на телефоне — тот же интерфейс, адаптированный под мобильный экран The Overview screen on a phone — the same interface, adapted for a mobile screen
ВозможностиFeatures

Всё нужное для учёта — и ничего лишнегоEverything it takes to track money — nothing more

Ни одной лишней сущности — только то, что действительно нужно, чтобы понимать, куда уходят деньги.No unnecessary entities — just what it actually takes to understand where your money goes.

Счета с реальными балансамиAccounts with real balances

Наличные, карты, банковские счета, вклады, кредитки, долги, виртуальные счета — баланс синхронизируется атомарно с каждой операцией. Cash, card, bank account, savings, credit card, debt or virtual — each balance is kept in sync atomically with every transaction.

Транзакции, категории и тегиTransactions, categories and tags

Доход или расход с одной категорией и любым числом свободных тегов — чтобы отметить цифры под другим углом, например «Свадьба». Income or expense entries carry one category and any number of freeform tags, for checking the numbers a different way — e.g. "Wedding".

Переводы между счетамиTransfers between accounts

Одна атомарная операция, две связанные проводки — включая переводы между разными валютами по указанному вами курсу. One atomic operation, two linked legs — including transfers between different currencies, at a rate you set.

Бюджеты по категориямPer-category budgets

План расходов на месяц по каждой категории и отслеживание факта — интерфейс сам уведомит, если бюджет превышен. Plan how much to spend in a category for a given month and track actual spend — the UI will notify you if your budget is exceeded.

МультивалютностьMulti-currency

Произвольный набор валют, одна из которых базовая — курсы остальных считаются относительно неё для общего итога на дашборде. An arbitrary set of currencies, one marked default — every other currency carries a rate relative to it for the dashboard's aggregate total.

Дашборд и отчётыDashboard & reports

Общий баланс, разбивка доходов и расходов по категориям, фильтруемая история операций. Total balance, income/expense breakdowns, spending by category, and a filterable transaction list.

Бэкап и восстановлениеBackup & restore

Экспорт всех таблиц (кроме учётных данных) в один версионированный JSON-снимок — и импорт обратно с полной проверкой целостности. Export every table (minus login credentials) as one versioned JSON snapshot, and import it back with full consistency checks.

АутентификацияAuthentication

Bcrypt-хэш пароля, случайный токен сессии, httpOnly cookie и почасовая очистка просроченных сессий. Bcrypt-hashed password, a random session token, an httpOnly cookie, and an hourly sweep of expired sessions.

5 языков интерфейса5 interface languages

Русский, английский, испанский, немецкий и французский — язык сохраняется в настройках. Russian, English, Spanish, German and French — the chosen language is saved in settings.

Светлая и тёмная темаLight and dark theme

Переключение в один клик, тема сохраняется в настройках и переносится вместе с бэкапом — как и язык интерфейса. Switch with one click — like the interface language, the choice is saved in settings and travels with a backup.

ИнтерфейсInterface

Экскурсия по интерфейсуA tour of the interface

Реальный интерфейс приложения, с тестовыми данными — счета, операции, отчёты и бюджет так, как они выглядят после недели использования. Вёрстка адаптивная: то же самое умещается на экране телефона без обрезанных таблиц и горизонтальной прокрутки. The actual app interface, with sample data — accounts, transactions, reports and budget the way they look after a week of real use. The layout is fully responsive: the same views fit a phone screen with no clipped tables or sideways scrolling.

1

ОбзорOverview

Общий баланс по всем счетам, доходы и расходы за месяц, график за полгода и топ категорий трат — вся картина на одном экране, без переходов. Total balance across every account, this month's income and expenses, a six-month chart and the top spending categories — the whole picture on one screen, no digging required.

Экран «Обзор»: общий баланс, доходы и расходы, график по месяцам и топ категорий трат Overview screen: total balance, income and expenses, a monthly chart and top spending categories
2

СчетаAccounts

Каждый счёт — карта, наличные, вклад — сгруппирован по типу, с живым балансом, который меняется только через операции и переводы. Every account — card, cash, savings — grouped by type, with a live balance that only ever changes through transactions and transfers.

Экран «Счета»: карта, наличные и накопительный счёт с текущими балансами Accounts screen: a card, cash and a savings account with current balances
3

ОперацииTransactions

Полная лента операций и переводов с фильтром по счёту, категории, тегу, типу и периоду — и суммой по тому, что сейчас отфильтровано. The full ledger of transactions and transfers, filterable by account, category, tag, type and date range — with a running total for whatever's filtered.

Экран «Операции»: список операций с фильтрами и суммой по выбранному периоду Transactions screen: a filterable list of transactions with a running total for the period
4

ОтчётыReports

Расходы по категориям на круговой диаграмме, динамика баланса за 30 дней и сравнение с прошлым месяцем — без экспорта в таблицы. Spending by category on a donut chart, a 30-day balance history and a comparison against last month — no spreadsheet export required.

Экран «Отчёты»: диаграмма расходов по категориям и динамика баланса Reports screen: a spending-by-category donut chart and balance history
5

БюджетBudget

Лимит на месяц по каждой категории и прогресс по нему сразу виден — интерфейс уведомит, если какая-то категория вышла за рамки. A monthly limit per category with progress visible at a glance — the UI surfaces a notification the moment one goes over.

Экран «Бюджет»: лимиты по категориям на текущий месяц Budget screen: per-category spending limits for the current month
6

НастройкиSettings

Категории, теги, счета, валюты, язык интерфейса и экспорт/импорт всех данных одним JSON-файлом — в одном месте, без лишних вкладок. Categories, tags, accounts, currencies, interface language, and exporting or importing every bit of data as one JSON file — all in one place.

Экран «Настройки»: список категорий трат с цветами Settings screen: the list of expense categories with colors
АрхитектураArchitecture

Один процессOne process

REST API на Go и фронтенд на Vue 3 в одном бинарнике. A Go REST API and a Vue 3 frontend in the same binary.

  • Без шага сборки фронтендаNo frontend build step

    Vue 3 без зависимостей подключается прямо с CDN и встраивается в бинарник через go:embed.A dependency-free Vue 3 app loaded straight from a CDN, embedded into the binary via go:embed.

  • Три СУБД на выборThree interchangeable databases

    MySQL/MariaDB, PostgreSQL или SQLite — переключаются одной переменной окружения, миграции применяются автоматически.MySQL/MariaDB, PostgreSQL or SQLite — selected by one environment variable, migrations run automatically.

  • Гексагональная архитектураHexagonal architecture

    Бизнес-логика организована как use case на каждое действие пользователя и не зависит от конкретной БД или net/http.Business logic is organized as one use case per user action, independent of any concrete database driver or net/http.

  • Fail-fast конфигурацияFail-fast configuration

    Каждая настройка проверяется при старте — некорректное значение останавливает процесс с понятной ошибкой.Every setting is validated at startup — a malformed value stops the process with a clear message.

raccounting # один процесс, один портone process, one port
├── cmd/raccounting точка входаentry point
├── internal/domain use cases, сущностиuse cases, entities
├── internal/adapter/http REST API
├── internal/adapter/{mysql,postgres,sqlite}
├── web/ Vue 3 + Tailwind, go:embed
└── → :8080 отдаёт и API, и UIserves both API and UI
Быстрый стартQuick start

Выберите способ запуска — go run для разработки или собранный Docker-образ для сервера. Pick how you want to run it — go run while you're developing, or a built Docker image for a server.

  • 1
    Склонировать репозиторийClone the repo и выбрать способ запуска справаand pick a way to run it, on the right
  • 2
    Выбрать базу данныхPick a database SQLite не требует сервера — или укажите свою MySQL/PostgreSQLSQLite needs no server at all — or point at your own MySQL/PostgreSQL
  • 3
    ЗапуститьRun it миграции применятся автоматически, будет создан демо-пользовательmigrations apply automatically, a demo user is seeded
  • 4
    Открыть localhost:8080Open localhost:8080 и войти под дефолтными или своими даннымиand sign in as default or your own credentials

MySQL/MariaDB, PostgreSQL или SQLite — выбор одной переменной окружения DB_DRIVER. MySQL/MariaDB, PostgreSQL or SQLite — picked with a single DB_DRIVER environment variable.

terminal
git clone https://github.com/dmitriygnatenko/raccounting.git
cd raccounting

# самый быстрый способ — SQLite, без отдельной БДquickest path — SQLite, no separate database
export DB_DRIVER=sqlite
export DB_SQLITE_PATH=./data/raccounting.db

go run ./cmd/raccounting
# → http://localhost:8080

Ваши деньги — ваши данныеYour money, your data

Raccounting распространяется по лицензии MIT. Разворачивайте где угодно, меняйте под себя. Raccounting is MIT licensed. Deploy it anywhere, shape it however you need.