Трекер бюджета с открытым исходным кодом для разработчиков — полный контроль над финансовыми данными
Если вы разработчик, то ваши финансовые данные, скорее всего, хранятся на чужом сервере. Любое приложение для учета бюджета и расходов — Mint, YNAB, Copilot, Lunch Money — держит ваши транзакции, остатки на счетах и историю трат в своем облаке. Вам остается только надеяться, что сервис не взломают, что ваши данные не продадут и что сам продукт однажды не закроют, как это случилось с Mint в 2024 году.
Если вам привычны Docker и Postgres, есть вариант лучше: развернуть трекер бюджета с открытым исходным кодом на своей инфраструктуре и хранить все данные у себя.
Трекер расходов с открытым исходным кодом, который вы размещаете сами
Expense Budget Tracker — это полностью открытая система для учета расходов и бюджета на базе Postgres. Вы клонируете репозиторий, запускаете make up и получаете рабочее приложение на localhost:3000 с настоящей базой данных, которой управляете сами.
Никакой регистрации, никакой отправки данных с вашей машины и никаких подписок. Лицензия MIT: форкайте, дорабатывайте и используйте как угодно.

Стек здесь простой и понятный: Next.js для веб-интерфейса, Postgres 18 для хранения данных и служба на TypeScript, которая ежедневно загружает курсы валют. Все работает в Docker-контейнерах через один docker-compose.yml.
Развертывание через Docker или AWS
В репозитории сразу есть два варианта развертывания:
Локальный Docker Compose — четыре команды, и приложение уже запущено:
git clone https://github.com/kirill-markin/expense-budget-tracker.git
cd expense-budget-tracker
open -a Docker # start Docker if not running
make up # Postgres + migrations + web + worker
Откройте http://localhost:3000 и начинайте вносить транзакции. Данные Postgres сохраняются в Docker-томе. На этом настройка заканчивается.
AWS CDK — полноценное рабочее развертывание одним скриптом:
bash scripts/bootstrap.sh --region eu-central-1
Этот сценарий поднимает ECS Fargate, RDS Postgres, ALB с HTTPS, Cognito для аутентификации, WAF, мониторинг в CloudWatch, автоматические резервные копии и CI/CD через GitHub Actions. Оценочная стоимость составляет около $50 в месяц, а в результате вы получаете инфраструктуру корпоративного уровня, которой полностью владеете. Руководство по развертыванию проводит через все шаги: от создания учетной записи AWS до настройки DNS в Cloudflare.
Поскольку здесь нужны только Postgres и Docker, систему можно разместить и где угодно еще. DigitalOcean, Hetzner, Raspberry Pi дома, Kubernetes-кластер компании — если там работают Docker и Postgres, приложение тоже запустится.
SQL API для программного доступа
Большинство приложений для бюджета дают только веб-интерфейс. Здесь же есть SQL API для запросов поверх HTTP: маршрут POST /v1/sql, который принимает SQL-запросы и возвращает JSON.
curl -X POST https://api.your-domain.com/v1/sql \
-H "Authorization: ApiKey ebta_a7Bk9mNp..." \
-H "X-Workspace-Id: workspace-id" \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT category, SUM(amount) AS total FROM ledger_entries WHERE kind = '\''spend'\'' AND ts >= DATE_TRUNC('\''month'\'', CURRENT_DATE) GROUP BY category ORDER BY total"}'
Вы создаете API-ключ в Settings, выбираете нужный идентификатор рабочей области, и после этого любой HTTP-клиент может работать с вашими данными. Это простой REST API: никакого GraphQL, никаких ORM-абстракций и никаких SDK, которые нужно отдельно изучать. Просто SQL на входе и JSON на выходе.
Модель безопасности здесь строгая: API-ключи хранятся в виде SHA-256-хэшей, в запросах разрешены только SELECT/INSERT/UPDATE/DELETE, действует ограничение в 30 секунд на выполнение, не больше 100 строк в одном ответе и лимит 10 запросов в секунду на каждый ключ. Все запросы проходят через Postgres Row Level Security — тот же механизм изоляции, что использует веб-приложение, — поэтому API-ключ может обращаться только к данным своей рабочей области.
Подходит для ИИ-агентов и языковых моделей
Именно SQL API делает интеграцию с ИИ в личных финансах действительно полезной: агенту нужен прямой доступ к базе, чтобы читать и записывать финансовые данные.
Посмотрите, как обычно устроена работа с ИИ-помощниками сейчас. Вы загружаете в Claude или ChatGPT скриншот банковской выписки, просите разнести траты по категориям и получаете аккуратную текстовую сводку. А затем вручную переносите эти цифры в тот инструмент, где на самом деле ведете учет. Это сценарий 2023 года.
Когда у вас есть SQL API, ИИ-агент не просто анализирует данные, а записывает их прямо в базу. Процесс выглядит так:
- Вы загружаете банковскую выписку в CSV или PDF либо просто скриншот в ИИ-агента.
- Агент читает каждую транзакцию, сопоставляет категории с уже существующими и делает
INSERTвledger_entries. - Агент сверяет остаток по счету с цифрой из банка.
- Вы тратите 5 минут на проверку вместо часа ручного ввода.
Схема базы данных для этого и задумана. Всего семь плоских таблиц, без вложенного JSON и без сложных соединений для базовых операций. Таблица ledger_entries намеренно сделана простой: одна строка на каждое движение по счету и понятные названия столбцов. Поэтому языковая модель может с первой попытки составить корректный INSERT, не путаясь в структуре.
В Expense Budget Tracker есть и встроенный чат с ИИ в веб-интерфейсе. Вы подключаете API-ключ OpenAI или Anthropic и получаете помощника с инструментом query_database, который умеет выполнять SELECT, INSERT, UPDATE и DELETE прямо в вашей Postgres. Достаточно загрузить скриншот банковского приложения: ИИ разберет все транзакции, попросит подтверждение и затем внесет их в базу. Он следует строгому протоколу: сначала находит уже существующие категории, потом проверяет дубликаты, сверяет остатки и записывает данные только после вашего явного подтверждения.
Чат с ИИ поддерживает модели Claude от Anthropic и GPT от OpenAI. Обе используют один и тот же инструмент доступа к базе с одинаковыми правилами безопасности: разрешенные ключевые слова, таймауты запросов и обязательное применение RLS. Тот же SQL API можно использовать и с любым внешним агентом: Claude Code, OpenAI Codex, собственными скриптами или вебхуками Zapier. Дайте агенту ваш API-ключ ebt_, укажите адрес API, и он получит полный доступ на чтение и запись в пределах вашей рабочей области.
Возможности трекера бюджета
Это не минималистичный журнал расходов. Здесь уже есть все, чего обычно ждут от коммерческого продукта:
- Бюджетная таблица — строки соответствуют категориям, столбцы месяцам. В прошлых месяцах показывается факт, в будущих — прогноз. Можно планировать на 12 месяцев вперед и сразу видеть ожидаемые остатки.
- Поддержка нескольких валют — каждая транзакция хранится в своей исходной валюте. Курсы от ECB, CBR и NBS загружаются ежедневно. Пересчет в валюту отчетности выполняется во время запроса через соединение таблиц в SQL, без заранее рассчитанных столбцов и без потери точности.
- Остатки по счетам — можно учитывать расчетные счета, сбережения, кредитные карты, наличные и инвестиции. Для каждого счета считается текущий остаток на основе журнала операций.
- Переводы — движение денег между своими счетами, в том числе между разными валютами. Это две записи в
ledger_entriesс однимevent_id: одна отрицательная, другая положительная. - Категоризация транзакций — вы сами определяете категории. Никакой навязанной классификации. ИИ подхватывает уже существующие категории из ваших данных.
- Многоязычный интерфейс — English, Spanish, Chinese, Arabic, Hebrew, Farsi, Ukrainian, Russian. Полноценная поддержка RTL.
- Изоляция рабочих областей — Postgres Row Level Security гарантирует, что данные пользователей полностью отделены друг от друга, даже если все работают с одним сервером базы данных.
- Демо-режим — в интерфейсе есть переключатель на демонстрационные данные в памяти. Чтобы изучить продукт, база данных не нужна.
Схема Postgres, понятная разработчику
Всю схему можно удержать в голове:
ledger_entries— одна строка на каждое движение по счетуbudget_lines— журнал изменений бюджетного плана с добавлением новых записей без перезаписи старыхbudget_comments— заметки к ячейкам бюджетаexchange_rates— ежедневные курсы валютworkspace_settings— валюта отчетности для рабочей областиaccount_metadata— классификация ликвидностиaccounts— представление, построенное на основеledger_entries
Никакой ORM. Никакого отдельного фреймворка миграций. Только нумерованные SQL-файлы в db/migrations/, которые применяются сценарием оболочки. Можно открыть каждую миграцию, понять каждую таблицу и писать запросы прямо к схеме.
Изменения в схеме проходят через миграции. Роль базы данных app, которую использует веб-приложение, имеет ограниченные права: она не может создавать таблицы или менять схему. Роль tracker, которую использует только скрипт миграций, отвечает за DDL. Это именно то разделение обязанностей, которого ждешь от рабочей системы.
Почему разработчики хранят финансовые данные у себя
У вас уже есть все нужные навыки. Вы понимаете Docker, Postgres и AWS или любой другой облачный стек. Вопрос только в том, оправдывают ли преимущества эти усилия.
Полный контроль над данными — ваши финансовые данные не покидают вашу инфраструктуру. На вас не влияют утечки у сторонних сервисов. Не нужно читать бесконечные политики конфиденциальности. Никто не продает аналитику по вашим тратам рекламодателям.
Настройка под себя — можно добавлять столбцы в схему, строить собственные отчеты на чистом SQL и подключать систему к уже используемым инструментам. Нужен Telegram-бот с ежедневной сводкой расходов? Напишите скрипт, который обращается к SQL API. Хотите строить графики в Grafana? Подключите ее прямо к Postgres. Код ваш, и менять его можно как угодно.
Никакой зависимости от поставщика — даже если вы перестанете пользоваться веб-интерфейсом, данные останутся в стандартной базе Postgres. Их можно выгрузить через pg_dump, открыть любым SQL-клиентом или перенести в другую систему.
Практическая польза для обучения — эта кодовая база показывает реальное сочетание Next.js, Postgres, Docker, AWS CDK, Row Level Security, аутентификации по API-ключам и интеграции ИИ-инструментов. Если вы делаете свой сервис по подписке, здесь есть приемы, которые захочется позаимствовать.
Как начать работу с трекером бюджета с открытым исходным кодом
git clone https://github.com/kirill-markin/expense-budget-tracker.git
cd expense-budget-tracker
make up
Откройте http://localhost:3000. Добавьте первую транзакцию. Задайте бюджет на текущий месяц. Если хотите сначала просто посмотреть интерфейс без базы данных, нажмите кнопку Demo в шапке и переключитесь на демонстрационные данные в памяти.
Когда будете готовы к рабочему развертыванию, воспользуйтесь руководством по развертыванию в AWS или адаптируйте конфигурацию Docker Compose под свою инфраструктуру.
Репозиторий находится по адресу github.com/kirill-markin/expense-budget-tracker. Можете поставить звезду, сделать fork или просто изучить код. Лицензия MIT позволяет использовать проект как угодно.
Если вы и так поддерживаете серверы и базы данных на работе, то развернуть тот же стек для личных финансов будет небольшим дополнительным шагом. Взамен вы получите полный контроль над своими данными.