Привет, Хабр!
Для многих людей в IT идеальный финансовый учет — это монументальная Google-таблица или навороченная база в Notion. И я вас прекрасно понимаю: когда ты весь день сидишь за монитором, вбить пару цифр в ячейку — дело двух секунд.Но моя реальность 7 лет назад выглядела совершенно иначе. Я был предпринимателем, и мой рабочий день — это постоянное движение. Я за рулем, на складе, на встрече с партнерами, где-то в цеху, и только поздно вечером — дома или в офисе. Мобильность была стопроцентной, а под рукой всегда был только телефон.В таком ритме классические инструменты учета просто рассыпаются. Типичные ситуации из моей жизни:
Сценарий 1: Еду за рулем, звонит приятель или партнер: «Слушай, выручи, переведи на карту N-ную сумму до четверга?». Быстро перевел деньги через банковское приложение. И вот тут этот долг нужно моментально записать, иначе всё вылетит из головы.
Сценарий 2: Пересекаюсь с человеком на бегу, он передает наличку: «Вот, возвращаю долг, спасибо!». Сунул деньги в карман, пожали руки, разбежались.
Если в этот самый момент я не запишу операцию, то с вероятностью 99% к вечеру, добравшись до компьютера с таблицами, я про нее просто забуду. Мне нужен был инструмент, который позволял бы зафиксировать долг или его погашение буквально в один клик, стоя на светофоре или выходя из склада. На тот момент в App Store были трекеры, но у них обнаружилась критическая проблема — отсутствие нормальной синхронизации. Потерял телефон или разбил его = потерял всю базу долгов и денег. Для меня это было неприемлемо. Так, из банальной необходимости не терять свои деньги, я решил написать собственное простое приложение [Where's Money] с надежной опорой на iCloud.
База: скорость и iCloud
Я не стал изобретать велосипед в плане бэкенда. Фишка с iCloud — это, по сути, эппловская магия, а не моя заслуга, но она дала главное: спокойствие. Данные хранятся надежно. Если телефон потерян, достаточно зайти с нового устройства под своим Apple ID, скачать приложение, и всё восстановится. Можно даже удалить приложение, если боитесь, что кто-то в него заглянет, а потом скачать заново — база будет цела.
Чтобы полноценно пользоваться продакшен-базой iCloud и не сидеть в песочнице разработчика, приложение нужно было сразу релизить. Поэтому я залил первую версию в App Store, скачал на свой телефон и начал вести учет. Сначала параллельно в записной книжке, а потом её выбросил.
Интерфейс сделал максимально простым, чтобы минимизировать количество кликов.
Нажимаешь плюсик, переключаешь пикер «дать/взять», цифры автоматически меняют цвет на зеленый или красный. Если нужно перекинуть деньги — например, у кого-то взять и куда-то дать — можно перемещать суммы прямо между записями. В комментариях автоматически указывается, откуда пришли деньги. Быстро, просто и работает на бегу.
Как пользователи рулили бэклогом
Дизайн я сделал простой, без изысков, но оказалось, что такой формат зашел многим. Вскоре пошел фидбек от первых пользователей, и люди стали просить фичи, о которых я даже не думал:
«Я случайно удалил долг, как вернуть?» — так появилась «Корзина». Удаленные записи теперь хранятся там 30 дней и удаляются автоматически, прямо как в фотопленке iOS.
«У меня 50 должников, я в них путаюсь» — так по просьбам юзеров я прикрутил систему групп, чтобы можно было раскладывать записи по папкам (например, «Арендаторы», «Семья», «Работа»).
Периодические долги. Очень много запросов было на автоматизацию рутины вроде ежемесячной арендной платы. Сделал двусторонний учет — удобно и арендодателю, и арендатору.
Акции, курсы валют
Как и многие сейчас, я занимаюсь инвестициями. Записывать в приложение суммы, вложенные в акции, было бы не очень корректно — цены постоянно прыгали то вверх, то вниз. Скачивать отдельный инвестиционный комбайн не хотелось, я привык видеть все свои деньги в одном месте.
Пришлось прикручивать API Yahoo Finance. Теперь приложение умеет подтягивать актуальные цены на акции, считать вложенные деньги и выплаченные дивиденды. (Кстати, не уверен, как стабильно Yahoo API сейчас работает в РФ без VPN, но у меня пока не отвалилось). Тут же вылезли технические нюансы:
Мультивалютность и кросс-курсы. Баланс в приложении считается в одной выбранной базовой валюте, но записи могут быть в любых деньгах. Появилась проблема: как найти прямой курс, например, эмиратского дирхама к индийской рупии? Напрямую — никак. Пришлось писать логику пересчета всех экзотических пар через доллар США.
Налоги и алгоритм FIFO. Для акций нужно было формировать отчеты по налогам с продаж и дивидендов по методу FIFO (First In, First Out). Скажу честно: за 7 лет я написал весь код этого приложения своими руками, но выводить эту конкретную занудную математическую формулу мне было откровенно лень. Поэтому рутину я делегировал нейросети. Она выдала код, я прогнал расчеты на обычном калькуляторе, убедился, что алгоритм считает правильно, и просто вставил в прод.
Итоги и плюшки для Хабра
За 7 лет я потихоньку отлавливал баги, дорабатывал фишки и привел приложение к тому виду, когда оно полностью закрывает все мои потребности. Ритм моей жизни сейчас изменился, но приложением я продолжаю активно пользоваться каждый день — просто потому, что привык к удобству.
Я прекрасно понимаю, что приложение не идеальное и конкурентов на рынке масса. Моя цель — не сказать «я сделал лучше всех», а поделиться инструментом, который вырос из реальной потребности и отполирован временем.
Теперь о важном нюансе.
Приложение монетизируется. В базовой бесплатной версии доступно всего 3 записи — дальше попросит денег.
Но так как мы на Хабре, я хочу сделать подгон для сообщества. Любому, кто придет из этой статьи, я выдам промокод на полную версию.Для этого:
Скачайте Where's Money в App Store.
Нажмите кнопку «Обратная связь» внутри приложения.
Напишите кодовую фразу: «Я с Хабра, дай промокод».
Я пришлю его вам в ответном письме.
Буду рад, если вы покрутите приложение, попробуете сломать мою логику учета или предложите, чего там еще не хватает. Конструктивная критика — лучший подарок для разработчика.
Спасибо за внимание!

