GH GambleHub

User Profile Interface

1) Principles

1. One thought per screen. Profile = a set of short self-contained sections with one CTA each.
2. Default security. Visible statuses of 2FA/sessions/devices, simple paths to action.
3. Data transparency. What is stored, why, how to disable/download/delete.
4. No overload personalization. Only real settings that affect the experience.
5. Never lose context. Drafts, return to last section, predictable URL.


2) Information architecture

Recommended structure (left menu/tabs):
  • Profile (avatar, name, contacts)
  • Security (password, 2FA, devices/sessions)
  • Payments (methods, auto-saved parts, history)
  • Limits (responsible game)
  • KYC (status, document upload)
  • Preferences (language, currency, odds format, quick bets, topics)
  • Notifications (types/channels, silence/digest)
  • Privacy and data (visibility, DSAR/export, account deletion)

Never show full PAN/CVC; UX-only tokens and masks.


3) Profile header

Avatar (loading/cropping), display name, ID/username.
Status Badges: KYC: Under Review/Passed, 2FA: On/Off, Responsible Play: Active.

Quick links: "Change password," "Confirm e-mail/phone," "Set a limit."

html
<header class="profile-head">
<img class="avatar" alt="Аватар пользователя">
<div>
<h1>Имя пользователя</h1>
<div class="badges"><span class="badge">KYC: На проверке</span><span class="badge">2FA: Выкл</span></div>
</div>
<button class="btn btn--primary">Загрузить документы</button>
</header>

4) Profile section

Fields: name, date of birth, country, interface language.
Contacts: e-mail (verification), telephone (OTP).
Locale: date/time/currency tied to language and country.
Date of birth is only edited via support after KYC.

UX: format prompts, soft masks, auto save with debunking, confirmation of success.


5) Safety

Password: change by current password + quality rules (pressure gauge/prompts), do not show requirements retroactively.

2FA: TOTP/SMS; simple master stream: "Enable → QR → backup codes."

Devices and sessions: list of active inputs (device/OS/location/time), CTA "End all except current."

Social logins: binding/unlinking with confirmation.


6) Payments

Payment methods: cards (mask '1234'), A2A/wallets; Default status.
Conclusions: saved details (IBAN/wallet) with micro-transfer verification, if applicable.
Transaction history: filters by type/date/amount, CSV export.
Transparency: Commissions/ETA and In Process/Rejected/Ready states.


7) Limits (Responsible Play)

Types: Deposit, Rate, Time-outs, Self-exclusion.

UX: radio period (day/week/month) + amount, explicit text "Will take effect in...."

Change towards weakening - delayed; tightening - right away.


8) KYC

Stepper: Personal data → Documents → Sending → Under review.
Clear file requirements (type/size/clarity) + preview.
Status and terms, notification channel for readiness, history of submitted documents.


9) Preferences

The format of the coefficients is decimal/fractional/American.
Quick bets: switch + "no confirmation" warning and Undo if allowed.
Theme: light/dark/systemic; contrast mode for the visually impaired.
Geo and language: retain but remember jurisdictional requirements (content/block lists).


10) Notices

Channels: push/e-mail/SMS/in the application.
Groups: financial, gaming, social, marketing (moderately by default).
"Do not disturb": time ranges and conditions (e.g. no marketing at night).
Preview: What the notification looks like, where to turn it off.


11) Privacy and data

Profile visibility (if social functions): who sees nickname/avatar/activity.
Data loading (DSAR): request for an archive with a lead time; notification on readiness.
Deleting an account: explain the consequences, grace-period, "Freeze" as an alternative.
Consent Log: Cookies/Marketing/Terms - Dates and Versions.


12) Action history

Feed: entries/exits, password changes/2FA, changes in payment details, limits.
Filters and export; explanation of geo-IP and devices.
CTA "It Wasn't You?" → fast password change and session termination flow.


13) A11y and localization

Labels and clues are linked through 'aria-describedby'; errors - 'role = "alert" '.
Contrast ≥ AA, visible ': focus-visible', Tab order corresponds to visual.
'prefers-reduced-motion '- minimum animations.
Language expansion: 20-30% margin in width; numbers are tabular ('font-variant-numeric: tabular-nums;').


14) Mobile patterns

Profile menu as drawer; key statuses/CTA - at the top.
Sticky-CTA at the bottom for long forms ("Save Changes").
Scaling of fields, keyboards by type ('inputmode').
Notifications/history - tape with endless loading and sentry-observer.


15) Empty, errors, states

