Shipping Feyz: додаток для роздумів про віру у React Native, від побічного проекту до магазинів
Як кодова база TypeScript React Native допомогла перейти від Tawakkul до Feyz завдяки керуванню стором, покращенню продуктивності на старих пристроях та UX для зосередженого аналізу.
Багато інженерів мають тиху мету — вивести незалежну ідею з порожнього репозиторію аж до публічних магазинів. Ця мета може здаватися далекою протягом тривалого часу. Завдяки мобільному продукту для кількох платформ під назвою Feyz — який спочатку мав робочу назву Tawakkul — ця мета здійснилась у вигляді додатку, доступного у App Store та Play Store. Серед проектів на React Native цей проєкт вирізняється особливою значущістю, оскільки вимагав прийняття рішень у реальних умовах, а не просто виконання прикладів з посібників.
Походження продукту та чіткіший напрямок інтерфейсу
Feyz не з’явився з нізвідки. Прогрес прискорився після співпраці з колего-розробником, який представив фреймворки для кількох платформ та надавав постійну підтримку на початковому етапі навчання.
Візія продукту полягала у створенні витонченого простору без зайвих відволікань, який допомагає людям поєднувати духовну свідомість та щоденні роздуми про віру у насичений графік. Аналіз існуючих додатків у цій категорії виявив значну прогалину: багато з них або ховали корисні функції під надмірно складними та застарілими інтерфейсами, або відволікали увагу через повільну та погано оптимізовану роботу. Те, що спочатку було лише ескізом невеликого інструменту, перетворилося на чітко спрямований проект високої якості.
Вибір React Native для обох платформ
Планування розгортання породило звичайний вибір: окремі кодові бази на Swift та Kotlin чи спільний підхід для крос-платформеності. З точки зору логістики переміг React Native – єдина кодова база на TypeScript, яка генерує бінарні файли користувацького інтерфейсу для Android та iOS, скорочує час розробки та усуває дублювання логіки продукту.
Цей проект також став місцем навчання з використанням React Native у реальних умовах. Робота вийшла за межі структурованих відеокурсів та загальних збірок прикладів коду. Замість форматування статичних екранів команда зосередилась на асинхронному оновленні стану, динамічних кінцевих точках та компонентах макетування, які мали правильно функціонувати при різній щільності пікселів.
Архітектура розвитку та управління після запуску
Перенесення крос-платформного додатку з локального емулятора на розгляд до офіційного магазину створює інші труднощі. Виявилося, що написання чистого коду компонентів — це простіше завдання. Зрілість проекту досягалась шляхом усунення перешкод під час розгортання.
По-перше, інтерфейс мав залишатися інтуїтивно зрозумілим: було прибрано зайві елементи меню, структура була мінімалістичною, а духовні роздуми можна було виконати за допомогою однієї простої точки взаємодії. По-друге, необхідно було ретельно налаштувати систему телеметрії та потоки даних, щоб стан програми залишався стабільним без блокування основного потоку на старіших пристроях. По-третє, налаштування нативної платформи вимагало корекції дозволів Android, дерев залежностей CocoaPods та локальних налаштувань пакетів, щоб уникнути збоїв під час роботи програми.
Перейменування Tawakkul на Feyz було чимось більшим, ніж просто косметичною зміною. У міру накопичення даних телеметрії з процесу роботи та стабілізації профілів користувачів назва Feyz краще відображала зрілий, інклюзивний та більш широкий характер продукту. Це перейменування відображало покращення якості коду та обсягу функцій, так і розвиток бренду.
Що навчило нас професійного підходу до інженерії під час випуску продукту
Створення та випуск додатку поставило під сумнів уявлення про те, що елітна інженерія означає найрозумнішу синтаксис. Щоб випустити справжній продукт, потрібно відкласти его та мислити як розробник продукту. Терпіння під час налаштовування несправних середовищ, послідовність під час циклів відхилення в магазинах та скромність під час аналізу реальних відгуків користувачів мають більше значення, ніж демонстрація алгоритмів. Завершення розробки додатку та його стабільна робота в промисловому середовищі вимагають дисципліни, якої неможливо навчитися, створюючи новий репозиторій. Feyz — це вже не просто папка на GitHub; це доказ того, що зосереджена ідея може досягти кінцевої мети у промисловому використанні.
Спробуйте живі версії
Інженери, дизайнери та читачі, які цікавляться продуктами та хочуть перевірити інтерфейс виробництва, протестувати рендеринг на різних платформах чи дослідити архітектуру відображення, можуть завантажити останні версії програми з публічних каталогів Apple App Store та Google Play для Feyz.
Шлях від абстрактної концепції до каталогу в магазині залишається однаковим для будь-якого подібного проєкту: потрібно обрати технологічний стек, який забезпечує сумісність платформ, проектувати з урахуванням спокійної концентрації, а не кількості функцій, та ставитися до правил магазину та моніторингу після запуску як до важливих інженерних завдань, а не до додаткових обов’язків. React Native уможливив випуск програми для двох платформ, а обмеження виробництва зробили її реальною. Процес гідратації, який ніколи не блокує старіші пристрої, дозволи, які переживають процедуру перевірки, та структури CocoaPods, які залишаються послідовними, можуть здаватися не надто привабливими, але саме вони визначають, чи зможуть користувачі взагалі скористатися функціями відображення.
Додаток для духовних практик без відволікаючих факторів також змушує до рішучого скорочення функцій продукту. Кожен додатковий елемент меню конкурує з можливістю швидкої практики, як тільки користувач відкриває додаток. Абсолютна чіткість форматування, передбачувані оновлення стану та синхронізація на фоні, яка не заважає, — це не елементи доробки, а сам продукт. Саме тому Feyz надав пріоритет простому входу у щоденні роздуми без зайвих перешкод, а не насиченій панелі керування з додатковими інструментами.
Для команд, які оцінюють React Native для створення подібних спеціалізованих додатків, цей урок є практичним. Спільний TypeScript дозволяє передавати UI та бізнес-логіку між різними платформами, проте все одно з’являються проблеми: вимоги до дозволів у Android, діаграми залежностей у iOS та відмінності в апаратному забезпеченні. Виділіть час ще на початковому етапі для вирішення цих проблем. Розглядайте тестові версії в емуляторі як проміжний результат, а не кінцеву мету. Процеси зберігання, примітки про відхилення та перевірка продуктивності на старих пристроях — саме тут побічний проект перетворюється на доглянутий бінарний файл.
Додатки, якими керує окрема особа, також навчають відповідальності за всю ланцюгову процедуру — від ідеї та дизайну користувацького інтерфейсу, через модулі TypeScript та налаштування для нативних платформ, до подання та перевірки їхньої роботи під час виконання. Саме ця ланцюгова процедура перетворює абстрактну мету на щось, що користувачі можуть завантажити вже сьогодні.