# Business Video & Sharing (Phase 1 design)

## One recording. One video record.

After a Live session (or upload in a future phase), the platform creates **one** Business Video record. Every display surface references that record by ID — listings, gallery, private library, watch page, embed, QR, and social cards do not fork new media objects.

## Post-session workflow (UI shell: `video.php`)

| Action | Intent |
|--------|--------|
| Save as Business Video | Persist canonical record + file under One Uploads |
| Attach to Listing | Create listing↔video reference (App2 listings own listing rows) |
| Add to Business Gallery | Create gallery↔video reference |
| Keep Private | Visibility = private (owner/business only) |
| Download | Authorized byte download of original file |
| Delete | Soft-delete / tombstone per Foundation retention policy (future) |

Phase 1: buttons are present and disabled (or informational). No media I/O.

## Sharing surfaces

All share the **same** `video_id` / public watch URL:

| Surface | Design |
|---------|--------|
| Public link | `/live/watch.php?v={video_id}` |
| Embed iframe | `/live/watch.php?v={video_id}&embed=1` |
| QR | Encodes public watch URL (generation future) |
| Native share | `navigator.share` when available (minimal JS) |
| Social | Open Graph / cards future — still point at watch URL |
| Replay page | `/live/replays/` index → same `video_id` |

## Anti-patterns (forbidden)

- Copying the video file into brand-specific folders for each display.
- Creating a second OpenAI key or Live-only secret store for thumbnails/transcription.
- Embedding API keys in `/live/` HTML/JS.
- Building a separate “listing video” entity that duplicates the Business Video blob.
