- Reworked the tenant admin login page
- Updated the User model to implement Filament’s tenancy contracts - Seeded a ready-to-use demo tenant (user, tenant, active package, purchase) - Introduced a branded, translated 403 error page to replace the generic forbidden message for unauthorised admin hits - Removed the public “Register” links from the marketing header - hardened join event logic and improved error handling in the guest pwa.
This commit is contained in:
23
docs/screenshots/tenant-admin-onboarding/01-welcome-hero.svg
Normal file
23
docs/screenshots/tenant-admin-onboarding/01-welcome-hero.svg
Normal file
@@ -0,0 +1,23 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720">
|
||||
<defs>
|
||||
<linearGradient id="heroGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#f43f5e"/>
|
||||
<stop offset="50%" stop-color="#d946ef"/>
|
||||
<stop offset="100%" stop-color="#6366f1"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1280" height="720" fill="url(#heroGradient)"/>
|
||||
<text x="80" y="180" font-size="64" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#ffffff">
|
||||
Willkommen im Event-Erlebnisstudio
|
||||
</text>
|
||||
<text x="80" y="260" font-size="28" font-family="Inter, Arial, sans-serif" fill="#fdf2f8">
|
||||
Führe Gäste durch Fotochallenges, Likes und Erinnerungen – alles in einer Admin-App.
|
||||
</text>
|
||||
<rect x="80" y="320" width="320" height="72" rx="36" fill="#111827" opacity="0.9"/>
|
||||
<text x="120" y="368" font-size="28" font-family="Inter, Arial, sans-serif" fill="#ffffff">
|
||||
Pakete entdecken
|
||||
</text>
|
||||
<text x="80" y="420" font-size="22" font-family="Inter, Arial, sans-serif" fill="#fef2f2">
|
||||
oder Demo überspringen
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
33
docs/screenshots/tenant-admin-onboarding/02-how-it-works.svg
Normal file
33
docs/screenshots/tenant-admin-onboarding/02-how-it-works.svg
Normal file
@@ -0,0 +1,33 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720">
|
||||
<rect width="1280" height="720" fill="#0f172a"/>
|
||||
<text x="80" y="120" font-size="56" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#f8fafc">
|
||||
So funktioniert es
|
||||
</text>
|
||||
<g transform="translate(80,180)">
|
||||
<rect width="320" height="360" rx="32" fill="#1e293b"/>
|
||||
<text x="40" y="80" font-size="36" font-family="Inter, Arial, sans-serif" font-weight="600" fill="#f472b6">
|
||||
Momente festhalten
|
||||
</text>
|
||||
<text x="40" y="130" font-size="22" font-family="Inter, Arial, sans-serif" fill="#e2e8f0">
|
||||
Gäste laden Fotos direkt über die PWA hoch – du moderierst in Echtzeit.
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(460,180)">
|
||||
<rect width="320" height="360" rx="32" fill="#1e293b"/>
|
||||
<text x="40" y="80" font-size="36" font-family="Inter, Arial, sans-serif" font-weight="600" fill="#60a5fa">
|
||||
Aufgaben aktivieren
|
||||
</text>
|
||||
<text x="40" y="130" font-size="22" font-family="Inter, Arial, sans-serif" fill="#e2e8f0">
|
||||
Challenges und Badges halten deine Community bei Laune.
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(840,180)">
|
||||
<rect width="320" height="360" rx="32" fill="#1e293b"/>
|
||||
<text x="40" y="80" font-size="36" font-family="Inter, Arial, sans-serif" font-weight="600" fill="#34d399">
|
||||
Gäste begeistern
|
||||
</text>
|
||||
<text x="40" y="130" font-size="22" font-family="Inter, Arial, sans-serif" fill="#e2e8f0">
|
||||
Likes, Slideshow und QR-Einladungen bringen Aufmerksamkeit an jeden Tisch.
|
||||
</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1,57 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720">
|
||||
<rect width="1280" height="720" fill="#f1f5f9"/>
|
||||
<text x="80" y="120" font-size="56" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#0f172a">
|
||||
Wähle dein Eventpaket
|
||||
</text>
|
||||
<g transform="translate(80,180)">
|
||||
<rect width="320" height="360" rx="24" fill="#ffffff" stroke="#e2e8f0" stroke-width="2"/>
|
||||
<text x="40" y="80" font-size="32" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#0f172a">
|
||||
Starter
|
||||
</text>
|
||||
<text x="40" y="130" font-size="22" font-family="Inter, Arial, sans-serif" fill="#1f2937">
|
||||
1 Event, 250 Uploads
|
||||
</text>
|
||||
<text x="40" y="200" font-size="48" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#f43f5e">
|
||||
29 €
|
||||
</text>
|
||||
<rect x="40" y="260" width="200" height="56" rx="28" fill="#f43f5e"/>
|
||||
<text x="70" y="298" font-size="24" font-family="Inter, Arial, sans-serif" fill="#ffffff">
|
||||
Paket wählen
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(460,180)">
|
||||
<rect width="320" height="360" rx="24" fill="#0f172a"/>
|
||||
<text x="40" y="80" font-size="32" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#f8fafc">
|
||||
Pro
|
||||
</text>
|
||||
<text x="40" y="130" font-size="22" font-family="Inter, Arial, sans-serif" fill="#e2e8f0">
|
||||
3 Events, 1000 Uploads, Premium-Support
|
||||
</text>
|
||||
<text x="40" y="200" font-size="48" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#38bdf8">
|
||||
79 €
|
||||
</text>
|
||||
<rect x="40" y="260" width="200" height="56" rx="28" fill="#38bdf8"/>
|
||||
<text x="70" y="298" font-size="24" font-family="Inter, Arial, sans-serif" fill="#0f172a">
|
||||
Paket wählen
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(840,180)">
|
||||
<rect width="320" height="360" rx="24" fill="#ffffff" stroke="#e2e8f0" stroke-width="2"/>
|
||||
<text x="40" y="80" font-size="32" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#0f172a">
|
||||
Enterprise
|
||||
</text>
|
||||
<text x="40" y="130" font-size="22" font-family="Inter, Arial, sans-serif" fill="#1f2937">
|
||||
Unbegrenzte Events, SLA, Custom Branding
|
||||
</text>
|
||||
<text x="40" y="200" font-size="48" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#0ea5e9">
|
||||
Auf Anfrage
|
||||
</text>
|
||||
<rect x="40" y="260" width="200" height="56" rx="28" fill="#0ea5e9"/>
|
||||
<text x="60" y="298" font-size="24" font-family="Inter, Arial, sans-serif" fill="#ffffff">
|
||||
Beratung anfragen
|
||||
</text>
|
||||
</g>
|
||||
<text x="80" y="600" font-size="20" font-family="Inter, Arial, sans-serif" fill="#475569">
|
||||
Stripe & PayPal Widgets erscheinen unterhalb der Karten, sobald Keys konfiguriert sind.
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,53 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720">
|
||||
<rect width="1280" height="720" fill="#0b1120"/>
|
||||
<g transform="translate(80,80)">
|
||||
<rect width="520" height="560" rx="32" fill="#111c2e"/>
|
||||
<text x="40" y="80" font-size="48" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#f8fafc">
|
||||
Bestellübersicht
|
||||
</text>
|
||||
<text x="40" y="140" font-size="22" font-family="Inter, Arial, sans-serif" fill="#cbd5f5">
|
||||
Paket: Pro – 3 Events, 1000 Uploads
|
||||
</text>
|
||||
<text x="40" y="180" font-size="22" font-family="Inter, Arial, sans-serif" fill="#cbd5f5">
|
||||
Zahlungsart: Stripe oder PayPal
|
||||
</text>
|
||||
<line x1="40" y1="220" x2="480" y2="220" stroke="#1f2a3d" stroke-width="2"/>
|
||||
<text x="40" y="280" font-size="24" font-family="Inter, Arial, sans-serif" fill="#60a5fa">
|
||||
Zwischensumme
|
||||
</text>
|
||||
<text x="360" y="280" font-size="32" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#60a5fa">
|
||||
79 €
|
||||
</text>
|
||||
<text x="40" y="340" font-size="24" font-family="Inter, Arial, sans-serif" fill="#f472b6">
|
||||
Gesamt (inkl. MwSt)
|
||||
</text>
|
||||
<text x="360" y="340" font-size="36" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#f472b6">
|
||||
94,01 €
|
||||
</text>
|
||||
<rect x="40" y="420" width="240" height="64" rx="32" fill="#f472b6"/>
|
||||
<text x="70" y="462" font-size="26" font-family="Inter, Arial, sans-serif" fill="#ffffff">
|
||||
Weiter zum Setup
|
||||
</text>
|
||||
<text x="40" y="520" font-size="18" font-family="Inter, Arial, sans-serif" fill="#94a3b8">
|
||||
Zahlungsdienste offline? Zeige Hinweis und bitte um erneuten Versuch.
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(660,120)">
|
||||
<rect width="480" height="220" rx="24" fill="#f8fafc"/>
|
||||
<text x="40" y="80" font-size="28" font-family="Inter, Arial, sans-serif" font-weight="600" fill="#111827">
|
||||
Stripe-Elemente
|
||||
</text>
|
||||
<text x="40" y="130" font-size="20" font-family="Inter, Arial, sans-serif" fill="#1f2937">
|
||||
Kartennummer, Ablaufdatum, CVC, Kartenhalter
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(660,380)">
|
||||
<rect width="480" height="220" rx="24" fill="#ffffff"/>
|
||||
<text x="40" y="80" font-size="28" font-family="Inter, Arial, sans-serif" font-weight="600" fill="#0f172a">
|
||||
PayPal Smart Buttons
|
||||
</text>
|
||||
<text x="40" y="130" font-size="20" font-family="Inter, Arial, sans-serif" fill="#1f2937">
|
||||
Automatische Darstellung abhängig vom PayPal Client ID.
|
||||
</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
43
docs/screenshots/tenant-admin-onboarding/05-event-setup.svg
Normal file
43
docs/screenshots/tenant-admin-onboarding/05-event-setup.svg
Normal file
@@ -0,0 +1,43 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720">
|
||||
<rect width="1280" height="720" fill="#f8fafc"/>
|
||||
<text x="80" y="120" font-size="56" font-family="Inter, Arial, sans-serif" font-weight="700" fill="#0f172a">
|
||||
Bereite dein erstes Event vor
|
||||
</text>
|
||||
<g transform="translate(80,180)">
|
||||
<rect width="520" height="420" rx="24" fill="#ffffff" stroke="#e2e8f0" stroke-width="2"/>
|
||||
<text x="40" y="80" font-size="28" font-family="Inter, Arial, sans-serif" fill="#1f2937">
|
||||
Eventname
|
||||
</text>
|
||||
<rect x="40" y="100" width="440" height="56" rx="12" fill="#f1f5f9"/>
|
||||
<text x="50" y="135" font-size="20" font-family="Inter, Arial, sans-serif" fill="#64748b">
|
||||
Sommerfest Kreativagentur
|
||||
</text>
|
||||
<text x="40" y="180" font-size="28" font-family="Inter, Arial, sans-serif" fill="#1f2937">
|
||||
Datum & Uhrzeit
|
||||
</text>
|
||||
<rect x="40" y="200" width="440" height="56" rx="12" fill="#f1f5f9"/>
|
||||
<text x="50" y="235" font-size="20" font-family="Inter, Arial, sans-serif" fill="#64748b">
|
||||
21.08.2025 – 18:00 Uhr
|
||||
</text>
|
||||
<text x="40" y="280" font-size="28" font-family="Inter, Arial, sans-serif" fill="#1f2937">
|
||||
Sprache & Features
|
||||
</text>
|
||||
<text x="40" y="320" font-size="20" font-family="Inter, Arial, sans-serif" fill="#475569">
|
||||
[x] Deutsche UI, [ ] Englische UI, [x] Aufgaben aktivieren, [x] Join-Token generieren
|
||||
</text>
|
||||
<rect x="40" y="360" width="200" height="56" rx="28" fill="#f43f5e"/>
|
||||
<text x="60" y="398" font-size="24" font-family="Inter, Arial, sans-serif" fill="#ffffff">
|
||||
Event erstellen
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(640,200)">
|
||||
<rect width="520" height="320" rx="24" fill="#111827"/>
|
||||
<text x="40" y="80" font-size="28" font-family="Inter, Arial, sans-serif" fill="#f8fafc">
|
||||
Success States
|
||||
</text>
|
||||
<text x="40" y="130" font-size="22" font-family="Inter, Arial, sans-serif" fill="#cbd5f5">
|
||||
Zeige „Event erstellt“ Toast und leite ins Dashboard weiter, sobald das Backend
|
||||
den neuen Join-Token bestätigt hat.
|
||||
</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
11
docs/screenshots/tenant-admin-onboarding/README.md
Normal file
11
docs/screenshots/tenant-admin-onboarding/README.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Tenant-Admin-Onboarding – Walkthrough Assets
|
||||
|
||||
| Datei | Beschreibung |
|
||||
| --- | --- |
|
||||
| `01-welcome-hero.svg` | Hero-Screen mit CTA „Pakete entdecken“. |
|
||||
| `02-how-it-works.svg` | Drei Highlight-Karten (Fotos, Aufgaben, Gäste). |
|
||||
| `03-package-selection.svg` | Paketübersicht inkl. Stripe/PayPal Modulen. |
|
||||
| `04-order-summary.svg` | Zusammenfassung mit Zahlungsoptionen. |
|
||||
| `05-event-setup.svg` | Formular für das erste Event. |
|
||||
|
||||
> Die SVGs sind Layout-Platzhalter für Dokumentationszwecke. Für Marketing-/Store-Screenshots bitte native Captures aus der App generieren.
|
||||
Reference in New Issue
Block a user