Files
fotospiel-app/docs/prp/tenant-app-specs/pages-ui.md

7.6 KiB

Seiten und UI-Design für die Tenant Admin App

Status

  • Version: 1.0.0 (2025-09-13)
  • Fokus: Mobile-First Design mit Framework7 v8+ für native iOS/Android-Look & Feel.

Allgemeines UI-Prinzipien

  • Framework7-Komponenten: Toolbar (Navigation), List (Datenlisten), Card (Karten für Events/Photos), Modal (Details/Actions), Pull-to-Refresh (Sync), Infinite-Scroll (Pagination).
  • Theming: System-Dark-Mode-Support; Tenant-spezifische Farben (Primary/Secondary aus Settings).
  • Navigation: Tabbar unten (Dashboard, Events, Photos, Settings); Side-Menu für Profile/Logout.
  • Offline-Indikator: Banner oben ("Offline-Modus: Änderungen werden synchronisiert").
  • Loading: Spinner für API-Calls; Skeleton-Screens für Listen.
  • i18n: Rechts-nach-Links für de/en; Icons von Framework7-Icons (Material).

Benötigte Seiten und Komponenten

1. Auth-Seiten (OAuth-Flow)

Login-Seite

  • Zweck: OAuth-Authorization (PKCE-Challenge generieren, Redirect zu /oauth/authorize).
  • Layout:
    • Zentrale Card mit Logo, App-Name, "Mit Google/Email anmelden"-Buttons.
    • Footer: "Noch kein Account? Registrieren" (Redirect zu Register).
  • Framework7-Komponenten:
    • f7-page mit f7-navbar (Titel: "Willkommen zur Event Photo App").
    • f7-block für Content; f7-button (large, filled) für OAuth-Start.
    • f7-preloader während Redirect.
  • Wireframe-Beschreibung:
    [Navbar: Logo | Willkommen]
    [Block: App-Beschreibung]
    [Button: Anmelden mit Google]
    [Button: Anmelden mit Email]
    [Footer: Registrieren-Link]
    
  • API: Kein direkter Call; Browser-Redirect zu Backend.

Register-Seite (ähnlich Login)

  • Unterschiede: Form für Email/Password + Terms-Checkbox; Submit zu /oauth/register.

2. Dashboard (Home)

  • Zweck: Übersicht über aktive Events, Stats, schnelle Actions.
  • Layout:
    • Top: Willkommens-Banner mit Tenant-Name, Credit-Balance.
    • Stats-Cards: Aktive Events, Ungeprüfte Photos, Tasks-Fortschritt.
    • Quick-Actions: "Neues Event erstellen", "Photos moderieren".
  • Framework7-Komponenten:
    • f7-toolbar unten: Tabs (Home, Events, Photos, Settings).
    • f7-card für Stats (mit f7-icon und Zahlen).
    • f7-list für Quick-Actions (link mit Arrow).
    • f7-pull-to-refresh für Sync.
  • Wireframe-Beschreibung:
    [Toolbar: Home | Events | Photos | Settings]
    [Banner: Hallo [Name]! 3 Credits übrig]
    [Row: Card(Events: 2 aktiv) | Card(Photos: 15 neu) | Card(Tasks: 80%)]
    [List: > Neues Event | > Moderieren | > Einstellungen]
    
  • API: GET /tenant/dashboard (Stats); GET /tenant/credits/balance.

3. Events-Übersicht

  • Zweck: Liste aller Events mit Filter (aktiv/archiviert), Suche.
  • Layout:
    • Navbar: Suche-Feld, Filter-Button (Dropdown: Status, Datum).
    • Infinite-Scroll-Liste von Event-Cards (Titel, Datum, Status-Tag, Photo-Count).
    • FAB: "+" für Neues Event.
  • Framework7-Komponenten:
    • f7-searchbar in Navbar.
    • f7-list mit f7-list-item (Thumbnail, Title, Subtitle: Datum, Badge: Status).
    • f7-fab (floating action button).
    • f7-segmented für Filter-Tabs.
  • Wireframe-Beschreibung:
    [Navbar: Suche | Filter ▼]
    [Segmented: Alle | Aktiv | Archiviert]
    [List-Item: [Thumb] Hochzeit Müller (15.09.) [Tag: Aktiv] 45 Photos]
    [List-Item: ...]
    [+ FAB unten rechts]
    
  • API: GET /tenant/events?page=1&status=active (paginiert).

