Kiryl Harbacheuski383 downloadsTrack month income and expenses in a markdown table: balance, spending charts by category and a summary dashboard.
Плагин для управления личными финансами прямо в Obsidian. Данные хранятся в обычной markdown-таблице, а плагин рендерит ниже неё отдельные секции-карточки: сколько потрачено за месяц, средний расход в день, сколько отложено в сбережения и bar-график трат по категориям.
totalSavings (например, 0.40 ETH, 1500 USD), а мелкой строкой — сколько отложено за месяц. Если totalSavings не задан, крупно показывается нетто за месяц.Еда.Продукты) объединяются в одну строку и делятся на цветные сегменты.11.11.2026.md) и готовой таблицей.Плагин добавляет вкладку настроек (Настройки → Month Finance):
Раздел Секции дашборда — чекбоксы, которыми можно полностью убрать блоки из заметки:
budget), а не в настройках — они относятся к конкретному месяцу.Таблица должна находиться в заметке с frontmatter finance: true. Колонки распознаются по заголовкам (рус./англ.):
| Колонка | Заголовки (пример) | Описание |
|---|---|---|
| День | День, Day |
День месяца (1–31). Если пусто — берётся ближайший прошедший день |
| Тип | Тип, Type |
Доход / Расход (приход/уход) |
| Категория | Категория, Category |
Например: Продукты, Сбережения |
| Название | Название, Name |
Что за операция |
| Сумма | Сумма, Amount |
Число; знак «−» = расход, «+» = доход |
---
finance: true
currency: "₽"
---
| День | Тип | Категория | Название | Сумма |
| :--: | :----: | :--------- | :------------------- | ----: |
| 01 | Доход | Зарплата | Зарплата за месяц | 50000 |
| 03 | Расход | Продукты | Продукты за неделю | -1200 |
| 08 | Расход | Сбережения | Перевод в сбережения | -2000 |
Порядок колонок может быть любым, «Сумма» обязательна. Если тип не указан, он определяется по знаку суммы. Валюта задаётся в frontmatter (currency); если она не задана, используется валюта из настроек плагина.
Если в строке не заполнена колонка «День», плагин подставляет ближайший прошедший день — последний заполненный выше в таблице. Поэтому серию трат за одно число можно не нумеровать каждую:
| День | Тип | Категория | Название | Сумма |
| :--: | :----: | :-------- | :------------------- | ----: |
| 03 | Расход | Продукты | Продукты за неделю | -1200 |
| | Расход | Кафе | Обед | -15 |
| | Расход | Транспорт | Метро | -2 |
Категорию можно задавать иерархически через точку: Еда.Продукты, Еда.Рестораны, Еда.Продукты.Молочные. На bar-графике все подкатегории одного родителя (Еда) показываются одной строкой, разделённой на сегменты в оттенках цвета родителя. Наведите курсор на сегмент — появится подсказка с названием подкатегории и суммой трат по ней; наведите на название строки — увидите разбивку по всем подкатегориям.
| День | Тип | Категория | Название | Сумма |
| :--: | :----: | :--------------- | :----------------- | ----: |
| 02 | Расход | Еда.Продукты | Продукты за неделю | -1200 |
| 05 | Расход | Еда.Рестораны | Ужин с друзьями | -800 |
Категории можно задать лимит на месяц во frontmatter заметки — в поле budget. Лимит указывается для категории верхнего уровня (без подкатегорий):
---
finance: true
currency: "₽"
budget:
Еда: 5000
Транспорт: 1000
Развлечения: 2000
---
Тогда в дашборде появляется отдельная столбчатая диаграмма «Бюджет по категориям». Все столбики одной высоты (100% = лимит), а заливка показывает, какая доля лимита уже израсходована:
132% (−600 ₽)), красным;Бюджет сравнивается с тратами без накоплений. Если для категории лимит задан, а трат ещё не было, она всё равно показывается с 0%.
Иерархические категории. Бюджет понимает точечную нотацию так же, как и основной график:
Еда: 5000) учитывает все его подкатегории — Еда.Продукты, Еда.Рестораны и т. д.;Еда.Продукты: 2000) считает только её траты;Еда и отдельная по Еда.Продукты;Накопления. Категориям-накоплениям тоже можно задать сумму в budget — это будет цель «отложить за месяц»:
budget:
Накопления: 5000
Считается по фактическим переводам в накопления. Для таких столбиков логика инвертирована: при достижении цели (100% и больше) процент становится зелёным, а в подсказке пишется «Цель выполнена» вместо «Перерасход».
Диаграмму можно выключить в настройках плагина (Секции дашборда → «Показывать бюджет»). Блок сворачивается кликом по заголовку — как и таблица «ТОП расходов»: справа в заголовке показывается общий процент использования бюджета (красным при перерасходе).
Ниже графиков выводится таблица «ТОП расходов» — самые крупные траты месяца:
×N — число операций (наведите курсор, чтобы увидеть точное значение);Число строк и показ таблицы настраиваются в разделе Секции дашборда в настройках плагина. Если в таблице нет колонки «Название», вместо описания используется категория.
Если колонка «День» не заполнена, средний расход считается по числу дней из настроек (по умолчанию 30).
Расходы в категориях-сбережениях не попадают в «Потрачено за месяц» и в bar-график — они суммируются в «Накопления за месяц» и показываются мелкой строкой в карточке накоплений. По умолчанию распознаются категории, содержащие: сбережен, накоплен, savings, сэйвинг, вклад, инвест, копилка. Можно задать свою категорию в frontmatter:
---
finance: true
currency: "₽"
savingsCategory: "Сбережения"
---
Снятие из накоплений. Если в категории-накоплении указан тип Доход, это трактуется как «взяли из накоплений», и сумма вычитается из отложенного за месяц:
| День | Тип | Категория | Название | Сумма |
|---|---|---|---|---|
| 08 | Расход | Накопления | Отложил в копилку | -300 |
| 20 | Доход | Накопления | Снял из копилки | 700 |
Итог «Накопления в этом месяце» = 300 − 700 = −400, и подсказка в карточке накоплений покажет именно отрицательное значение.
В диаграмме бюджета отрицательного значения быть не может (нельзя «вложить минус»): если нетто по накоплениям ушло в минус, столбик показывает 0 и 0%, а в подсказке — весь лимит в «Осталось».
Общие накопления на текущий момент задаются в frontmatter totalSavings — можно одной суммой в базовой валюте, а можно списком в разных валютах (каждая запись — сумма ВАЛЮТА):
---
finance: true
currency: "₽"
totalSavings:
- 0.40 ETH
- 1500 USD
- 2500 BYN
---
Эти значения показываются крупно в карточке «Всего накоплено», а «отложено в сбережения за месяц» — мелким шрифтом под ними. Если totalSavings не задан, карточка просто показывает сумму, отложенную за месяц.
npm install
npm run dev # watch-сборка в out/main.js
npm run build # production-сборка с проверкой типов
MIT