161 lines
7.2 KiB
Markdown
161 lines
7.2 KiB
Markdown
# User Stories (with Acceptance Criteria)
|
||
Legend: UT-[Epic]-[ID]
|
||
- ADM = Admin/Artist Management (Epic A)
|
||
- BKG = Booking/Client (Epic B)
|
||
- PUB = Public Website (Epic C)
|
||
- ARC = Architecture/Delivery (Epic D)
|
||
|
||
Epic A — Admin Dashboard & Artist Management
|
||
UT-ADM-01: As an admin, I can invite a new artist with a time-limited signup link.
|
||
- Given I am an admin
|
||
- When I enter the artist’s email and send an invite
|
||
- Then the artist receives a link that expires after a configured window and can register successfully
|
||
|
||
UT-ADM-02: As an artist, I can complete a wizard-style onboarding to set profile, styles, and initial portfolio.
|
||
- Given I have a valid invite
|
||
- When I follow the wizard steps (profile, styles, rates, availability)
|
||
- Then my artist profile is created and set to draft until I publish
|
||
|
||
UT-ADM-03: As an admin/owner, I can enforce 2FA for admin roles and allow optional passwordless for others.
|
||
- Given security settings are configured
|
||
- When a new admin registers
|
||
- Then they must enroll 2FA before accessing admin features
|
||
|
||
UT-ADM-04: As an editor, I can batch upload portfolio pieces with progress tracking.
|
||
- Given I have editor permissions
|
||
- When I drag-and-drop multiple images
|
||
- Then I see per-file progress and all successful uploads are linked to my portfolio
|
||
|
||
UT-ADM-05: As an editor, I can manually crop images with grid guides and save crops as separate assets.
|
||
- Given I uploaded an image
|
||
- When I open the crop tool and save
|
||
- Then a cropped asset version with metadata is created
|
||
|
||
UT-ADM-06: As an editor, I can toggle AI-assisted crop suggestions on/off at the account or workspace level.
|
||
- Given the setting is visible
|
||
- When I toggle AI suggestions off
|
||
- Then only manual cropping is suggested
|
||
|
||
UT-ADM-07: As an admin, I can manage compression settings for uploaded assets and override aggressive compression.
|
||
- Given default compression is on
|
||
- When I disable aggressive compression for a set
|
||
- Then newly processed assets use the chosen compression level
|
||
|
||
UT-ADM-08: As an admin, I can view an activity log with user, action, and timestamp to audit changes.
|
||
- Given actions were performed
|
||
- When I open the activity log
|
||
- Then I can filter by user and resource and export logs
|
||
|
||
UT-ADM-09: As an admin, I can pause an artist or globally pause the system to halt new bookings.
|
||
- Given an emergency scenario
|
||
- When I toggle pause for a specific artist or globally
|
||
- Then booking forms and availability reflect the pause with clear messaging
|
||
|
||
UT-ADM-10: As an editor, I can stage portfolio changes in a sandbox and preview before publishing live.
|
||
- Given I have draft changes
|
||
- When I open preview
|
||
- Then I see the draft state exactly as it would appear when published
|
||
|
||
Epic B — Unified Booking & Client Management
|
||
UT-BKG-01: As a visitor, I am routed to consultation vs booking based on my form inputs.
|
||
- Given I start the booking flow
|
||
- When my answers indicate uncertainty or complex needs
|
||
- Then I’m guided to a consultation request instead of direct booking
|
||
|
||
UT-BKG-02: As a visitor, I can select appointment type (first tattoo, cover-up, large piece, etc.) and see appropriate options.
|
||
- Given I’m on the booking form
|
||
- When I choose an appointment type
|
||
- Then the form adapts with relevant questions and duration estimates
|
||
|
||
UT-BKG-03: As a visitor, I can see an automated quote estimate based on size, complexity, and artist tier.
|
||
- Given I filled required fields
|
||
- When I request an estimate
|
||
- Then I see a non-binding quote and deposit requirements
|
||
|
||
UT-BKG-04: As a client, I can create an account and see my upcoming/past appointments.
|
||
- Given I signed up
|
||
- When I log in to the client portal
|
||
- Then I can view appointments and details
|
||
|
||
UT-BKG-05: As a client, I can reschedule or cancel an appointment within policy windows.
|
||
- Given I have an upcoming appointment
|
||
- When I choose reschedule/cancel within allowed times
|
||
- Then the system updates calendar and sends notifications
|
||
|
||
UT-BKG-06: As an admin, I can enable two-way Google Calendar sync per-artist.
|
||
- Given an artist connects Google Calendar
|
||
- When sync is enabled
|
||
- Then booking changes appear in their calendar and availability reflects external events
|
||
|
||
UT-BKG-07: As a client, I can pay a deposit securely and receive a receipt.
|
||
- Given a deposit is required
|
||
- When I complete checkout via supported gateway
|
||
- Then my payment intent and receipt reference are stored and visible
|
||
|
||
UT-BKG-08: As an admin, I can process a refund via the payment gateway and record it in the system.
|
||
- Given a valid refund request
|
||
- When I issue a refund
|
||
- Then the client is notified and records reflect the refund
|
||
|
||
UT-BKG-09: As an admin, I receive notifications for new bookings, cancellations, and changes.
|
||
- Given notification preferences are set
|
||
- When key events occur
|
||
- Then I receive email/SMS alerts accordingly
|
||
|
||
Epic C — Public-Facing Website Experience
|
||
UT-PUB-01: As a visitor, I experience consistent ShadCN-based UI across all pages.
|
||
- Given any site page
|
||
- When I navigate and interact
|
||
- Then spacing, typography, components, and transitions are consistent
|
||
|
||
UT-PUB-02: As a visitor, I see parallax/split-screen hero sections that are smooth and performant.
|
||
- Given I’m on the homepage or artist page
|
||
- When I scroll
|
||
- Then layered visuals and split sections animate smoothly within performance budgets
|
||
|
||
UT-PUB-03: As a visitor, I can use a dedicated search with filters (style, availability, price tier).
|
||
- Given I’m on /search
|
||
- When I apply filters
|
||
- Then artist and content results update accordingly
|
||
|
||
UT-PUB-04: As a visitor, I can use quick search (Ctrl+K) to find artists and educational content.
|
||
- Given I press Ctrl+K
|
||
- When I type a query
|
||
- Then I get navigable results for artists and key pages
|
||
|
||
UT-PUB-05: As a visitor, I can view improved aftercare content with visuals, progress tracking, and checklists.
|
||
- Given I open /aftercare
|
||
- When I read and mark steps
|
||
- Then my progress is saved locally and content is printable/PDF-downloadable
|
||
|
||
UT-PUB-06: As a visitor, I can browse artist galleries with style-based filtering and interactive zoom/lightbox.
|
||
- Given I’m on an artist page
|
||
- When I filter by style or click an image
|
||
- Then the gallery updates, and I can zoom without layout shift
|
||
|
||
Epic D — Technical Architecture & Delivery
|
||
UT-ARC-01: As a developer, I can configure Cloudflare D1/R2 and verify SSR server-side asset delivery.
|
||
- Given environment is set
|
||
- When I run the preview
|
||
- Then assets are fetched server-side and delivered via caches
|
||
|
||
UT-ARC-02: As a visitor, I benefit from progressive images and lazy loading while browsing media-heavy pages.
|
||
- Given I visit a gallery
|
||
- When images load
|
||
- Then low-res placeholders progressively upgrade without jank
|
||
|
||
UT-ARC-03: As a returning visitor, I benefit from a service worker that improves revisit speed and limited offline browsing.
|
||
- Given PWA-like capabilities
|
||
- When I revisit
|
||
- Then common assets/pages load faster and basic offline fallback is available
|
||
|
||
UT-ARC-04: As the owner, I can preview new changes on a staging environment before production.
|
||
- Given staging is deployed
|
||
- When I access the staging URL
|
||
- Then I can verify new features and content before launch
|
||
|
||
UT-ARC-05: As a maintainer, I can rely on clear docs (README, architecture, changelog) to operate and extend the system.
|
||
- Given the repository
|
||
- When a new developer onboards
|
||
- Then they can set up, run, and contribute following documented steps
|