Vladyslav Didyk

EntryCall — Мобільний застосунок для мешканців

Відеодомофон, який мешканці носять у кишені.

EntryCall — Мобільний застосунок для мешканців

Це застосунок для iPhone й Android, яким мешканці EntryCall відповідають на виклик біля вхідних дверей свого будинку. У 2024–2026 роках я переписав його з Flutter на React Native та Expo, і він доступний в обох магазинах застосунків. Відеодзвінки працюють через WebRTC і дзвонять навіть на заблокованому телефоні.

Це EntryCall у вашій кишені. Мешканці використовують застосунок, щоб відповідати на відеодзвінки з вхідних дверей, впускати відвідувачів, видавати цифрові ключі, дивитися камеру в холі й читати новини будинку. Одна кодова база виходить в обидва магазини застосунків — і телефон дзвонить, навіть коли застосунок закрито.

Роль
Full-Stack розробник
Терміни
2024 — 2026
Стек
Expo SDK 54 · React Native 0.81 · TypeScript · LiveKit + CallKeep / VoIP push · TanStack Query v5 · NativeWind / Tailwind · Pusher · EAS Build / Update

Завдання

Одна кодова база, два магазини застосунків.

Що це за застосунок.

Застосунок для мешканців — це те, як люди відповідають на вхідні двері звідусіль. Ви бачите відвідувача на відео, говорите з ним і відчиняєте двері — плюс цифрові ключі для гостей, камера в холі наживо й новини будинку. Він виходить на iPhone та Android одночасно, і дзвінок із дверей не можна пропустити ніколи.

Найскладніше — спершу.

Найскладніша частина — змусити телефон дзвонити, навіть коли застосунок повністю закрито — потребує глибокого доступу до системи дзвінків телефона. Цю частину побудували першою й упакували в окремий комплект. Потім увесь застосунок перевели на Expo — набір інструментів, що значно прискорює розробку й оновлення, з комплектом для дзвінків, підключеним знизу.

Безпека передусім

Ключі, які ніколи не торкаються диска.

Ваша сесія живе лише в пам'яті.

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

Як вхід залишається безпечним.

  • Апаратно захищений ключ — І iPhone, і Android мають вбудований сейф для секретів. Застосунок використовує обидва через одні двері.
  • Тихе поновлення — Коли сесія завершується, застосунок поновлює її у фоні й повторює те, що ви робили. Ви цього навіть не помічаєте.
  • Миттєве блокування — Якщо поновлення не вдається, застосунок виходить усюди й одразу очищає всі збережені дані.
  • Ретельно розділені частини — Введення тексту у формі входу не може перервати живий відеодзвінок — частини навмисно тримають окремо.
Вхід без пароля — ваша електронна пошта чи номер телефона, а потім одноразовий код.
Вхід без пароля — ваша електронна пошта чи номер телефона, а потім одноразовий код.

Живі дані

Застосунок оновлює себе сам — кнопки оновлення немає.

Один розумний кеш.

Екрани ніколи не звертаються до сервера напряму. Вони читають з однієї спільної пам'яті останніх даних — будинки, новини, камери, погода — і ця пам'ять знає, наскільки свіжим має бути кожен вид даних. Погода може бути п'ятнадцятихвилинної давнини, а подія на дверях — ні.

Що робить його живим.

  • Push-оновлення — Коли будинок публікує новину або змінюється камера, сервер сповіщає застосунок, і оновлюється саме потрібний екран.
  • Активний і сплячий — Повернення до застосунку оновлює дані. Втрата зв'язку призупиняє запити й відтворює їх, щойно ви знову онлайн.
  • Правильний порядок, завжди — Дані, що залежать від вашого будинку, чекають, доки ваш будинок не стане відомим — тож ви ніколи не побачите чийогось чужого холу.
  • Чистий вихід — Вихід очищає кожен закешований екран. Жодних даних-привидів із минулої сесії.

Відео

Дзвінки з дверей, що випереджають дверний дзвоник.

Уся технологія дзвінків в одному комплекті.

Увесь відеоконвеєр живе в одному внутрішньому комплекті. Він стоїть над кожним екраном, тож вхідний дзвінок може перебрати керування, хай чим би ви займалися. А дзвінок із дверей лунає через власний екран дзвінка телефона — він виглядає й відчувається як звичайний телефонний дзвінок.

Розбудити сплячий телефон.

Спеціальний високопріоритетний push будить телефон, навіть якщо застосунок було закрито — телефон починає дзвонити, перш ніж застосунок повністю запуститься. І лише після того, як ви відповісте, під'єднуються живе відео й звук.

У руках

Заради чого мешканці насправді відкривають застосунок.

Повсякденні функції.

  • Відеодзвінки з дверей — Відповідайте на домофон, бачте відвідувача й впускайте його — не підходячи до коробки на стіні.
  • Цифрові ключі — Надавайте тимчасовий доступ родині, гостям чи прибиральниці — і забирайте його, коли все завершено.
  • Камера в холі — Перевіряйте хол і входи наживо, звідусіль.
  • Новини будинку — Оголошення від управління з'являються в застосунку тієї ж миті, щойно їх опубліковано — жодних папірців, приклеєних до ліфта.
  • Місцева погода — Невеличке, тихе, корисне доповнення — оновлюється кожні п'ятнадцять хвилин.

Дизайн-система

Одна мова стилів, дві платформи.

Узгоджено за замовчуванням.

Майже кожен екран стилізовано однією спільною системою, тож світла й темна теми скрізь виходять правильними — без зайвої роботи над кожним екраном.

Іконки, що пасують.

Застосунок використовує набір іконок Apple на iPhone і відповідний набір на Android, зіставлені через один компонент — тож кожна платформа відчувається собою.

Наступний проєкт: EntryCall — Застосунки для ТБ