К основному контенту

Личные финансы в формате txt

Предыстория

Я давно подсел на Obsidian, и мне очень понравилась идея хранения данных в человеко-понятных форматах вроде TXT или Markdown. В таком виде вы не привязаны к конкретному инструменту и вам не надо делать экспорт данных для резервных копий. Данные сами по себе остаются готовые к чтению или модифицированию.
Чего мне не хватало, так это хорошего формата для хранения финансовых данных. Изначально, на заре появления Android, я пользовался мобильными приложениями для ведения расходов. Дважды напоролся на окончание поддержки приложения. В третий раз рисковать не стал, и перешёл на Google Sheets. За счёт функционала связки файлов (данные из одного файла можно использовать в другом. В моём случае расходы хранятся в разных файлах по месяцам, но в годовом файле есть сводка с данными из месячных файлов) я сильно влип в инфраструктуру гугла и даже не мог перейти на обычный Excel (хотя там тоже что-то подобное есть).
Более того, любые используемые мной решения работали с бинарными форматами, которые не прочитать без программы (да, excel - это xml, но его тоже нормальным не назовёшь)
И тут, открыв очередную трэш-статью, начав читать гневные комментарии, наткнулся на человека, который ведёт расходы в TXT формате. Причём технический человек, со знанием программирования. Это показалось абсолютно тупейшим решением, но... в комментарии ниже, другой человек отписал, что тоже использует TXT для ведения личных финансов. И это уже было подозрительно.
Начал изучать вопрос и наткнулся на ledger-cli.

Формат

Ledger-cli - это оказалась командная утилита для ведения личных финансов генерации сводок по личным финансам. Суть даже не в утилите, а в формате исходных данных. Он прост, читабелен и понятен.
Пример:

2024-02-14 McDonalds ; чизбургер
  Расходы:Еда:Обеды         1.5 EUR
  Ресурсы:Банки:Revolute

2024-02-15 Burger King ; гамбургер
  Расходы:Еда:Кафе          2.5 EUR
  Ресурсы:Наличка

Собственно, первым делом пишем число, дальше получателя денег (хотя можно и не писать), после ";" можно на любой строчке писать любой комментарий. В данном случае это пояснение, что именно было куплено.
На следующей строчке с отступом пишется "категория" с подкатегориями через двоеточие (на самом деле это аналог бух.счетов, а не категории), затем минимум 2 пробела и сумма.
На третей строчке "категория" из которой брались деньги.
Следующая транзакция указывается через пустую строку.

Это база. Погружаясь в детали, там можно найти практически всё, например, валюты с курсами на каждый день, возможности включать один файл в другой или даже вести полноценный учёт инвестирования в акции и крипту.


Ledger-cli

Ledger-cli, в свою очередь, умеет читать этот файл и выдавать полезную информацию, например:

$ ledger -f trans.txt balance
             4.0 EUR  Расходы:Еда
             2.5 EUR    Кафе
             1.5 EUR    Обеды
            -4.0 EUR  Ресурсы
            -1.5 EUR    Банки:Revolute
            -2.5 EUR    Наличка
--------------------
                   0

Это баланс по всем категориям и подкатегориям. Можно легко увидеть сколько всего было потрачено на еду, при этом видеть, сколько отдельно потрачено на категорию Кафе и сколько на категорию Обедов. Видно чем мы расплачивались - банковской карточкой или наличкой. То есть по сути это сводка по всем данным, которые мы хотим видеть в конце месяца.

А вот так можно получить баланс за конкретный период.

ledger -f trans.txt balance --limit "date>=[2024/02/01] and date<[2024/03/01]"

А вот так тоже самое, но в процентах:

ledger -f trans.txt balance --limit "date>=[2024/02/01] and date<[2024/03/01]" --percent

А ещё период можно задавать словами и вытаскивать баланс по конкретной категории

ledger -f trans.txt balance Еда -p "since 2024/01/01"
ledger -f trans.txt balance Еда -p "last month"

В общем, можно получить практически что угодно, да ещё и подкорректировать формат вывода.

Подробнее можно почитать в документации или вот тут. А вот короткая шпаргалка по формату.
А на русском есть эта статья и этот пост.

Но вот записывать транзакции ledger-cli не умеет, он их только читает и обрабатывает.

Альтернативы

Ну и самое прекрасное, вы не привязаны к ledger-cli. Вы можете читать файлы сами. А можете использовать hledger. А можете beancount. А можете obsidian-плагин - leadger-obsidian. Все эти клиенты работают по разному и написаны на разных языках, но их объединяет общий формат исходных данных. Конечно же есть нюансы, и какие-то фишки формата поддерживают не все утилиты. Из полезных ссылок ещё есть англоязычный сайт по ведению бухгалтерии в текстовых файлах, на котором можно найти более полный список утилит, и в целом углубиться в идеологию.