Empty: friendly hint and "what's next" (add method/include 2FA).
Error: cause + how to fix + Retry; Do not reset input.
Busy: local bootloaders, without locking the entire screen; TTFF ≤ 100 ms.


16) Metrics

Completion Rate by key settings (2FA, KYC, payment methods).
Time-to-Complete sections (password/2FA/KYC/limits).
Error Rate of forms + Retry success rate.
Adoption preferences (topic, quick bets, odds format).
Security posture: the proportion of users with 2FA, the number of completed foreign sessions.


17) Anti-patterns

Hidden critical settings (2FA/limits) in depth.
Long questionnaires in a modal; no auto save.
Silent sending without busy/confirmation.
Reset focus and "jump" layout; CLS due to pictures.
Prohibition on copy of 2FA/OTP code.
Mix marketing and default critical notifications.


18) Design system tokens (example)

json
{
"profile": {
"sectionGap": 20,
"fieldHeight": 44,
"radius": 12
},
"security": {
"badge": { "radius": 8, "px": "4 8" },
"focusRing": { "width": 2, "offset": 2 }
},
"lists": {
"row": { "py": 12, "px": 16 },
"divider": 1
},
"motion": { "hoverMs": 160, "pressMs": 90 },
"a11y": { "contrastAA": true, "reduceMotion": true }
}

19) Snippets

Device/Session List (HTML)

html
<ul class="sessions" role="list">
<li>
<div>Chrome · Windows · Киев</div>
<small>Последняя активность: 14:32</small>
<button class="btn btn--ghost">Выйти</button>
</li>
<li aria-current="true">
<div>Safari · iOS · Текущая сессия</div>
<small>Последняя активность: сейчас</small>
<button class="btn btn--ghost" disabled>Текущая</button>
</li>
</ul>
<button class="btn btn--secondary">Завершить все сеансы</button>

Coefficient format switch (radio)

html
<fieldset>
<legend>Формат коэффициентов</legend>
<label><input type="radio" name="odds" value="decimal" checked> Десятичные</label>
<label><input type="radio" name="odds" value="fractional"> Дробные</label>
<label><input type="radio" name="odds" value="american"> Американские</label>
</fieldset>

Payment method card (masking)

html
<article class="pay-card">
<h4>Visa •••1234</h4>
<small>По умолчанию</small>
<div class="actions">
<button>Сделать основным</button>
<button class="danger">Удалить</button>
</div>
</article>

20) QA checklist

Meaning and flow

  • Sections are logical; each screen has one main CTA.
  • URL/navigation restores the last section.

Forms

  • Correct 'type/inputmode/autocomplete'; soft masks, predictable caret.
  • Asynchronous checks with debunking; saving does not lose data.

Safety

  • 2FA flow is understandable; backup codes are available for download.
  • Sessions/devices are terminated, events are logged.
  • Sensitive fields are not logged/cached.

iGaming-specifics

  • Limits with delayed entry and different periods.
  • KYC statuses and documents are clear; deadlines and notification channel are visible.
  • Odds format and quick bets work as advertised.

А11у/Localization

  • Contrast ≥ AA; ': focus-visible' see; Tab order is correct.
  • Texts and numbers are adapted to the language/currency; RTL is supported (if necessary).

Performance

  • TTFF ≤ 100 ms; no CLS; images load lazily.
  • Large lists (history) are paginated/virtualized.

21) Documentation in the design system

Компоненты: `ProfileHeader`, `ProfileSection`, `SecurityPanel`, `SessionsList`, `PaymentMethodCard`, `LimitsForm`, `KYCStepper`, `PreferencesForm`.
Tokens: fields/radii/focus/badges, CUS/limit statuses, success/error/attention colors.

Patterns: "One CTA per partition," "Undo/Confirm for risk," "Export/delete data (DSAR)."

Do/Don't: hidden security settings, overloaded forms that mask marketing inclusions.


Brief summary

The profile interface is a trust center: it must be simple, honest and secure. Clear architecture, fast and predictable flow (2FA/KYC/limits/payments), neat forms and transparency of work with data turn the profile into a product support and reduce the load on support - especially critical for iGaming.

Contact

Get in Touch

Reach out with any questions or support needs.We are always ready to help!

Start Integration

Email is required. Telegram or WhatsApp — optional.

Your Name optional
Email optional
Subject optional
Message optional
Telegram optional
@
If you include Telegram — we will reply there as well, in addition to Email.
WhatsApp optional
Format: +country code and number (e.g., +380XXXXXXXXX).

By clicking this button, you agree to data processing.