GH GambleHub

Центр повідомлень та події

1) Призначення

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

Основні принципи:
  • Інформувати, не відволікаючи.
  • Приоритизувати, а не дублювати.
  • Давати дії там, де вони доречні.

2) Типи повідомлень та їх застосування

ТипПрикладВикористання
Toast / Snackbar«Ставка прийнята», «Помилка мережі»Короткострокові повідомлення на 3-5 сек; зникають самі.
Persistent banner«Потрібно оновити KYC»Важливі, але не термінові; залишаються до дії користувача.
Badge / Indicatorна іконці «»Сигнал про нові події.
Inbox / FeedЦентр повідомленьХронологія та історія повідомлень.
System modal«Вихід із системи», «Помилка платежу»Критичні збої; вимагають підтвердження.

3) Пріоритети та рівні важливості

1. Critical (помилка, збій, безпека) - вимагають уваги відразу (Modal/Banner).
2. Important (платіж, ставка, кешаут) - Toast + запис в центр повідомлень.
3. Informational (новини, бонуси) - Badge і стрічка.
4. Social (друзі, чати, турніри) - згруповані повідомлення, що не блокують UI.

UX-правило: «Не більше одного активного повідомлення на екран».

Якщо їх більше - об'єднуйте: «3 нові події».

4) Архітектура центру повідомлень

4. 1 Джерело подій

Backend → Event Bus → Notification Service → UI.
Події класифікуються: `type`, `severity`, `context`, `ttl`, `userId`.
Зберігаються в «notification _ store» (Redis + DB).

4. 2 Клієнтський потік

WebSocket / SSE для real-time.
Локальний state → lazy-підвантаження 10-20 повідомлень.
Push API (мобайл/браузер) - опціонально, за згодою користувача.

4. 3 Модель даних (приклад)

json
{
"id": "n12345",
"type": "deposit_success",
"severity": "info",
"title": "Replenishment successful,"
"message": "You made 500 ₴ through Papara,"
"timestamp": "2025-11-03T19:20:00Z",
"context": { "transactionId": "tx123" },
"read": false,
"action": {"label": "View," "url": "/wallet/history "}
}

5) UI-компоненти

5. 1 Іконка і badge

Показує кількість непрочитаних («≤ 99»).
При кліці відкриває панель/центр повідомлень.
' aria-label =» Є нові повідомлення»'; при нулі -'aria-hidden =» true»'.

5. 2 Панель повідомлень

Список карток: іконка → заголовок → короткий текст → час → CTA.
Стани: нове, прочитано, помилка доставки, завантажено з архіву.
Групування за датою: Сьогодні, Вчора, Раніше.

5. 3 Картка повідомлення

html
<article class="notif new" role="article">
<div class="icon success"></div>
<div class="content">
<h4> Replenishment successful </h4>
<p> 500 ₴ via Papara </p>
<time datetime =" 2025-11-03T19: 20"> 5 min ago </time>
</div>
<button class =" icon" aria-label = "Delete"> </button>
</article>

6) Стани та дії

Нове: виділено кольором/фоновою плашкою.
Прочитано: блідіше; не має badge.
Помилка: іконка + Retry.
Системне: не видаляється, тільки архівується.

Дії:
  • Swipe (мобайл) → видалити/прочитати.
  • Кнопки: «Детальніше», «Повторити», «Приховати».
  • Масові дії: Позначити всі прочитаним, Очистити все.

7) Візуальні принципи

Максимум 3 рядки тексту в повідомленні.
Заголовок жирний, до 50 символів.

Колірне кодування:
  • Успіх - зелений/' accent-success '
  • Помилка - червоний/' accent-danger '
  • Інформація - синій/' accent-info '
  • Увага - помаранчевий/' accent-warning '
  • Контраст ≥ AA, тіні мінімальні.
  • Анімації: fade/slide ≤ 160 мс, без постійних рухів.

8) Таймінги та відображення

Toast: 3-5 сек, з паузою при hover.
Banner: до дії.
Badge: поки є непрочитані.
Inbox: зберігання по TTL (наприклад, 14-30 днів).
Auto-close при втраті фокусу екрану - обережно (не втрачати важливі статуси).