Плагин obsidian-ledger

Это трэш. Понятно, что плагин был написан с нуля, на typescript, но он оказался очень нежным к формату файла. Хотите использовать валюту EUR? А не получится, используйте €. Хотите использовать букву "ё"? Получите ошибку парсера. Используете запятую вместо точки? Все ваши транзакции помножатся на 100. Вишенкой на торте является надпись в README репозитория плагина, что пока он бесплатный, но в будущем может стать платным.
Но, главное, что если всё же подогнать свои файлы под нужный формат, они всё ещё останутся валидными для остальных, более стабильных утилит.

В остальном, плагин рисует график ваших ресурсов, позволяет гулять по периодам, смотреть транзакции в различных, выделенных вами категориях, сортировать.
Ещё есть удобный gui-редактор, и конечно же команда для ввода новой транзакции. По сути не хватает только сводок по балансу, и судя по репозиторию, появятся они не скоро.


Заключение

Забавно то, что всё это выросло из простейшего комментария, к косвенной статье, который на первый взгляд показался безумным и глупым, но при детальном изучении, оказалось, что глупым был я. Потому, если у вас есть умные мысли на тему ведения личных финансов, рекомендую обязательно отписать их в комментариях. Кто знает, к кого и к какой мысли это может привести.

Комментарии

Популярные сообщения из этого блога

Как безопасно авторизироваться в веб-сервисе через скомпрометированное устройство?

  Поискав в интернете, побеседовав с ИИ, можно выделить bullet-proof технологию многофакторной авторизации. "Добавь TOTP и спи спокойно", говорят они. Но что, если у вас только одно устройство, и оно скомпрометировано? Например, вы едете в путешествие и берёте с собой только телефон. Можете ли вы доверять вашему телефону? Можете ли вы с него ввести пароль и с него же сгенерировать TOTP? Мне показалось, что собственному телефону я верить не могу (особенно после того, как удалив приложение одной нехорошей соцсети, через пару недель я обнаружил, что приложение снова установлено). Я задался вопросом безопасной авторизации на скомпрометированном устройстве. В голову сразу пришла идея шифрования в уме: авторизатор выдаёт вам контрольное слово, вы в уме его шифруете алгоритмом, который знаете только вы и авторизатор, и в качестве пароля вписываете результат шифрования (или хэширования). Но можно ли шифровать в уме? Простые алгоритмы шифрования Шифр Цезаря . Ключ - это число. Суть - ...

Сплит клавиатура - Lily58

💡  Идея   Моя предыдущая механическая клавиатура была запланирована на 5 лет и они прошли. Отсюда вырос интерес. Менять просто так на аналогичную не хотелось, поэтому в глаза бросилась экзотика - сплит клавиатуры. В готовом виде в продаже ничего интересного не попалось и идея угасла, но попала в список желаемых подарков. Деду морозу тема зашла и на новый год я получил основную часть деталей от Lily58. Хотелось минималистичный девайс, но чтобы кнопок хватало для кириллицы и цифр. Так было отброшено много кандидатов, а дальше выбор был практически наугад.  🏭  Сборка Сборка оказалась очень увлекательной. Какой-то опыт пайки у меня был, но лет десять назад. Полностью спаять одну половинку заняло 2 сессии по часу. Удивило меня то, что перепрошивка заняла больше времени и усилий. Если про механическую сборку есть много мануалов, то про перепрошивку есть только отдельные универсальные на все клавиатуры. После заливки прошивки кнопки заработали. Когда была готова вторая ...

Распределённые облачные системы хранения Filecoin и Storj

Когда-то файлы хранили на дискетах, потом на дисках, потом на флэшках. Закончилось всё облаками. Тогда встал ряд различных вопросов по надёжности и приватности. С одной стороны можно просто доверить файлы гуглу или яндексу, но тогда о приватности можно забыть. C другой стороны можно завести собственное облачное хранилище, будь то дорогое железное решение от Synology, или оперсорсное на арендованной vps на nextcloud, но тут требуется вовлечение, что бы облако оставалось в рабочем состоянии (следить за апдейтами, своевременно обновлять оборудование, поддерживать резервное железо). Вместе с развитием блокчейна и развитием децентрализованных технологий web 3.0, появились и облачные хранилища, обещающие приватность, доступность и низкую цену. Предлагаю к рассмотрению 2 проекта, которые появились более 10 лет назад, и до сих пор существуют - Filecoin и Storj. Filecoin К сожалению, децентрализованные системы облачного хранилища влезли в блокчейн. Самая популярная система - filecoin . Если ...