Як один реальний біль перетворився на iOS-продукт для швидкої бізнес-комунікації

💡 Усі статті, обговорення, новини про Mobile — в одному місці. Приєднуйтесь до Mobile спільноти!

У малого бізнесу рідко болить «технологія заради технології». Болить рутина: одні й ті самі повідомлення, копіювання з нотаток, ручні правки дати/часу/послуги, постійне перемикання між месенджерами.

Саме так і народився TypeOnce.

Я бачив, як моя дружина — власниця салону краси — щодня відправляє однакові тексти клієнтам: підтвердження запису, нагадування, уточнення деталей. Змінюються лише дрібні частини, але часу це з’їдає непропорційно багато.

Так з’явилась ідея зробити інструмент, який працює всюди, де є поле вводу: у месенджерах, пошті, нотатках, CRM-інструментах у браузері.

Тобто не черговий «текстовий менеджер», а кастомна клавіатура для iOS, яка вставляє готові, структуровані повідомлення в будь-який застосунок.

Переглянути додаток в App Store

Що вирішує TypeOnce для бізнесу

TypeOnce закриває три ключові задачі:

— прибирає хаос із копіюванням і ручним редагуванням;

— прискорює щоденну комунікацію без втрати якості;

— стандартизує повідомлення команди (менше помилок, стабільний tone of voice).

Результат простий: менше механіки — більше сервісу.

Продуктовий сценарій: один шаблон, багато ситуацій

Користувач створює шаблон один раз, а далі:

1. обирає його прямо в клавіатурі;

2. заповнює лише змінні частини;

3. отримує фінальний текст за кілька секунд.

Замість ручного редагування повідомлень — керована підстановка параметрів.

Технічна архітектура: чому це стабільно і масштабовано

1) Єдина система з двох рантаймів: App + Keyboard Extension

TypeOnce має:

— основний iOS-додаток (керування шаблонами, параметрами, структурами);

— keyboard extension (використання шаблонів у сторонніх застосунках).

Дані між ними синхронізуються через спільний контейнер (App Group) і єдину SQLite-базу.

Тобто те, що створено в app, одразу доступно в клавіатурі.

2) Strict unidirectional flow на базі TCA

В архітектурі використано The Composable Architecture (TCA):

— кожна фіча має свій State, Action, Reducer;

— бізнес-логіка живе в reducer’ах, а не у View;

— залежності інжектяться через @Dependency, що спрощує тестування та контроль ефектів.

Це дає передбачуваний флоу:

Intent/Action -> Reducer -> Effect/DB -> New State -> UI.

3) Чому зв’язка TCA + SQLiteData виявилась найкращою

Persistence-рівень побудований на SQLiteData (Point-Free) + GRDB.

І саме ця зв’язка дуже органічно лягає на TCA:

— читання даних через @FetchAll добре вбудовується у feature-state;

— запис у БД контролюється з reducer’ів через dependency, а не через View-контекст;

— динамічні запити і міграції залишаються прозорими;

— одна модель роботи і для app, і для extension.

На відміну від цього, SwiftData більш View-oriented (@Query, modelContext через environment).

Для чистої reducer-first архітектури це часто створює тертя: persistence-поведінка тяжіє до UI-шару, а в TCA навпаки хочеться, щоб UI був максимально «тонким».

У нашому кейсі саме SQLiteData + TCA дала стабільність, контроль і комфорт розробки без помітних компромісів.

4) Клавіатура теж на TCA і shared feature-підході

Клавіатура в TypeOnce — не «окремий маленький додаток на швидку руку».

Вона використовує той самий архітектурний принцип:

— KeyboardFeature з власним State/Action/Reducer;

— shared-підхід до доменних моделей і бізнес-логіки;

— параметричні сценарії (picker/multipicker/random/date) також проходять через reducer pipeline;

— збірка фінального тексту відбувається через окремий composer-сервіс.

Це критично для підтримуваності: логіка не дублюється між app і extension, а розвивається як єдина система.

Функціональні фішки, які дають бізнес-ефект

— шаблони та папки для швидкої організації сценаріїв;

— динамічні параметри: picker, multipicker, random, date;

— системні теги на кшталт позиції курсора й вставки з буфера;

— дії до/після вставки (очистити текст, закрити клавіатуру тощо);

— preview-режим клавіатури для тестування сценаріїв;

— аналітика та crash-reporting для контрольованого покращення продукту.

Чому це цікаво компаніям і маркетингу

TypeOnce — це швидкий «побутовий automation layer» для команд, що багато пишуть вручну:

— салони, клініки, сервісні команди, support, sales;

— менше часу на однотипні відповіді;

— менше помилок у комунікації;

— швидший онбординг співробітників;

— краща консистентність бренду в текстах.

Простіше кажучи: операційна економія щодня, без складних інтеграцій.

Висновок

TypeOnce виріс із реальної щоденної проблеми й став інструментом, який помітно підвищує швидкість робочої комунікації.

Технічно проєкт побудований на сильному фундаменті (TCA + SQLiteData + keyboard extension), а продуктово — вирішує зрозумілу і масову задачу.

Якщо вам цікаві продукти на стику UX-швидкості, мобільної архітектури й прикладної автоматизації, TypeOnce — саме такий кейс.

Корисні посилання

— App Store: typeonce — Quick Keyboard

— Point-Free: SQLiteData 1.0

— Point-Free: SQLiteData / SharingGRDB intro

— SwiftData caveats: SwiftData pitfalls (Wade Tregaskis)

— SwiftData production considerations: Fatbobman analysis

👍ПодобаєтьсяСподобалось7
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

реальна біль)), біль-іменник чоловічого роду

Ще раз переконуюся, що свої 6 балів з української мови в школі я отримав заслужено 😅
Дякую, що виправили!

Підписатись на коментарі