# Quickstart: Watch Event

**Feature**: 017-watch-event
**Date**: 2026-03-12

## What This Feature Does

Adds a bookmark icon to the event detail page that lets users save events locally without RSVPing. Saved events appear in the event list with a "Watching" label.

## Files to Modify

| File | Change |
|------|--------|
| `frontend/src/composables/useEventStorage.ts` | Add `saveWatch()` and `isStored()` methods |
| `frontend/src/views/EventDetailView.vue` | Add bookmark icon left of title, shake animation trigger |
| `frontend/src/components/EventList.vue` | Update `getRole()` to return `'watcher'`, skip confirmation for watchers |
| `frontend/src/components/EventCard.vue` | Add `'watcher'` to role type, add badge styling |

## Implementation Order

1. **useEventStorage** — Add `saveWatch()` and `isStored()` (unit tests first)
2. **EventCard** — Extend role type, add "Watching" badge with styling (unit tests first)
3. **EventList** — Update `getRole()`, adjust delete flow for watchers (unit tests first)
4. **EventDetailView** — Add bookmark icon with all states and shake animation
5. **E2E tests** — Cover all 7 user stories from spec

## Key Design Decisions

- **No new StoredEvent fields** — watcher state is the absence of both `organizerToken` and `rsvpToken`
- **No backend changes** — entirely client-side
- **Bookmark icon left of title** — flex container, vertically centered
- **Non-interactive for attendees/organizers** — tapping shakes the relevant bottom action button
- **No confirmation dialog for watcher deletion** from event list
