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.
Ни одной лишней сущности — только то, что действительно нужно, чтобы понимать, куда уходят деньги.No unnecessary entities — just what it actually takes to understand where your money goes.
Наличные, карты, банковские счета, вклады, кредитки, долги, виртуальные счета — баланс синхронизируется атомарно с каждой операцией. Cash, card, bank account, savings, credit card, debt or virtual — each balance is kept in sync atomically with every transaction.
Доход или расход с одной категорией и любым числом свободных тегов — чтобы отметить цифры под другим углом, например «Свадьба». Income or expense entries carry one category and any number of freeform tags, for checking the numbers a different way — e.g. "Wedding".
Одна атомарная операция, две связанные проводки — включая переводы между разными валютами по указанному вами курсу. One atomic operation, two linked legs — including transfers between different currencies, at a rate you set.
План расходов на месяц по каждой категории и отслеживание факта — интерфейс сам уведомит, если бюджет превышен. 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.
Произвольный набор валют, одна из которых базовая — курсы остальных считаются относительно неё для общего итога на дашборде. An arbitrary set of currencies, one marked default — every other currency carries a rate relative to it for the dashboard's aggregate total.
Общий баланс, разбивка доходов и расходов по категориям, фильтруемая история операций. Total balance, income/expense breakdowns, spending by category, and a filterable transaction list.
Экспорт всех таблиц (кроме учётных данных) в один версионированный JSON-снимок — и импорт обратно с полной проверкой целостности. Export every table (minus login credentials) as one versioned JSON snapshot, and import it back with full consistency checks.
Bcrypt-хэш пароля, случайный токен сессии, httpOnly cookie и почасовая очистка просроченных сессий. Bcrypt-hashed password, a random session token, an httpOnly cookie, and an hourly sweep of expired sessions.
Русский, английский, испанский, немецкий и французский — язык сохраняется в настройках. Russian, English, Spanish, German and French — the chosen language is saved in settings.
Переключение в один клик, тема сохраняется в настройках и переносится вместе с бэкапом — как и язык интерфейса. Switch with one click — like the interface language, the choice is saved in settings and travels with a backup.
Реальный интерфейс приложения, с тестовыми данными — счета, операции, отчёты и бюджет так, как они выглядят после недели использования. Вёрстка адаптивная: то же самое умещается на экране телефона без обрезанных таблиц и горизонтальной прокрутки. 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.
Общий баланс по всем счетам, доходы и расходы за месяц, график за полгода и топ категорий трат — вся картина на одном экране, без переходов. 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.
Каждый счёт — карта, наличные, вклад — сгруппирован по типу, с живым балансом, который меняется только через операции и переводы. Every account — card, cash, savings — grouped by type, with a live balance that only ever changes through transactions and transfers.
Полная лента операций и переводов с фильтром по счёту, категории, тегу, типу и периоду — и суммой по тому, что сейчас отфильтровано. The full ledger of transactions and transfers, filterable by account, category, tag, type and date range — with a running total for whatever's filtered.
Расходы по категориям на круговой диаграмме, динамика баланса за 30 дней и сравнение с прошлым месяцем — без экспорта в таблицы. Spending by category on a donut chart, a 30-day balance history and a comparison against last month — no spreadsheet export required.
Лимит на месяц по каждой категории и прогресс по нему сразу виден — интерфейс уведомит, если какая-то категория вышла за рамки. A monthly limit per category with progress visible at a glance — the UI surfaces a notification the moment one goes over.
Категории, теги, счета, валюты, язык интерфейса и экспорт/импорт всех данных одним JSON-файлом — в одном месте, без лишних вкладок. Categories, tags, accounts, currencies, interface language, and exporting or importing every bit of data as one JSON file — all in one place.
REST API на Go и фронтенд на Vue 3 в одном бинарнике. A Go REST API and a Vue 3 frontend in the same binary.
Vue 3 без зависимостей подключается прямо с CDN и встраивается в бинарник через go:embed.A dependency-free Vue 3 app loaded straight from a CDN, embedded into the binary via go:embed.
MySQL/MariaDB, PostgreSQL или SQLite — переключаются одной переменной окружения, миграции применяются автоматически.MySQL/MariaDB, PostgreSQL or SQLite — selected by one environment variable, migrations run automatically.
Бизнес-логика организована как use case на каждое действие пользователя и не зависит от конкретной БД или net/http.Business logic is organized as one use case per user action, independent of any concrete database driver or net/http.
Каждая настройка проверяется при старте — некорректное значение останавливает процесс с понятной ошибкой.Every setting is validated at startup — a malformed value stops the process with a clear message.
Выберите способ запуска — go run для разработки или собранный Docker-образ для сервера.
Pick how you want to run it — go run while you're developing, or a built Docker image for a server.
MySQL/MariaDB, PostgreSQL или SQLite — выбор одной переменной окружения DB_DRIVER.
MySQL/MariaDB, PostgreSQL or SQLite — picked with a single DB_DRIVER environment variable.
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
git clone https://github.com/dmitriygnatenko/raccounting.git cd raccounting # 1. собрать образ1. build the image make build docker build -f build/docker/Dockerfile -t raccounting . # 2. запустить (том — для базы SQLite)2. run it (volume persists the SQLite database) docker run -d --name raccounting -p 8080:8080 \ -e DB_DRIVER=sqlite \ -e DB_SQLITE_PATH=/app/data/raccounting.db \ -v $(pwd)/data:/app/data \ raccounting # → http://localhost:8080
Raccounting распространяется по лицензии MIT. Разворачивайте где угодно, меняйте под себя. Raccounting is MIT licensed. Deploy it anywhere, shape it however you need.