9) A11y і клавіатура

Toast має'role = «status»'( або'alert'для помилок).
Центр повідомлень -'role = «region»'з'aria-label =» Центр повідомлень»'.
Підтримка навігації стрілками і Tab/Shift + Tab.
VoiceOver: прочитання нових повідомлень при додаванні ('aria-live = «polite»').
Фокус не «стрибає» при появі - тільки якщо toast критичний.

10) Продуктивність

Лінива завантаження і пагінація (по 20-30).
Стиснення даних ('gzip '/' br'), групування запитів.
WebSocket reconnection + backoff.
Анімації тільки на'transform/opacity'.

11) Сценарії iGaming

11. 1 Ставки і кешаут

«Ставка прийнята», «Коефіцієнт змінився», «Кешаут виконаний» - toast + запис у стрічку.
При помилці - toast «Не вдалося поставити», banner з Retry.

11. 2 Платежі

«Поповнення успішно» → toast.
«Висновок в обробці» → запис у стрічці, ETA і кнопка «Детальніше».
Помилка PSP → червоний toast + CTA Retry.

11. 3 Бонуси та акції

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

11. 4 KYC і безпека

Persistent banner до завершення верифікації.
«KYC підтверджений» → зелений toast + архів у стрічці.
«Термін дії документа закінчився» → повідомлення + CTA оновити.

12) Метрики

CTR повідомлень (за типами).
Dismiss rate (скільки закрили без дії).
Unread count avg и time-to-read.
Delivery success rate (для realtime).
Latency між подією і показом (мета ≤ 300 мс).
Error/Retry rate при доставці WebSocket/Push.

13) Анти-патерни

Звуки і спливаючі вікна при кожній події.
Непередбачувані auto-close таймери.
Повтор одних і тих же повідомлень.
Скрінблокери без причини («підтвердіть», «перезавантажте»).
Використання повідомлень як маркетинг-спам.
Центр без фільтрів/пошуку при> 50 подіях.

14) Токени дизайн-системи

json
{
"toast": {
"durationMs": 4000,
"maxWidth": 400,
"gap": 12,
"radius": 10,
"shadow": "var(--elev-3)"
},
"badge": {
"size": 18,
"color": "var(--accent-info)"
},
"panel": {
"width": 380,
"radius": 12,
"gap": 8,
"padding": "12 16"
},
"a11y": {
"ariaLive": "polite",
"contrastAA": true
}
}

15) QA-чек-лист

Функціональність

  • Реал-тайм доставка ≤ 300 мс.
  • Toast відображається ≤ 100 мс після події.
  • Центр синхронізований (read/unread).
  • Масове «прочитати все» працює.

UX

  • Не більше 1 toast одночасно.
  • Час життя повідомлень оптимально (3-5 сек).
  • Важливі повідомлення залишаються до дії.
  • Текст ≤ 3 рядки, CTA один.

A11y

  • 'role = «status» '/' aria-live'коректні.
  • Навігація стрілками і Tab працює.
  • Контраст ≥ AA.

Перформанс

  • Пагінація і lazy-load.
  • Немає фризів при> 100 повідомленнях.
  • Стиснення даних і відкладений рендеринг.

16) Документація в дизайн-системі

Компоненти: `Toast`, `NotificationItem`, `NotificationCenter`, `BadgeIndicator`.
Гайди: пріоритети повідомлень, TTL, grouping, копірайтинг.
Патерни: toast для миттєвих подій, banner для важливих, центр для історії.
Do/Don't-галерея: «спамні повідомлення» vs «спокійна інформованість».

Коротке резюме

Центр повідомлень - це не просто «інбокс» подій, а архітектура довіри і прозорості. Добре спроектовані повідомлення створюють відчуття контролю: все важливе доставлено, нічого не пропало, шум пригнічений. Для iGaming це критично - користувачеві важливо бачити підтвердження ставок, платежів і статусів, не відволікаючись від гри.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.