Самостійно розгорнутий бюджетний трекер з відкритим кодом для розробників — повний контроль над фінансовими даними
Якщо ви розробник, ваші фінансові дані, найімовірніше, зберігаються на чиємусь чужому сервері. Усі застосунки для ведення бюджету та обліку витрат, як-от Mint, YNAB, Copilot і Lunch Money, тримають ваші транзакції, баланси та звички витрачання у своїй хмарі. Вам залишається лише вірити, що їх не зламають, що вони не продадуть ваші дані й що сервіс просто не закриється (RIP Mint, 2024).
Якщо вам комфортно працювати з Docker і Postgres, є кращий варіант: розгорнути бюджетний трекер з відкритим кодом на власній інфраструктурі й зберігати все у себе.
Трекер витрат з відкритим кодом, який ви розгортаєте самі
Expense Budget Tracker — це повністю відкрита система для обліку витрат і планування бюджету на базі Postgres. Ви клонуєте репозиторій, запускаєте make up і отримуєте робочий застосунок на localhost:3000 із реальною базою даних, яку повністю контролюєте.
Без створення облікового запису, без передавання даних із вашого комп'ютера назовні, без абонплати. Ліцензія MIT: форкайте, змінюйте, використовуйте як завгодно.

Стек тут простий і зрозумілий: Next.js для вебінтерфейсу, Postgres 18 для зберігання даних і фоновий процес на TypeScript, який щодня завантажує курси валют. Усе запускається в Docker-контейнерах через один docker-compose.yml.
Самостійне розгортання через Docker або в AWS
У репозиторії відразу є два варіанти розгортання:
Local 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 volume. Це й усе налаштування.
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-маршрут для програмного доступу
Більшість застосунків для ведення бюджету дають вам лише вебінтерфейс. Тут є API для SQL-запитів поверх 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-маршрут: без GraphQL, без ORM-абстракцій, без окремого SDK, який ще треба вивчати. Просто SQL на вході, JSON на виході.
Модель безпеки тут сувора: API-ключі зберігаються як SHA-256-хеші, тобто у відкритому вигляді не записуються ніколи; запити обмежені SELECT/INSERT/UPDATE/DELETE, без DDL; є тайм-аут у 30 секунд, ліміт 100 рядків у відповіді та обмеження частоти до 10 запитів на секунду для кожного ключа. Усі запити проходять через Postgres Row Level Security, ту саму ізоляцію, якою користується вебзастосунок, тому API-ключ бачить лише дані в робочому просторі свого власника.
Створено для AI-агентів і LLM
Саме SQL API робить інтеграцію з AI практичною для особистих фінансів: агенту потрібен прямий доступ до бази даних, щоб читати й записувати фінансові дані.
Подумайте, як сьогодні працюють з AI-асистентами. Ви вставляєте скриншот банківської виписки в Claude або ChatGPT, просите розкласти витрати за категоріями й отримуєте акуратне текстове резюме. Потім вручну переносите ці числа у свій інструмент. Це сценарій ще з 2023 року.
Коли є SQL API, AI-агент не просто аналізує ваші дані, а записує їх у вашу базу даних. Процес стає таким:
- Ви передаєте банківську виписку у форматі CSV, PDF або скриншота AI-агенту
- Агент читає кожну транзакцію, зіставляє категорії з уже наявними й виконує
INSERTуledger_entries - Агент звіряє баланс рахунку з цифрою з банку
- Ви витрачаєте 5 хвилин на перевірку замість години на ручне введення
Схема бази для цього й спроєктована. Сім плоских таблиць, без вкладеного JSON, без складних об'єднань для базових операцій. Таблиця ledger_entries навмисно зроблена простою: один рядок на один рух по рахунку й зрозумілі назви стовпців. Велика мовна модель здатна написати коректний INSERT з першої спроби, бо тут майже немає де помилитися.
Expense Budget Tracker також має вбудований AI-чат у вебінтерфейсі. Підключаєте свій ключ OpenAI або Anthropic і отримуєте асистента з інструментом query_database, який може виконувати SELECT, INSERT, UPDATE і DELETE безпосередньо у вашому Postgres. Завантажуєте скриншот із банківського застосунку, AI розбирає всі транзакції, просить підтвердження й додає їх у базу. Він працює за суворим протоколом: спочатку знаходить ваші поточні категорії, перевіряє дублікати, звіряє баланси й записує дані лише після вашого явного схвалення.
AI-чат підтримує моделі Claude (Anthropic) і GPT (OpenAI). Обидві використовують той самий інструмент доступу до бази з однаковими правилами безпеки: білий список ключових слів, тайм-аути для запитів і примусове застосування RLS. Ви також можете використовувати SQL API з будь-яким зовнішнім агентом: Claude Code, OpenAI Codex, власними скриптами або вебхуками Zapier. Передаєте агенту свій ключ ebt_, вказуєте свій маршрут, і він отримує повний доступ на читання й запис у межах вашого робочого простору.
Можливості бюджетного трекера
Це не мінімалістичний журнал витрат. Тут є все, чого ви очікуєте від комерційного продукту:
- Таблиця бюджету — рядки це категорії, стовпці це місяці. Минулі місяці показують фактичні значення, майбутні — ваш прогноз. Можна планувати на 12 місяців уперед і відразу бачити очікувані баланси
- Підтримка кількох валют — кожна транзакція зберігається у своїй початковій валюті. Щоденні курси з ECB, CBR і NBS завантажуються автоматично. Перерахунок у валюту звітності відбувається під час запиту через SQL JOIN без попередньо обчислених стовпців і без втрати точності
- Баланси рахунків — поточні рахунки, заощадження, кредитні картки, готівка, інвестиції. Для кожного рахунку обчислюється поточний баланс на основі записів у журналі операцій
- Перекази — переміщення грошей між вашими рахунками, зокрема між різними валютами. Це два записи з однаковим
event_id: один від'ємний, другий додатний - Категоризація транзакцій — вільні категорії, які ви визначаєте самі. Жодної примусової таксономії. AI підлаштовується під уже наявні категорії
- Багатомовний інтерфейс — англійська, іспанська, китайська, арабська, іврит, фарсі, українська, російська. Повна підтримка RTL
- Ізоляція робочих просторів — Postgres Row Level Security гарантує повне розмежування даних між користувачами. Навіть якщо всі працюють на одному сервері бази даних, ніхто не побачить чужі дані
- Демонстраційний режим — у вебінтерфейсі можна одним перемикачем перейти на демодані в пам'яті. Щоб ознайомитися з інтерфейсом, база даних не потрібна
Схема Postgres, продумана для розробників
Усю схему легко втримати в голові:
ledger_entries— один рядок на один рух по рахунку, головна таблицяbudget_lines— план бюджету з режимом лише додавання нових записів; для кожної клітинки діє принцип "перемагає останній запис"budget_comments— нотатки до клітинок бюджетуexchange_rates— щоденні валютні курси, глобальні й без обмежень доступуworkspace_settings— валюта звітності для кожного робочого просторуaccount_metadata— класифікація ліквідностіaccounts— VIEW, побудований на основі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-ключів і AI-інтеграції з інструментами. Якщо ви будуєте власний SaaS-продукт, тут знайдеться чимало рішень, які варто запозичити.
Почніть із бюджетного трекера з відкритим кодом
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. Можете поставити зірку, зробити форк або просто почитати код. Ліцензія MIT, тож використовуйте як вважаєте за потрібне.
Якщо ви й так керуєте серверами та базами даних на роботі, запустити той самий стек для власних фінансів — невеликий крок. Натомість ви отримуєте повний контроль над даними.