4. Event-Details-Seite

  • Zweck: Vollständige Event-Info, Edit-Modus, zugehörige Tasks/Photos.
  • Layout:
    • Tabs: Details, Tasks, Photos, Members, Stats.
    • Edit-Button (öffnet Modal für Update).
    • QR-Code-Section für Join-Link.
  • Framework7-Komponenten:
    • f7-tabs mit f7-tab für Subseiten.
    • f7-card für Details (Datum, Ort, Beschreibung).
    • f7-qrcode (via Plugin) für Share-Link.
    • f7-button (edit-icon) → f7-modal mit Form.
  • Wireframe-Beschreibung:
    [Navbar: Event-Titel | Edit-Icon]
    [Tabs: Details | Tasks | Photos | Members | Stats]
    [Details-Tab: Card(Datum: 15.09., Ort: Berlin) | QR-Code: Scan zum Beitreten]
    [Tasks-Tab: Checklist (Drag-to-reorder)]
    [Photos-Tab: Grid von Thumbs]
    
  • API: GET /tenant/events/{id}; PATCH /tenant/events/{id} (ETag).
  • Zweck: Moderation von Photos; Grid-View mit Lightbox.
  • Layout:
    • Filter: Neu/Ungeprüft/Featured; Sortierung (Datum, Likes).
    • Masonry-Grid von Photo-Cards (Thumb, Timestamp, Like-Count).
    • Long-Press: Multi-Select für Bulk-Actions (Approve/Delete).
  • Framework7-Komponenten:
    • f7-photoset oder custom Grid mit f7-card (small).
    • f7-lightbox für Fullscreen-View.
    • f7-checkbox für Multi-Select.
    • f7-popover für Actions (Approve, Feature, Delete).
  • Wireframe-Beschreibung:
    [Navbar: Photos (Event) | Filter ▼]
    [Grid: 3xN Cards [Thumb | Zeit | Likes] [Checkbox]]
    [Lightbox: Fullscreen Photo mit Zoom, Actions]
    [Bottom-Bar (bei Select): Approve All | Delete Selected]
    
  • API: GET /tenant/events/{id}/photos; PATCH /tenant/photos/{id} (Batch).

6. Members-Seite

  • Zweck: Verwalten von Event-Mitgliedern (Hinzufügen per Email, Rollen).
  • Layout: Liste von User-Cards (Name, Rolle, Joined-At); Invite-Button.
  • Framework7-Komponenten:
    • f7-list mit f7-list-item (Avatar, Name, Badge: Rolle).
    • f7-modal für Invite-Form (Email-Input, Send-Button).
  • Wireframe-Beschreibung:
    [Navbar: Members | + Invite]
    [List: Anna (Admin) | Ben (Member) | ...]
    [Modal: Email eingeben | Rolle wählen | Senden]
    
  • API: GET /tenant/events/{id}/members; POST /tenant/events/{id}/members.

7. Tasks-Seite

  • Zweck: Bibliothek verwalten, zu Events zuweisen, Fortschritt tracken.
  • Layout: Tabs: Meine Tasks, Bibliothek; Drag-and-Drop zwischen Listen.
  • Framework7-Komponenten:
    • f7-tabs; f7-sortable-list für Drag-and-Drop.
    • f7-checkbox für Zuweisung.
  • Wireframe-Beschreibung:
    [Tabs: Events | Bibliothek]
    [Sortable List: Task1 [Checkbox] | Task2 ...]
    [Drag: Von Bibliothek zu Event-Liste]
    
  • API: GET /tenant/tasks; POST /tenant/events/{id}/tasks.

8. Settings-Seite

  • Zweck: Tenant-Einstellungen bearbeiten (Theme, Limits, Legal).
  • Layout: Accordion-Sections (Theme, Notifications, Legal, App).
  • Framework7-Komponenten:
    • f7-accordion für Sections.
    • f7-toggle, f7-select, f7-color-picker für Optionen.
  • Wireframe-Beschreibung:
    [Navbar: Einstellungen]
    [Accordion: Theme ▼ [Color-Picker] | Notifications [Toggle Push]]
    [Legal: Impressum-Link bearbeiten]
    [App: Logout-Button]
    
  • API: GET/PATCH /tenant/settings. Details in settings-config.md.

9. Billing-Seite

  • Zweck: Credit-Balance anzeigen, Packs kaufen.
  • Layout: Balance-Card; Liste von Purchase-Options; Ledger-Historie.
  • Framework7-Komponenten:
    • f7-card für Balance (mit Warning bei niedrig).
    • f7-list für Packs (Preis, Events-Count, Buy-Button).
    • f7-infinite-scroll für Ledger.
  • Wireframe-Beschreibung:
    [Card: Balance: 3 Credits | [Warning: Niedrig!]]
    [List: 5 Events (29€) [Buy] | 10 Events (49€) [Buy]]
    [Ledger: Kauf 29.09. +5 | Event-Erstellung -1]
    
  • API: GET /tenant/credits/balance; POST /tenant/purchases/intent.

Zusätzliche UI-Elemente

  • Modals: Confirm-Delete, Photo-Preview, Error-Alerts.
  • Notifications: f7-notification für Sync-Erfolg, neue Photos.
  • Offline-Handling: f7-block mit "Syncing..." Progress-Bar.
  • Accessibility: ARIA-Labels für alle interaktiven Elemente; VoiceOver-Support.

Für Capacitor-spezifische UI-Anpassungen siehe capacitor-setup.md.