Ніколи не розробляйте застосунок в соло. Перша публікація в App Store 🍏
Про що цей блог
Привіт. Мене звати Кіріл. Я самотужки розробив мобільний застосунок і хочу розповісти про свій шлях, показати, які складнощі та помилки виникали, а також поміркувати, чи варто вам спробувати щось подібне. Цей текст буде загальним, тому я не буду надто зосереджуватися на технічних аспектах.
Чому вирішив цим зайнятись
Коли я гортав соцмережі, мене оточували відео та історії про те, як усі навколо створюють успішні сайти або мобільні застосунки без знання коду, використовуючи лише інструменти ШІ. Я розумів, що більшість із цього є перебільшенням, але відчуття, ніби я позаду, було присутнє.
Тоді я вирішив, що розроблю власний застосунок і опублікую його в App Store. Якщо звичайні люди без досвіду програмування здатні створити щось вартісне, то я як програміст зроблю це краще і швидше. Для мене це подорож максимум на три тижні, не більше. Проте згодом почавши розробляти я зрозумів, що це справа далеко не трьох тижнів, а моя початкова мета «здобути фінансову вигоду» раптово почала зміщуватися у бік «отримати новий досвід і хоча б закінчити».
Пошук ідеї
Окей. Для себе я чітко визначив, що в мене буде топ тір мобільний застосунок. Тепер треба було почати з основи, а саме з ідеї. Ідей було багато. У голову приходило чимало варіантів, деякі з яких справді здавалися захопливими та перспективними, проте зазвичай наступного дня вони вже не були такими привабливими. Дістати щось вартісне і геніальне просто з неба здавалося майже неможливим.
Тоді я поставив собі запитання: що у своїй рутині я міг би спростити або покращити? Очевидно, що коли я вирішую власну проблему, то чітко розумію, що саме створюю та який вигляд повинен мати кінцевий продукт. І тоді я дещо знайшов. Я поглянув на зошит, де записував англійську граматику, і задумався: чому я зараз не використовую мобільний застосунок як доповнення?
Я зібрав популярні програми для вивчення мов і швидко знайшов відповідь: вони нудні. Серйозно. Не всі, але більшість лідерів цього ринку не пропонують нічого справді унікального. Я не бачив жодної різниці у відчуттях від процесу вивчення мови за простою паперовою книгою та в цих застосунках. Звичайно, є гарні приклади, як Promova чи Duolingo, які не підпадають під ці звинувачення, але мені захотілося створити щось інакше. Можливо, фраза «створю застосунок для вивчення мови» звучить примітивно, проте я чітко бачив, у яких фундаментальних аспектах буде різниця між моєю програмою та тими, що вже існують.
Ідея та функціонал
Я роблю застосунок із вивчення англійської мови, який буде суттєво вирізнятися серед того, що зараз пропонують. Але чим саме він вирізнятиметься?
Генерація тестів для практики
Зазвичай у процесі вивчення мови я маю власний план щодо того, що і коли мені вчити. Наприклад, я занурююся в граматичну тему по типу «Past Perfect», «Past Perfect Continuous» тощо. В ідеалі я хотів би мати під рукою інструмент, де зможу миттєво створити унікальний тест або квіз на конкретну тему, яку зараз проходжу, і поєднати це із захопленнями: хобі, улюбленими фільмами чи іншим.
Наприклад, я прошу у програми тест на тему «Past Perfect» і змушую її формувати речення в контексті мого улюбленого серіалу «Breaking Bad» (це може бути що завгодно). Після цього застосунок має згенерувати квіз відповідно до цих параметрів.
Приклад речення:
Walter White ___ chemistry for many years before he decided to start cooking methamphetamine.
Варіанти (лише один правильний):
A) has taught
B) had taught
C) taught
Відчуваєте свободу? Я можу вчити будь-яку тему в якому завгодно контексті. Варіантів буквально безмежно. Це вирішує проблему, коли доводилося практикуватися на тестах, які є дуже сухими та загальними — як у тих підручниках з англійської про Боба та Джесіку, що описують лише побутові ситуації.
Отже, формула створення тесту виглядатиме так:
«Граматична або лексична тема» + «Моє захоплення»
По суті, це два запити від користувача, які в результаті створюють інтерфейс квізу чи тесту з англійської мови.
Стиль та емоції
Програми для вивчення мов не вирізняються оригінальним інтерфейсом. У багатьох із них візуальна естетика відсутня, а автентичні програми можна перерахувати на пальцях. Переглядаючи їхні прев’ю в App Store, я б відсіяв 90% варіантів лише за цим критерієм. Найімовірніше, розробники роблять дизайн примітивним, щоб не відволікати від навчання, але через це втрачається естетика.
Я спробував створити щось справді виразне. Хоч я і не дизайнер, але уявив приблизний стиль: поєднання офісних предметів із космічною тематикою. Звучить дивно, але якщо ви відкриєте мою програму зараз, то зрозумієте. Такий стиль сподобається не всім, але він гарантує одне: ви точно не сплутаєте цей застосунок з іншими. Додатково програма зобов’язана дарувати приємні емоції та винагороджувати користувача тут і зараз. У часи короткої концентрації уваги та популярності TikTok це критично важливо. Коли юзер обирає правильну відповідь у тесті, має з’являтися приємна анімація, яка синхронізується зі звуком та вібрацією.

