initial commit
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user