38 lines
1.3 KiB
Markdown
38 lines
1.3 KiB
Markdown
---
|
|
epic: 9
|
|
story: 9.4
|
|
title: "Shareable URL Links"
|
|
status: draft
|
|
---
|
|
|
|
## Epic 9 — Web App (React + WASM)
|
|
**Goal:** Zero-install web experience with real-time collaboration.
|
|
|
|
### Story 9.4: Shareable URL Links
|
|
|
|
As a web user,
|
|
I want to share my CalcPad sheet via a unique URL,
|
|
So that others can view my calculations without needing an account.
|
|
|
|
**Acceptance Criteria:**
|
|
|
|
**Given** a user has an open CalcPad sheet
|
|
**When** they click the "Share" button
|
|
**Then** a unique URL is generated in the format `calcpad.app/s/{shortcode}`
|
|
**And** the URL is copied to the clipboard with confirmation feedback
|
|
|
|
**Given** a recipient opens a shared URL
|
|
**When** the page loads
|
|
**Then** the sheet is rendered in read-only mode with full formatting and answer display
|
|
**And** the recipient cannot edit the original sheet
|
|
|
|
**Given** a user is generating a share link
|
|
**When** they enable the "Password Protection" option and set a password
|
|
**Then** recipients are prompted to enter the password before viewing
|
|
**And** incorrect passwords display an error and deny access
|
|
|
|
**Given** a user is generating a share link
|
|
**When** they set an expiration (e.g., 1 hour, 1 day, 7 days, 30 days)
|
|
**Then** the link becomes inaccessible after the expiration period
|
|
**And** visiting an expired link shows a friendly "This link has expired" message
|