23 мая 2025 г.

Потрачено - удобное приложение для учета трат

Небольшая заметка о моем первом опыте разработки iOS приложения и почему я это сделал

Недавно в App Store вышло мое первое iOS приложение - «Потрачено». Оно помогает отслеживать личные траты. Приложение полностью бесплатное, без подписок и рекламы. Если кто-то захочет попробовать - ссылку прикладываю, буду рад обратной связи, отзывам, оценкам: Потрачено в App Store

App Store page

Мотивация

Приложение сделано с упором на скорость ввода новых записей. Существующие приложения в этом плане были довольно неудобны, особенно неудобен сценарий ввода всех трат за предыдущую неделю. Удобство ввода расходов для меня напрямую влияло на мотивацию использовать приложение: если вводить их неудобно - я забрасывал приложение.

В “Потрачено” несколько мелочей упрощают ввод новых данных:

  • Окно выбора категории выдвигается автоматически после подтверждения суммы траты. Такой способ гораздо удобнее стандартного селектора, когда после ввода суммы требуется кликнуть на “Выбрать категорию”, потом в вертикальном списке категорий искать нужную. После клика на нужную категорию - расход учтен.
  • На главном экране видно последнюю введенную трату. При вводе большого количества трат (например за всю неделю), можно легко ошибиться и ввести одну запись дважды или неправильно задать сумму. Окошко с последней введенной тратой позволяет быстро проверить последнюю запись и в случае необходимости отменить ее одним кликом
  • Приложение запоминает дату последней введенной записи в текущем сеансе использования приложения. Это упрощает ввод исторических трат: при вводе нескольких расходов, которые произошли в один день, не нужно думать о том чтобы каждый раз выставлять дату этого дня.

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

Делать свое - классно

Есть и другая причина создания этого приложения: делать инструменты под себя - классно. Это дает интересный опыт, позволяет прокачаться в разных областях и попробовать разные технологии.

Опыт разработки

Swift и Xcode

Для разработки я выбрал язык Swift и фреймворк SwiftUI, так как использование нативных технологий показалось мне самым прямым и простым заходом в разработку под экосистему Apple. Про эти технологии не могу сказать ничего плохого - ими удобно и приятно пользоваться. Хотя пришлось немного помучиться с Xcode (редактор кода от Apple), но после настройки привычных мне горячих клавиш, пользоваться им было довольно сносно.

Отдельно хочется отметить окно Preview в Xcode, оно не только показывает как будет выглядеть экран приложения, но и позволяет его “потыкать” и проверить непосредственно функционал. Это очень удобно, возможно такой же функционал предоставляют IDE для разработки под Android, но у меня такого опыта не было.

iCloud

В приложении реализована синхронизация данных пользователя через iCloud. Так как я использовал SwiftData (фреймворк для работы с данными в рамках SwiftUI), включить синхронизацию было довольно легко, буквально поставить несколько галочек в настройках проекта.

Немного неочевидной была работа с CloudKit и версионированием схем данных. В CloudKit есть два окружения, Development и Production, подтягивать новую схему в Production окружение нужно вручную через сайт CloudKit. Если поменять схему данных на Development окружении (она меняется автоматически при запуске проекта в симуляторе Xcode), но не поменять в Production - синхронизация через iCloud не работала.

Дизайн

Так как я в первую очередь программист, а не дизайнер, мне было довольно сложно представить итоговый вид приложения. В моем подходе, дизайн это скорее итеративный процесс, идущий параллельно разработке. В будущем, мне кажется, стоит заранее верстать внешний вид экранов / виджетов, и только потом переходить к разработке логики.

Планы по развитию

В будущих релизах хотелось бы сделать следующее:

  • добавить возможность выгрузки всех трат в табличный файл
  • расширить возможность фильтрации и поиска записей

Кроме того, ценным также будет фидбек первых пользователей, который подскажет куда дальше развивать приложение.