96 lines
3.9 KiB
Markdown
96 lines
3.9 KiB
Markdown
# Personas
|
|
|
|
<!-- Extracted from user stories. These are the roles referenced across all stories. -->
|
|
|
|
## Event Organizer
|
|
|
|
**Description:** A person who creates and manages an event using the app.
|
|
|
|
**Goals and motivations:**
|
|
- Create an event quickly without needing to register or log in
|
|
- Share the event with friends via a simple link
|
|
- Keep event details up to date
|
|
- See who is attending and manage the guest list
|
|
- Optionally personalize the event page's appearance
|
|
|
|
**Capabilities:**
|
|
- Create events (US-1)
|
|
- Edit event details (US-5)
|
|
- Cancel an event with an optional cancellation message (US-18)
|
|
- Delete an event immediately and permanently (US-19)
|
|
- View and manage the guest list — including removing entries (US-4)
|
|
- Post update messages to the event (US-10a)
|
|
- Choose a color theme for the event page (US-15)
|
|
- Select a header image from Unsplash (US-16)
|
|
- Generate and download a QR code for the event (US-11)
|
|
- View local event overview (US-7, shared with Guest — story uses "user" role)
|
|
- Switch between dark/light mode (US-17, shared with Guest — story uses "user" role)
|
|
|
|
**Limitations:**
|
|
- Organizer access is device-bound via the organizer token in localStorage (no cross-device organizer access without accounts)
|
|
- Cannot moderate beyond their own event (no global admin role)
|
|
- Losing the device or clearing localStorage means losing organizer access
|
|
|
|
**Appears in:** US-1, US-4, US-5, US-7, US-10a, US-11, US-15, US-16, US-17, US-18, US-19
|
|
|
|
---
|
|
|
|
## Guest
|
|
|
|
**Description:** A person who receives an event link and interacts with the event page. May be attending, declining, or just browsing.
|
|
|
|
**Goals and motivations:**
|
|
- View event details (what, when, where, who else is coming)
|
|
- RSVP to indicate attendance or non-attendance
|
|
- Keep track of events they're interested in across devices (via bookmarks)
|
|
- Add events to their personal calendar
|
|
- Stay informed about event updates or changes
|
|
|
|
**Capabilities:**
|
|
- View the event landing page (US-2)
|
|
- RSVP to an event (US-3)
|
|
- Bookmark an event locally (US-6)
|
|
- View the local event overview (US-7)
|
|
- Download .ics / subscribe via webcal (US-8)
|
|
- See highlighted changes to event details (US-9)
|
|
- See organizer update messages (US-10a)
|
|
- See new-update indicator for unread messages (US-10b)
|
|
- Download QR code for the event (US-11)
|
|
- Install the app as a PWA (US-14)
|
|
- Switch between dark/light mode (US-17)
|
|
|
|
**Limitations:**
|
|
- Cannot edit event details or manage the guest list
|
|
- Cannot post update messages
|
|
- RSVP duplicate protection is device-bound (localStorage), not identity-bound
|
|
- Local data (bookmarks, RSVP records, preferences) is device-bound and not synced across devices
|
|
|
|
**Note on sub-states:** A guest may be in different states relative to an event (RSVPed attending, RSVPed not attending, bookmarked only, or just viewing). These are contextual states within the same persona — the same person moves between them. The user stories handle these states through their acceptance criteria rather than defining separate roles.
|
|
|
|
**Appears in:** US-2, US-3, US-6, US-7, US-8, US-9, US-10a (as reader), US-10b, US-11, US-12, US-14, US-17
|
|
|
|
---
|
|
|
|
## Self-Hoster
|
|
|
|
**Description:** A technical person who deploys and operates an instance of the app on their own infrastructure.
|
|
|
|
**Goals and motivations:**
|
|
- Run a private, self-hosted event platform for their community
|
|
- Control resource usage and prevent abuse on their instance
|
|
- Configure the app via environment variables without modifying code
|
|
- Deploy easily using Docker
|
|
|
|
**Capabilities:**
|
|
- Configure maximum active events (US-13)
|
|
- Configure Unsplash API key for image search (US-16)
|
|
- Configure database connection and other runtime settings (T-2)
|
|
- Deploy using Docker with docker-compose (T-2)
|
|
|
|
**Limitations:**
|
|
- Not a user role in the app's UI — interacts only through deployment and configuration
|
|
- Cannot moderate individual events (that is the organizer's role)
|
|
- App design decisions are not influenced by the self-hoster at runtime
|
|
|
|
**Appears in:** US-13, US-16 (configuration aspect)
|