Пет-проект длиною в 7 лет: как простой iOS-трекер долгов дорос до учета инвестиций и налогов по FIFO. FIFO.. FIFO. icloud.. FIFO. icloud. инвестиции.. FIFO. icloud. инвестиции. инди-разработка.. FIFO. icloud. инвестиции. инди-разработка. личные финансы.. FIFO. icloud. инвестиции. инди-разработка. личные финансы. мобильные приложения.. FIFO. icloud. инвестиции. инди-разработка. личные финансы. мобильные приложения. пет-проект.. FIFO. icloud. инвестиции. инди-разработка. личные финансы. мобильные приложения. пет-проект. учет финансов.

Для многих людей в IT идеальный финансовый учет — это монументальная Google-таблица или навороченная база в Notion. И я вас прекрасно понимаю: когда ты весь день сидишь за монитором, вбить пару цифр в ячейку — дело двух секунд.Но моя реальность 7 лет назад выглядела совершенно иначе. Я был предпринимателем, и мой рабочий день — это постоянное движение. Я за рулем, на складе, на встрече с партнерами, где-то в цеху, и только поздно вечером — дома или в офисе. Мобильность была стопроцентной, а под рукой всегда был только телефон.В таком ритме классические инструменты учета просто рассыпаются. Типичные ситуации из моей жизни:

  • Сценарий 1: Еду за рулем, звонит приятель или партнер: «Слушай, выручи, переведи на карту N-ную сумму до четверга?». Быстро перевел деньги через банковское приложение. И вот тут этот долг нужно моментально записать, иначе всё вылетит из головы.

  • Сценарий 2: Пересекаюсь с человеком на бегу, он передает наличку: «Вот, возвращаю долг, спасибо!». Сунул деньги в карман, пожали руки, разбежались.

Если в этот самый момент я не запишу операцию, то с вероятностью 99% к вечеру, добравшись до компьютера с таблицами, я про нее просто забуду. Мне нужен был инструмент, который позволял бы зафиксировать долг или его погашение буквально в один клик, стоя на светофоре или выходя из склада. На тот момент в App Store были трекеры, но у них обнаружилась критическая проблема — отсутствие нормальной синхронизации. Потерял телефон или разбил его = потерял всю базу долгов и денег. Для меня это было неприемлемо. Так, из банальной необходимости не терять свои деньги, я решил написать собственное простое приложение [Where’s Money] с надежной опорой на iCloud.

База: скорость и iCloud

Я не стал изобретать велосипед в плане бэкенда. Фишка с iCloud — это, по сути, эппловская магия, а не моя заслуга, но она дала главное: спокойствие. Данные хранятся надежно. Если телефон потерян, достаточно зайти с нового устройства под своим Apple ID, скачать приложение, и всё восстановится. Можно даже удалить приложение, если боитесь, что кто-то в него заглянет, а потом скачать заново — база будет цела.

Чтобы полноценно пользоваться продакшен-базой iCloud и не сидеть в песочнице разработчика, приложение нужно было сразу релизить. Поэтому я залил первую версию в App Store, скачал на свой телефон и начал вести учет. Сначала параллельно в записной книжке, а потом её выбросил.

Интерфейс сделал максимально простым, чтобы минимизировать количество кликов.

Нажимаешь плюсик, переключаешь пикер «дать/взять», цифры автоматически меняют цвет на зеленый или красный. Если нужно перекинуть деньги — например, у кого-то взять и куда-то дать — можно перемещать суммы прямо между записями. В комментариях автоматически указывается, откуда пришли деньги. Быстро, просто и работает на бегу.

Как пользователи рулили бэклогом

Дизайн я сделал простой, без изысков, но оказалось, что такой формат зашел многим. Вскоре пошел фидбек от первых пользователей, и люди стали просить фичи, о которых я даже не думал:

  1. «Я случайно удалил долг, как вернуть?» — так появилась «Корзина». Удаленные записи теперь хранятся там 30 дней и удаляются автоматически, прямо как в фотопленке iOS.

  2. «У меня 50 должников, я в них путаюсь» — так по просьбам юзеров я прикрутил систему групп, чтобы можно было раскладывать записи по папкам (например, «Арендаторы», «Семья», «Работа»).

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

Акции, курсы валют

Как и многие сейчас, я занимаюсь инвестициями. Записывать в приложение суммы, вложенные в акции, было бы не очень корректно — цены постоянно прыгали то вверх, то вниз. Скачивать отдельный инвестиционный комбайн не хотелось, я привык видеть все свои деньги в одном месте.

Пришлось прикручивать API Yahoo Finance. Теперь приложение умеет подтягивать актуальные цены на акции, считать вложенные деньги и выплаченные дивиденды. (Кстати, не уверен, как стабильно Yahoo API сейчас работает в РФ без VPN, но у меня пока не отвалилось). Тут же вылезли технические нюансы:

  • Мультивалютность и кросс-курсы. Баланс в приложении считается в одной выбранной базовой валюте, но записи могут быть в любых деньгах. Появилась проблема: как найти прямой курс, например, эмиратского дирхама к индийской рупии? Напрямую — никак. Пришлось писать логику пересчета всех экзотических пар через доллар США.

  • Налоги и алгоритм FIFO. Для акций нужно было формировать отчеты по налогам с продаж и дивидендов по методу FIFO (First In, First Out). Скажу честно: за 7 лет я написал весь код этого приложения своими руками, но выводить эту конкретную занудную математическую формулу мне было откровенно лень. Поэтому рутину я делегировал нейросети. Она выдала код, я прогнал расчеты на обычном калькуляторе, убедился, что алгоритм считает правильно, и просто вставил в прод.

Итоги и плюшки для Хабра

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

Я прекрасно понимаю, что приложение не идеальное и конкурентов на рынке масса. Моя цель — не сказать «я сделал лучше всех», а поделиться инструментом, который вырос из реальной потребности и отполирован временем.

Теперь о важном нюансе.

Приложение монетизируется. В базовой бесплатной версии доступно всего 3 записи — дальше попросит денег.

Но так как мы на Хабре, я хочу сделать подгон для сообщества. Любому, кто придет из этой статьи, я выдам промокод на полную версию.Для этого:

  1. Скачайте Where’s Money в App Store.

  2. Нажмите кнопку «Обратная связь» внутри приложения.

  3. Напишите кодовую фразу: «Я с Хабра, дай промокод».

    Я пришлю его вам в ответном письме.

    Предложение действительно три дня

Буду рад, если вы покрутите приложение, попробуете сломать мою логику учета или предложите, чего там еще не хватает. Конструктивная критика — лучший подарок для разработчика.

Спасибо за внимание!

Автор: Elis767

Источник