Розробка мобільного додатка для електронної черги
Людина взяла талон в МФЦ, вийшла на вулицю, і пропустила виклик — тому що не чула оголошення. Повернулась, але її місце вже займав наступний номер. Мобільний додаток для електронної черги вирішує саме це: користувач не зобов'язаний сидіти та дивитися на табло.
Логіка черги та real-time синхронізація
Черга — це не просто список. Це стан, який змінюється кожні 2–5 хвилин. Клієнт повинен бачити актуальну позицію без ручного оновлення.
Два підходи до синхронізації:
WebSocket (переважно): з'єднання відкрите поки додаток активний. При виклику наступного номера сервер розсилає подію всім підключеним клієнтам цієї черги. На Flutter — web_socket_channel, стан в Riverpod StreamProvider або BLoC.
SSE (Server-Sent Events): простіша реалізація на backend, односторонній канал сервер → клієнт. Підходить якщо немає двосторонної комунікації.
Коли додаток переходить у background — WebSocket закривається. Активуються push-сповіщення:
- «Залишилось 3 людини перед вами» — нагадування, приходьте у відділення
- «Ваш номер наступний!» — час йти до стійки
- «Вас кличуть до вікна №5» — немедленне сповіщення
Логіка тригерів на сервері: при кожному виклику наступного номера сервер рахує позицію кожного, хто чекає, та відправляє персоналізовані push тим, у кого залишилось 3, 1 позиція.
Реєстрація в черзі
Користувач вибирає послугу → система показує поточне навантаження (середній час очікування) → підтверджує запис → отримує номер талона та позицію.
Середній час очікування — розрахункова метрика: avg(service_duration_last_N) * position. Сервіс розраховується з історії звернень, зберігається в PostgreSQL, оновлюється ковзаючим середнім.
QR-код талона для ідентифікації у стійці без введення номера — qr_flutter на Flutter, генерується на пристрої з рядка ідентифікатора.
Кабінет адміністратора (оператора)
Оператор у стійці видить список черги та викликає наступного через планшет або ПК-інтерфейс. Виклик через API → сервер оновлює чергу → push клієнту.
Адміністратор налаштовує: кількість активних вікон, типи послуг, робочі години, пріоритетні категорії (пенсіонери, інваліди). Ці налаштування впливають на алгоритм видачі талонів.
Попередня запис та інтеграція з розкладом
Продвинутий сценарій: користувач записується на конкретний час, не просто бере талон. Тоді за 30 хвилин до запису нагадування push, за 10 хвилин — «виходьте зараз».
Реалізація через серверний планувальник (Bull Queue): при створенні запису завдання ставляться в чергу з затримкою за часом.
Стек та терміни
Backend: Node.js + PostgreSQL + Redis (для real-time стану черги в памяті) + Bull (планувальник push).
Mobile: Flutter (iOS + Android) або React Native.
| Масштаб | Терміни |
|---|---|
| MVP: талон, позиція, push | 4–6 тижнів |
| + Попередня запис, кабінет оператора | 8–10 тижнів |
| + Аналітика, мультиофіс, інтеграція | 14–16 тижнів |







