Uživatelská zóna (PRD-02)
Fundament přihlášeného uživatele — registrace, wallet, historie, sdílení. Plné znění najdete níže na této stránce.
Scope
| Fáze | Obrazovek | Odhad |
|---|---|---|
| MVP | 18 (2 primární, 5 sekundárních, 11 podpůrných) | 52 h |
| F1 | 1 (onboarding dotazník) | 4 h |
| Celkem | 19 | 56 h |
Klíčové obrazovky
| ID | Název | Fáze |
|---|---|---|
| P7 | Moje vstupenky / Wallet | MVP |
| P9 | Uživatelský účet hub | MVP |
| S4 | Přihlášení | MVP |
| S5 | Registrace | MVP |
| S7 | Historie objednávek | MVP |
| S8 | Detail vstupenky | MVP |
| S6 | Onboarding dotazník | F1 |
Business rules
- OAuth first: Apple ID, Google, Facebook jako preferované metody
- Biometrika: Face ID / Touch ID nabídnuta po prvním login
- Offline wallet: QR kódy dostupné bez internetu
- Session: persistent login (30 dnů refresh token)
- GDPR: consent management, account deletion, data export
Otevřené otázky
| Kód | Otázka | Priorita |
|---|---|---|
| OQ-02-01 | Email editace po registraci | Medium |
| OQ-02-02 | Sdílení = kopie vs. převod | High |
| OQ-02-03 | Guest → registrace migration | High |
| OQ-02-04 | Tablet layout | Medium |
| OQ-02-05 | Dark mode v MVP? | High |
| OQ-02-06 | Onboarding timing (po registraci vs. po nákupu) | Medium |
Detailní specifikace (Plné znění PRD)
PRD-02: Klientská zóna — Colosseum MA
| Verze | 1.0 |
| Datum | 2026-02-23 |
| Stav | Draft |
| Vlastník | Symbio — Analýza & Design |
1. Přehled a cíle
Klientská zóna je „domov" přihlášeného uživatele v aplikaci — pokrývá registraci, přihlášení, správu účtu, offline wallet se vstupenkami, historii objednávek a sdílení vstupenek. Jde o fundament, na kterém staví personalizace (F1), věrnostní program (F1) i další rozvojové funkce.
Mobilní aplikace oproti webu přináší trvale přihlášeného uživatele s biometrickým přístupem, offline dostupnost vstupenek (QR wallet) a push notifikace — tedy výrazně silnější vztah se zákazníkem.
Cíle
| Cíl | Metrika | Fáze |
|---|---|---|
| Maximalizovat počet registrovaných uživatelů | Registrace / MAU | MVP |
| Minimalizovat bariéru přihlášení | Čas do prvního přihlášení, OAuth adoption rate | MVP |
| Zvýšit podíl nákupů přihlášených uživatelů | Poměr logged-in vs. guest nákupů | MVP |
| Zajistit offline dostupnost vstupenek | % vstupenek dostupných offline | MVP |
| Zvýšit sdílení vstupenek | Počet sdílení per nákup | MVP |
Vazba na další PRD
- PRD-01 (Nákup vstupenek): Late login v checkout flow (S4/S5 z S2). Vstupenky po nákupu v walletu (P7).
- PRD-03 (Notifikace): Permission dialog (X12) se spouští po registraci nebo z onboardingu. Nastavení notifikací přístupné z účtu (P9).
- PRD-04 (Věrnostní program): Sekce věrnost v účtu (P9 → P10). Body a odměny zobrazené v profilu.
- PRD-06 (Obsah a podpora): Podpora přístupná z účtu (P9 → S15).
2. User stories
MVP
| ID | Role | Story | Akceptační kritéria |
|---|---|---|---|
| US-02-01 | Nový uživatel | Chci se zaregistrovat rychle pomocí Apple/Google/Facebook účtu | OAuth registrace na 1–2 tapy. Po autorizaci doplnění povinných údajů (telefon, GDPR souhlas). |
| US-02-02 | Nový uživatel | Chci se zaregistrovat pomocí emailu a hesla | Formulář: jméno, příjmení, email, telefon, heslo, GDPR souhlas, newsletter opt-in. Inline validace. |
| US-02-03 | Registrovaný uživatel | Chci se přihlásit pomocí biometriky | Po prvním přihlášení nabídnout Face ID / Touch ID. Biometrika jako primary login metoda. |
| US-02-04 | Registrovaný uživatel | Chci vidět své vstupenky v offline walletu | P7 zobrazuje QR vstupenky dostupné i bez připojení. Timeline: nadcházející → minulé. |
| US-02-05 | Registrovaný uživatel | Chci sdílet vstupenku s přítelem | Detail vstupenky (S8) → „Sdílet" CTA → deep link přes systémový share sheet. Příjemce dostane odkaz ke stažení vstupenky. |
| US-02-06 | Registrovaný uživatel | Chci vidět historii svých objednávek | S7 zobrazuje seznam objednávek se statusy (zaplaceno/rezervováno/čeká/zrušeno). |
| US-02-07 | Registrovaný uživatel | Chci upravit své osobní údaje | S14: editace jména, kontaktů, fakturační adresy, hesla, GDPR nastavení. |
| US-02-08 | Registrovaný uživatel | Chci smazat svůj účet | X14: potvrzovací dialog s informacemi o důsledcích (GDPR). Nevratná akce po potvrzení. |
| US-02-09 | Nový uživatel | Chci vidět, co aplikace nabízí, při prvním spuštění | X20: 3–4 welcome slides s value propositions před přihlášením/registrací. |
| US-02-10 | Registrovaný uživatel | Chci přidat vstupenku do systémového kalendáře | S8 → „Přidat do kalendáře" → systémový kalendář s datem, místem a časem akce (X16 potvrzení). |
| US-02-11 | Registrovaný uživatel | Chci obnovit zapomenuté heslo | S4 → „Zapomenuté heslo" → email s reset linkem. |
F1
| ID | Role | Story | Akceptační kritéria |
|---|---|---|---|
| US-02-12 | Nový uživatel | Chci si při registraci nastavit preference | Onboarding dotazník (S6): oblíbené žánry, lokalita, oblíbené scény/pořadatelé, notifikace permission. Skip option. |
| US-02-13 | Registrovaný uživatel | Chci vidět sekci věrnosti v účtu | P9 rozšířen o menu položku „Colosseum Premium" → P10 (viz PRD-04). |
| US-02-14 | Registrovaný uživatel | Chci mít přístup k watchdogům a notifikacím z účtu | P9 rozšířen o „Moje hlídače" → S10 a „Notifikace" → S9 (viz PRD-03). |
F2+
| ID | Role | Story | Akceptační kritéria |
|---|---|---|---|
| US-02-15 | Registrovaný uživatel | Chci používat aplikaci ve svém jazyce | Vícejazyčnost — přepnutí jazyka v nastavení (scope TBD). |
3. Funkční specifikace
3.1 MVP scope
S4 — Přihlášení
Klíčové prvky:
- OAuth first layout — Apple, Google, Facebook jako prominentní tlačítka nahoře
- Email + heslo form — pod OAuth, s „zapamatovat si mě" toggle
- Zapomenuté heslo — odkaz pod heslem → reset flow (email)
- Biometrics toggle — po prvním úspěšném přihlášení nabídnout Face ID / Touch ID
- Late login varianta — v checkout flow (z S2): zkrácená verze bez welcome textu, s „Pokračovat jako host" CTA
- Přepnutí na registraci — „Nemáte účet? Zaregistrujte se" → S5
Interakce:
- Tap OAuth → nativní autorizační dialog → úspěch / chyba
- Tap „Přihlásit se" → validace → úspěch (redirect zpět) / chyba (inline error)
- Biometrics prompt → automatický login po potvrzení
S5 — Registrace
Klíčové prvky:
- OAuth registrace — Apple, Google, Facebook (preferované)
- Email + heslo formulář:
- Jméno + příjmení (povinné)
- Email (povinný, validace formátu + unikátnost)
- Telefon (povinný, validace formátu)
- Heslo (povinné, min. 8 znaků, síla indikátor)
- GDPR souhlas — povinný checkbox s odkazem na podmínky
- Newsletter opt-in — volitelný checkbox (předvyplněný)
- CTA „Zaregistrovat se"
Business rules:
- OAuth registrace: po autorizaci doplnit chybějící povinné údaje (telefon, GDPR)
- Email musí být unikátní — pokud existuje → „Tento email je již registrován. Přihlásit se?"
- Po úspěšné registraci → redirect na předchozí screen (checkout, home) nebo X20 → onboarding (F1: S6)
P7 — Moje vstupenky / Wallet
Hlavní tab „Vstupenky" v bottom navigation.
Klíčové prvky:
- Timeline layout: nadcházející akce nahoře, minulé dole (toggle „Zobrazit minulé")
- Ticket karta: event thumbnail, název, datum + čas, místo, sedadlo (pokud adresné), QR kód preview, status badge
- Offline indikátor — zelená tečka „Dostupné offline" u každé vstupenky
- Apple/Google Wallet CTA — „Přidat do Apple Wallet" / „Přidat do Google Wallet"
- Sdílení CTA — ikona sdílení na kartě
- Empty state (X7) — pokud žádné vstupenky: ilustrace + „Zatím nemáte žádné vstupenky" + CTA „Prozkoumat akce"
- Pull-to-refresh pro synchronizaci
Interakce:
- Tap na kartu → S8 (Detail vstupenky)
- Long press → quick actions (sdílet, přidat do kalendáře)
- Offline: vstupenky dostupné i bez připojení (QR lokálně cachované)
S8 — Detail vstupenky
Plný detail jedné vstupenky.
Klíčové prvky:
- QR kód — velký, čitelný, funguje offline. Jas obrazovky automaticky zvýšen.
- Event info: název, datum + čas, pořadatel
- Venue info: název sálu, adresa
- Sedadlo: řada, číslo, kategorie (pokud adresné)
- Cenová kategorie — typ vstupného
- Akce:
- „Sdílet vstupenku" → systémový share sheet s deep linkem (X17 potvrzení)
- „Přidat do kalendáře" → systémový kalendář (X16 potvrzení)
- „Přidat do Apple/Google Wallet"
- Barcode fallback — pokud QR nelze zobrazit, zobrazit čárový kód nebo číslo vstupenky
P9 — Uživatelský účet (hub)
Tab „Profil" v bottom navigation.
Klíčové prvky:
- Profilová karta — avatar (iniciály nebo fotka), jméno, email
- Menu navigace:
- Moje objednávky → S7
- Osobní údaje → S14
- Změna hesla → S14 (sekce)
- Podpora → S15
- GDPR nastavení → inline nebo S14
- Biometrics toggle — Face ID / Touch ID on/off
- F1 položky (coming soon nebo skryté): Věrnostní program, Notifikace, Moje hlídače, Onboarding
- Odhlášení — CTA dole
- Smazání účtu — odkaz (červený) → X14
- App verze — v patičce
Interakce:
- Tap na menu položku → navigace na příslušnou obrazovku
- Nepřihlášený uživatel → zobrazí se „Přihlásit se / Zaregistrovat" místo profilu
S7 — Historie objednávek
Klíčové prvky:
- Status legenda: barevné badges (zaplaceno = zelená, rezervováno = žlutá, čeká na platbu = oranžová, zrušeno = červená)
- Seznam objednávek: číslo, event info, datum, status badge, celková cena
- Toggle „Zobrazit zrušené" — defaultně skryté
- Detail objednávky inline — expand na tap: jednotlivé vstupenky, platební metoda, datum platby
Empty state (X8): „Zatím nemáte žádné objednávky" + CTA „Najít akci"
S14 — Editace profilu
Klíčové prvky:
- Osobní údaje: jméno, příjmení, email (readonly?), telefon
- Fakturační adresa: volitelná, collapsible
- Změna hesla: stávající heslo + nové heslo + potvrzení
- GDPR nastavení: marketing souhlas toggle, odkaz na podmínky
- Smazání účtu: odkaz → X14
- CTA „Uložit změny" — disabled dokud nejsou změny
Interakce:
- Inline validace per field
- Úspěch → success toast „Údaje uloženy"
- Chyba → inline error messages
X7 — Empty state — Vstupenky
- Ilustrace prázdného walletu
- „Zatím nemáte žádné vstupenky"
- CTA: „Prozkoumat akce" → P1
X8 — Empty state — Objednávky
- Ilustrace
- „Zatím nemáte žádné objednávky"
- CTA: „Najít akci" → P1
X10 — Splash / Loading
- App launch screen s Colosseum logem
- Skeleton loading states pro každý tab (P1, P7, P9)
- Max 2s zobrazení splash, pak transition na obsah
X11 — Offline režim
- Indikátor — persistent banner nahoře: „Jste offline — některé funkce jsou omezené"
- Co funguje offline: wallet (P7, S8) s QR kódy, cachované detaily akcí
- Co nefunguje: nákup, search, refresh feedu, sdílení
- Auto-recovery — banner zmizí po obnovení připojení
X14 — Smazání účtu
- Potvrzovací dialog — „Opravdu chcete smazat účet?"
- GDPR info — co se stane s daty (smazání do 30 dnů)
- Důsledky: ztráta vstupenek, historie, bodů
- Dvojité potvrzení — zadání hesla nebo emailu pro potvrzení
- CTA: „Smazat účet" (červená) / „Zrušit"
X15 — GDPR souhlas
- Detail souhlasu s obchodními podmínkami
- Opt-out marketing komunikace
- Odkaz na plné podmínky (webview)
- „Souhlasím" / „Nesouhlasím" (nesouhlasím = nelze dokončit registraci)
X16 — Přidáno do kalendáře
- Toast / bottom sheet potvrzení
- „Akce přidána do kalendáře"
- Dismiss po 3s nebo tap
X17 — Vstupenka sdílena
- Toast / bottom sheet potvrzení
- „Vstupenka sdílena" + deep link preview
- Dismiss po 3s nebo tap
X19 — Force update
- Full-screen blocker (nelze obejít)
- „Je dostupná nová verze aplikace"
- Vysvětlení proč (bezpečnost, kompatibilita)
- CTA: „Aktualizovat" → App Store / Play Store
- Žádná „Přeskočit" možnost
X20 — Welcome slides
- 3–4 intro obrazovky při prvním spuštění
- Slide 1: „Vstupenky vždy po ruce" (wallet)
- Slide 2: „Nákup na pár tapů" (Apple Pay, snadný checkout)
- Slide 3: „Nenechte si nic ujít" (notifikace, personalizace)
- Slide 4 (volitelný): „Přihlaste se a začněte" (login CTA)
- Skip button na každém slidu
- Dot indicator pro pozici
- CTA na posledním: „Přihlásit se" / „Prozkoumat" (skip login)
3.2 F1 rozšíření
S6 — Onboarding (dotazník)
Zobrazuje se po registraci (nebo z účtu pro pozdější nastavení).
Klíčové prvky:
- 3–4 kroky s progress indicator:
- Oblíbené žánry — multi-select chips (Musical, Divadlo, Hudba, Festival, Kino, Děti, Sport…)
- Lokalita — výběr města/měst (Praha, Brno, Ostrava…)
- Oblíbené scény/pořadatelé — searchable multi-select (top pořadatelé)
- Notifikace — permission prompt (custom pre-prompt → systémový dialog)
- Skip option na každém kroku
- „Dokončit" CTA na posledním kroku
- Data ukládána do profilu → využívá personalizace (PRD-03)
Rozšíření P9:
- Nové menu položky: „Colosseum Premium" (→ P10), „Notifikace" (→ S9), „Moje hlídače" (→ S10)
3.3 F2+ rozšíření
- Vícejazyčnost — přepnutí jazyka v nastavení (scope závisí na počtu jazyků)
- Geolokační personalizace — automatická detekce města, preference v profilu
3.4 K diskusi
— (žádné TBD položky specifické pro klientskou zónu)
4. Business rules
| Pravidlo | Popis |
|---|---|
| Registrace povinné údaje | Jméno, příjmení, email, telefon, GDPR souhlas. OAuth registrace: provider dodá jméno + email, doplnit telefon a GDPR. |
| Session management | Persistent login — uživatel zůstává přihlášen. Expirace refresh tokenu: 30 dnů (konfigurovatelné). |
| Biometrika | Nabídnuta po prvním úspěšném přihlášení. Uživatel může zapnout/vypnout v P9. Fallback na heslo. |
| Offline wallet | QR kódy vstupenek staženy a cachovány lokálně. Dostupné i bez internetu. Synchronizace při obnovení připojení. |
| Sdílení vstupenek | Deep link s tokenem → příjemce otevře v app (pokud má) nebo v prohlížeči. Sdílená vstupenka = kopie, ne převod (obě strany mají přístup). |
| Smazání účtu | GDPR compliance: žádost o smazání → data smazána do 30 dnů. Aktivní vstupenky zůstávají platné do data akce. |
| Force update | Vynuceno při breaking API changes. Verze kontrolována při app startu. |
| Guest omezení | Guest (nepřihlášený) může prohlížet a nakupovat. Nemá wallet (vstupenky na email), nemá historii, nemá personalizaci. |
| Apple/Google Wallet | Integrace přes PassKit (iOS) / Google Pay API (Android). Vstupenka jako boarding pass s QR, datem, místem. |
5. Data model
Klíčové entity
| Entita | Zdroj | Klíčové atributy |
|---|---|---|
| UserAccount | API | id, first_name, last_name, email, phone, auth_provider (email/apple/google/facebook), biometrics_enabled, created_at |
| UserProfile | API + lokální | avatar_url, billing_address, gdpr_consent, newsletter_opt_in, preferred_genres[], preferred_cities[], favorite_organizers[] |
| Ticket | API + lokální cache | id, order_id, event_date_id, seat (row, number, category), qr_code, qr_data (cached offline), status (active/used/expired/shared) |
| Order | API | id, user_id, items[], payment_method, status, total, created_at |
| Session | Lokální | access_token, refresh_token, expires_at, biometrics_key |
| OnboardingPreferences | API | genres[], cities[], favorite_organizers[], completed_at |
Lokální stav
- Session tokens (secure storage: Keychain / Keystore)
- Cached QR kódy (encrypted local storage)
- Onboarding completion flag
- Welcome slides shown flag
- Biometrics enrollment flag
6. Edge cases a error states
| Scénář | Řešení |
|---|---|
| OAuth provider nedostupný | Fallback na email+heslo login. Toast „Přihlášení přes [provider] momentálně nefunguje". |
| Duplicitní email při registraci | Inline error: „Tento email je již registrován" + CTA „Přihlásit se". |
| Biometrics selhání (3x) | Fallback na zadání hesla. |
| Expired refresh token | Tichý redirect na S4 (přihlášení) s vysvětlením „Session vypršela, přihlaste se znovu". |
| Force update při otevření app | X19 blocker — nelze obejít. Offline: zobrazí se při dalším spuštění s připojením. |
| Sdílení vstupenky — příjemce nemá app | Deep link otevře web fallback s QR kódem a CTA „Stáhnout app". |
| Offline + expirovaný QR | QR kód obsahuje data pro offline validaci (podepsaný payload). Expirace řešena na straně scaneru, ne v app. |
| Smazání účtu s aktivními vstupenkami | Warning: „Máte X aktivních vstupenek. Po smazání účtu budou stále platné, ale nebudete je moci spravovat." |
| Změna emailu | Ověření nového emailu přes potvrzovací link. Starý email platný do potvrzení nového. |
7. Screen mapping
| Screen ID | Název | Typ | Fáze | Odhad |
|---|---|---|---|---|
| P7 | Moje vstupenky / Wallet | Primární | MVP | 8 h |
| P9 | Uživatelský účet (hub) | Primární | MVP | 8 h |
| S4 | Přihlášení | Sekundární | MVP | 4 h |
| S5 | Registrace | Sekundární | MVP | 4 h |
| S7 | Historie objednávek | Sekundární | MVP | 4 h |
| S8 | Detail vstupenky | Sekundární | MVP | 4 h |
| S14 | Editace profilu | Sekundární | MVP | 4 h |
| S15 | Podpora / Kontakt | Sekundární | MVP | 4 h |
| X7 | Empty state — Vstupenky | Podpůrná | MVP | 1 h |
| X8 | Empty state — Objednávky | Podpůrná | MVP | 1 h |
| X10 | Splash / Loading | Podpůrná | MVP | 1 h |
| X11 | Offline režim | Podpůrná | MVP | 1 h |
| X14 | Smazání účtu | Podpůrná | MVP | 1 h |
| X15 | GDPR souhlas | Podpůrná | MVP | 1 h |
| X16 | Přidáno do kalendáře | Podpůrná | MVP | 1 h |
| X17 | Vstupenka sdílena | Podpůrná | MVP | 1 h |
| X19 | Force update | Podpůrná | MVP | 1 h |
| X20 | Welcome slides | Podpůrná | MVP | 1 h |
| S6 | Onboarding (dotazník) | Sekundární | F1 | 4 h |
Celkem PRD-02: MVP 18 obrazovek (52 h) + F1 1 obrazovka (4 h) = 56 h čistý návrh
Poznámka: S15 (Podpora/Kontakt) je detailně specifikována v PRD-06. Zde zahrnuta v screen mapping protože je přístupná z P9.
8. Otevřené otázky
| # | Otázka | Fáze | Dopad |
|---|---|---|---|
| OQ-02-01 | Email editace — Může uživatel změnit email po registraci? Pokud ano, jak probíhá ověření? | MVP | Ovlivňuje S14 |
| OQ-02-02 | Sdílení = kopie vs. převod — Je sdílení vstupenky kopie (obě strany mají přístup) nebo převod (odesílatel ztrácí přístup)? | MVP | Ovlivňuje S8, X17 a business rules |
| OQ-02-03 | Guest → registrace migration — Pokud guest nakoupí a pak se zaregistruje, propojí se jeho objednávky s novým účtem? | MVP | Ovlivňuje backend i UX flow |
| OQ-02-04 | Tablet layout — Řešíme tablet verzi klientské zóny? | MVP | +20–30 % na adaptivní layouty |
| OQ-02-05 | Dark mode — Je dark mode součástí MVP? | MVP | Ovlivňuje DS, +8–12h na validaci |
| OQ-02-06 | Onboarding timing — Zobrazuje se S6 ihned po registraci, nebo až po prvním nákupu? | F1 | Ovlivňuje conversion funnel |