Курси
Динамічна генерація квізів є чудовою можливістю, проте класичний підхід також має бути. У моєму застосунку, як і в багатьох інших, є курси. По суті, це шлях, який складається з уроків та тестів, присвячених конкретним темам, наприклад, певній граматиці чи лексиці. У самому курсі для того, щоб відкрити наступний урок, користувач має спочатку пройти попередній. Інформація подається користувачеві в структурованому вигляді, тому він може легко відстежувати свій прогрес і бачити, що він уже опанував.

Основні моменти розробки
Вмій все або навчись
Круто! Ви наважилися на створення застосунку самотужки, і відтепер у вас є декілька ролей у проєкті: CEO, фронтенд розробник, бекенд розробник, девопс, дизайнер, маркетолог. Щось не знаєте? Не біда, будьте готові вчитися та розбиратися. Наприклад, я фронтенд розробник і мій досвід у бекенд розробці не був вражаючим, тож доводилося занурюватися в нові теми, як JWT авторизація, транзакції та способи ефективно зберігати дані. Звісно, існують сервіси та AI інструменти, яким можна делегувати багато проблем, але ваш контроль усе одно має бути присутнім.
Написання коду з AI
Що використовував і чому
Юзав золотий стандарт вайбкодерів — Claude Code. З власного досвіду моделі Claude приємніші в роботі, ніж конкуренти, хоч по рівню інтелекту флагманські моделі приблизно рівні. А от що не однакове то це ціна. Claude відчутно дорожчий, тому коли виходив за ліміти то не соромився переходити на гугловські альтернативи.
Як використовував та особливості роботи на маленьких code-base
На старті у вас чистий аркуш паперу і ще довгий час ваш проект буде залишатись відносно невеликим, тому ШІ працює особливо ефективно і дешево. Структура прозора, залежностей мало а legacy відсутній. Я використовував Claude всюди як при створенні нового функціоналу до дебагінгу. Мені не дуже часто доводилось руками залазити в IDE і писати код самому, основну частину часу я коригував його та проводив код ревю. Але важливо пам’ятати: при масштабуванні AI наслідує поточні підходи проекту — як хороші, так і погані. Тому на ранніх етапах треба закласти хоча б базовий фундамент застосунку. Продумати структуру проекту, те як і де будуть зберігатися дані, та як вони передаватимуться між сутностями.
Оцінка ефективності
В результаті я написав код інтерфейсу застосунку та сервера. І тут я не здивую тим, що розробка з AI стала обов’язковою. Якби я ВЕСЬ код писав самотужки, то цей блог ви б не побачили, а я б і далі сидів над проєктом. Хочу зазначити, що було немало моментів, коли доводилося брати кермо в свої руки, бо пропозиції агента були невдалі в контексті обмежень по часу або того результату, якого ви хочете досягнути. Іноді траплялись проблеми, які я так і не зміг вирішити через Claude. Тому доводилося розбиратись самому. Наприклад, я використовував бібліотеку для Liquid glass iOS компонентів і зіткнувся з тим, що компоненти не працювали в деяких ситуаціях на реальному айфоні, і рішення знайшов на GitHub, де була відкрита помилка під цю проблему.
Диявольські сервіси Apple
Робота з Xcode
Ви колись бачили, як виглядає кабіна пасажирського літака? Безмежна кількість різних тумблерів та кнопок, але це все квіточки в порівнянні з інтерфейсом програми Xcode, в якому вам доведеться провести немало часу. Xcode — це офіційне середовище розробки від компанії Apple, створене для проєктування, написання коду та тестування програмного забезпечення під iOS, macOS тощо. Доведеться хоча б поверхнево розібратися в ньому. Я запевняю, що в ньому вам не буде нудно, особливо на початкових етапах, але ви можете спростити собі життя, додавши Xcode MCP до вашого Claude Code або Codex. Я пробував цим користуватися і тестував на тих речах, які я зазвичай роблю в Xcode, і воно справляється непогано, тому всім раджу.
App Store Connect
Уявімо, що у вас уже є готовий або майже готовий код застосунку. Щоб він потрапив до App Store, його спочатку потрібно зареєструвати та правильним чином налаштувати в App Store Connect. Це офіційна панель керування всім життєвим циклом застосунку від Apple, яка коштує 100 $ на рік: тут налаштовуються версії, підписки, платежі, доступи, метадані, вікові рейтинги та сам процес проходження Apple Review перед публікацією. Спочатку вам треба буде заповнити базову інформацію: хто ви, що буде робити ваш застосунок та яку інформацію він збиратиме, додати опис та фото функціоналу всередині та інше. Відкрийте будь-який гайд в інтернеті, і ви зрозумієте основи: що і куди там. Але чим більше даних збирає і чим ширший функціонал вашої програми, тим пропорційно довше і виснажливіше це буде налаштовуватися.
Apple Auto-Renewable Subscriptions (Оплата та підписки)
Існують різні підходи до монетизації: реклама, продукти всередині застосунку (In-App Purchases), підписки. З цього всього найскладнішим для реалізації є підписки, а точніше як це називається в документації Apple — «Auto-Renewable Subscriptions», що я і вирішив додати в застосунок. По суті це звичайні підписки, які будуть автоматично продовжуватись. Імплементація такого функціоналу це вже лего для дорослих, бо підписка має широку варіацію різних типів евентів від юзера таких як: підписка була куплена, підписка оновилась, підписка закінчилась, юзер закенселив підписку, юзер закенселив і отримав refund, юзер перейшов на інший план, і так далі. А це означає що ваша система має все це правильно обробляти.
Ще складність в тому що тут задіяно 3 ключових сутності, які будуть між собою певним чином взаємодіяти. 1 — Клієнт 2 — Ваш сервер 3 — Сервери Apple. І це все ще не все! Згадаю за один із едж кейсів. Покупка підписки або продукту прив’язується до Apple ID, а не до юзера у вашій системі. Уявімо що користувач купив продукт на акаунті A і потім вийшов з сесії і зайшов на акаунт B і хоче купити ще одну підписку на акаунті. Система Apple заборонить це зробити, бо вона побачить що цей продукт вже куплений (прив’язка по Apple ID). Є декілька способів як звідси викрутитись але зараз не про це. Тому якщо ви імплементуєте це все вперше — гарантує захопливий кошмар десь на тиждень часу або просто цікавий челендж, всім раджу!
Apple Review (Моліться)
Приїхали. У вас усе готово і ваш застосунок це ракета, яка стоїть на стартовій площадці й готова злетіти та розірвати всіх конкурентів, але перед цим вона має успішно пройти Apple Review. Ви натискаєте «Submit for review» і через якийсь час хлопчина десь там за океаном буде дуже уважно перевіряти ваш застосунок на заборонені речі, баги та міскомплаєнси. Від моменту першого сабміту до першої публікації в мене це зайняло рівно місяць, що прирівнюється до 10 завалених ревю і декількох зіпсованих вечорів. Тут працює просте фундаментальне правило: чим більша ваша програма і чим більше вона даних збирає, тим складніше це проходити. І я дам декілька порад.
- Ви завалите перше ревю з дуже великою ймовірністю. Тому заваліть його якомога швидше! Серйозно, навіщо гадати, що у вас там не так зроблено, коли для цього є спеціальні люди. Ви вже заплатили цілих 100 доларів, тому маєте повне право відправляти скільки завгодно запитів, а вони зобов’язані все це перевіряти. Поки Apple Review Team виписують помилки, які ви допустили, ви паралельно разом з агентом відкривайте Apple App Review Guidance і проходьтеся по основним пунктам та виправляйте, і вже зовсім скоро прийдуть реальні результати ревю, і тоді проходьтеся вже по ним. І пам’ятайте: це не ви застрягли в їхньому ревю, це вони застрягли з вами.
- Будьте ДУЖЕ ОБЕРЕЖНІ з секцією «App Privacy» в App Store Connect. Я додав Data Type, який мені більше не був потрібен, і вирішив його видалити, та інтерфейс дозволяв це зробити, але після перезавантаження він знову з’являвся. Сервер повертав помилку 503 і більше жодних пояснень на сайті. Нічого не допомагало, а підтримка мовчала. Ця містика минула сама через майже два тижні. Тому краще одразу визначте, які дані збирає програма щоб зайвий раз не зачіпати ту секцію.
В цілому я б не сказав, що Apple Review це щось дуже складне, його реально пройти з
Мої помилки
Продай мені цю ручку
Продайте самому собі свій застосунок за
Вбивайте ідеї
Бажання розширювати ваш застосунок буде присутнє завжди. І це круто! Запишіть або намалюйте новий функціонал у блокноті, але НІКОЛИ не починайте імплементувати одразу. Більшість ідей, скоріше за все, згаснуть у ваших очах за пару днів, а витрачений час на них ніхто не поверне. Тому хай вони поваляються
Деталі потім
Під час розробки виникали питання стосовно всяких дрібниць: де мені краще розмістити цей бейджик і що на ньому буде написано? А як краще показати підказку і яку анімацію вона матиме? Забудьте про це. У вас максимальна гнучкість, ви можете змінювати дизайн та частини функціоналу на ходу, бо ви тут головний, але я б не радив зациклюватись на деталях, поки основні речі не готові. Ці деталі ви і так потім ще не раз зміните, а от коли основне вже зроблено, то вам доведеться менше експериментувати з цим, бо ви вже бачите всю картину цілком. Я згаяв немало часу на подібні заняття і потім в кінці все одно змінював їх.
Висновки. І чи треба воно вам
Розробити власний застосунок соло це точно класний челендж. З плюсів ви отримаєте нові знання, і вам буде значно легше створювати наступні мобільні застосунки, бо ви вже вмієте працювати з офіційними сервісами Apple та ваші технічні знання будуть на вищому рівні. І найприємніше: у вас буде шанс отримати серйозну фінансову винагороду від вашого продукту, звісно, лише за умови, якщо він має попит і ви змогли це все монетизувати та підтримувати.
А тепер до єдиного реально суттєвого мінусу. Я не знаю, чим ви займалися після роботи або навчання, але точно скажу, що тепер ви будете займатися цим значно менше. Розробка навіть невеликого проєкту буде поглинати багато вашого часу, якщо ви це робите вперше. Не люблю це слово, але я б радив бути дійсно продуктивним. Якщо у вас є всього годинка на день, то хай вона буде результативна: вимкніть музику, відкладіть каву, закрийте двері і сфокусуйтеся. Тому якось так. І перед тим, як ви наважитеся на це все, впевніться в тому, що у вас є достатня кількість ресурсів, як час і бажання, а ваша ідея виглядає rock solid.
Що далі
Зараз моя програма стоїть в App Store і нею можна користуватися. Розробка її стоїть на паузі, бо я хочу визначити точний напрямок, у якому хочу її розвивати та змінити або покращити основну ідею, і вже тоді продовжити. Надіюся, що вона стане популярною та ви ще не раз почуєте про неї в майбутньому. Якщо ви хочете спробувати покористуватися зараз на MVP-стадії, то напишіть мені в приватні повідомлення або в коментарях.

4 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів1. Цей додаток дуже легко зламати. «isPro» перевірка + «hasActiveSubscription» — серйозно?) Але не критично допоки не стало популярним + джейлбрейк вмирає, а отже можливо можна і ігнорувати)
2. Firebase ваш зареєстрований на org.reactjs.native.example.GrammixAI, тоді як в самій апп інша назва бандлу. Велика ймовірність того що через це посиплеться AppChec, і сервіси що надає firebase ні в кого окрім вас працювати не будуть.
А це ви у Claude замовили писати апп на React Native, чи він сам стек обирав?)
Дякую, що занурилися в застосунок)
1 — Так, я використовував найпростішу перевірку «isPro», щоб обмежити деякі тести, не зачіпаючи бекенд.
2 — Зараз я не використовую Firebase у застосунку.
І ні, стек обирав не Claude) Я обрав React Native через перспективу легко перенести застосунок і на платформу Google Play. До того ж, я вже мав досвід з цим фреймворком
Іду я теж вайбкодити. Перенесу свою апу з веб на апки під ios i android через Expo
Expo? А потім коли кількість апдейтів стане більше xxx, то піду втоплюся у річці глибокій... :)