# Module 10: Storyboarding ## Lesson 2: Storyboard Format **How to document transformations clearly** --- ## The Structure Every storyboard follows this pattern: 1. **Element name** — What's being storyboarded 2. **Keyframes** — Each distinct state 3. **Transitions** — What triggers the change 4. **Why** — Purpose of each state 5. **Timing** — Duration where relevant ``` Storyboard Anatomy: ┌────────────────────────────────────────────────────────────┐ │ ## [Element Name] Storyboard ◄─── 1. What's being tracked │ ├────────────────────────────────────────────────────────────┤ │ │ │ ### Keyframe 0: Default State ◄──── 2. Each distinct │ │ [Visual representation] state │ │ - State description │ │ - Key elements │ │ │ │ **Transition:** User clicks ◄────── 3. What triggers │ │ **Why:** User needs feedback change │ │ │ │ ### Keyframe 1: Loading State │ │ [Visual representation] │ │ - What changed │ │ **Duration:** 300ms ◄───────────── 5. Timing where │ │ **Why:** Prevents confusion relevant │ │ │ └────────────────────────────────────────────────────────────┘ ▲ 4. Purpose of each state ``` --- ## Basic Format ```markdown ## [Element Name] Storyboard ### Keyframe 0: Default State [Image/description] - State description - Key visual elements - What user can interact with **Transition:** [What triggers next keyframe] ### Keyframe 1: [State Name] [Image/description] - What changed - What's visible now - What user can do **Transition:** [What triggers next keyframe] ### Keyframe 2: [State Name] ... ``` --- ## Detailed Example: Form Submit Flow **Visual Overview:** ``` K0: Ready K1: Submitting K2: Success K3: Error (alt) ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Email │ │ Email │ │ Email │ │ Email │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │email@...│ │ │ │email@...│ │ │ │email@...│ │ │ │email@...│ │ ⚠ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ │ │ │ │ │ │ │ ┌─────────┐ │ │ Password │ │ Password │ │ Password │ │ │Email │ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │exists! │ │ │ │•••••••••│ │ │ │•••••••••│ │ │ │•••••••••│ │ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ │ Password │ │ │ │ │ │ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │•••••••••│ │ │ │ Submit │ │ │ │ ... │ │ │ │ ✓ │ │ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ │ │ └─────────────┘ └─────────────┘ │ Account │ │ ┌─────────┐ │ │ created! │ │ │ Submit │ │ User clicks Processing └─────────────┘ │ └─────────┘ │ (300ms delay) Success └─────────────┘ (1.5s, redirect) Error state ``` **Documented Format:** ```markdown ## Form Submit Storyboard ### Keyframe 0: Default State (Ready to Submit) [Image: form-ready.png] - Form filled with valid data - Submit button: "Create Account" (enabled) - No loading indicators visible **Why:** User has completed form, ready to submit ### Keyframe 1: Submitting State [Image: form-submitting.png] - Submit button shows spinner (text replaced) - Button disabled (grayed out) - Form fields locked (can't edit) **Transition:** User clicks submit (appears after 300ms delay) **Duration:** Until server responds **Why:** User knows request is processing, prevents double-submit ### Keyframe 2: Success State [Image: form-success.png] - Submit button shows checkmark icon - Button background: Green - Success message appears above form: "Account created!" **Transition:** Server responds successfully **Duration:** 1.5s visible, then redirect **Why:** Confirms success before navigation ### Keyframe 3: Error State [Image: form-error.png] - Submit button returns to default "Create Account" - Error banner appears at top: "Email already exists" - Email field highlighted in red - Form re-enabled for corrections **Transition:** Server responds with error **Why:** User can identify and fix the problem ``` --- ## Visual Options You can document storyboards with: ### 1. Screenshots/Images Most precise. Capture exact states. ``` [Image: form-empty.png] [Image: form-filling.png] [Image: form-error.png] [Image: form-success.png] ``` ### 2. ASCII Art Quick to create, easy to iterate. ``` Keyframe 0: Keyframe 1: Keyframe 2: ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Email │ │ jane@... │ │ jane@co.com │ └──────────────┘ └──────────────┘ └──────────────┘ ✓ Valid format ``` ### 3. Description Only When visuals aren't critical. ``` Keyframe 0: Button shows "Submit" Keyframe 1: Button shows spinner, text hidden Keyframe 2: Button shows checkmark, turns green ``` ### 4. Figma/Design Tool States Create component variants showing each state. --- ## Transition Types Document how states change: ``` INSTANT TIMED ANIMATION DELAYED K0 ──► K1 K0 ─────────► K1 K0 ─ ─ ─► K1 0ms 200ms 300ms wait ┌────┐ ┌────┐ ┌────┐ fade ┌────┐ ┌────┐ wait ┌────┐ │ A │ │ A │ │ │ ─────► │ ▓▓ │ │ X │ │ X │ └────┘ └────┘ │ │ in │ ▓▓ │ └────┘ │ ⚠ │ Default Hover └────┘ └────┘ No error └────┘ Hidden Modal Error visible appears No animation Smooth fade Prevents flash Instant feedback 200ms ease After delay ``` ### Instant ``` **Transition:** Instant (no animation) ``` Used for: Hover states, active states, error appearances ### Timed Animation ``` **Transition:** 200ms ease-out ``` Used for: Modals, expandable sections, smooth state changes ### Delayed ``` **Transition:** Appears after 300ms delay ``` Used for: Loading spinners (avoid flash), auto-dismiss messages ### User-Triggered ``` **Transition:** On button click **Transition:** On input focus **Transition:** On scroll to element ``` ### System-Triggered ``` **Transition:** On server response **Transition:** On data load complete **Transition:** On timer expiry ``` --- ## Grouping Storyboards Organize by element type: ``` Page Structure: ┌─────────────────────────────────────────────────┐ │ # Page: Signup Form │ ├─────────────────────────────────────────────────┤ │ ## Form Fields │ │ ├── Email Field Storyboard ────┐ │ │ │ K0 → K1 → K2 │ User input │ │ └── Password Field Storyboard ─┘ │ │ │ │ ## Buttons │ │ ├── Submit Button Storyboard ──┐ │ │ │ K0 → K1 → K2 → K3 │ Actions │ │ └── Back Button Storyboard ────┘ │ │ │ │ ## System States │ │ ├── Form Validation Storyboard ┐ │ │ │ K0 → K1 → K2 │ Feedback │ │ └── Network Error Storyboard ──┘ │ └─────────────────────────────────────────────────┘ ``` **Documented Format:** ```markdown # Page: Signup Form ## Form Fields ### Email Field Storyboard [keyframes...] ### Password Field Storyboard [keyframes...] ## Buttons ### Submit Button Storyboard [keyframes...] ### Back Button Storyboard [keyframes...] ## System States ### Form Validation Storyboard [keyframes...] ### Network Error Storyboard [keyframes...] ``` --- ## The Freya Method Freya helps you think through transformations: > "When the user submits, what do they see while waiting?" > "This dropdown opens instantly. Should it animate for smoother UX?" > "The error appears, but how does the user know which field caused it?" She ensures every state change serves the user. --- ## What NOT to Storyboard **Skip storyboarding standard UI behaviors:** - **Button hover/active states** — Developers know these - **Link colors** — Standard browser behavior - **Focus states** — Design system handles this - **Cursor changes** — Standard pointer/text cursors - **Simple show/hide** — Basic visibility toggles - **Static content** — No interactivity **DO storyboard complex, non-standard transformations:** - **Async operations** — Loading → Success/Error flows - **Modal dialogs** — Open/close with animations - **Expandable sections** — Accordion behavior, content reveals - **Complex dropdowns** — Multi-level, searchable, filtered - **Form wizards** — Multi-step progress and validation - **Animations** — Custom entrance/exit effects - **Real-time updates** — Live data, notifications **The rule:** If it's a standard behavior developers already know, don't document it. If it's complex or custom, storyboard it. --- ## Connecting to Specifications Storyboards become part of your page specifications (Module 11): ```markdown ## Signup Form Specification ### Submit Button - Component: Button (primary, large) - Label: "Create Account" - **Storyboard:** See Submit Button Storyboard ### Email Field - Component: Input (email) - Label: "Email" - **Storyboard:** See Email Field Storyboard ``` The storyboard provides the dynamic behavior; the specification provides the full context. --- ## Common Mistakes | Mistake | Fix | |---------|-----| | Confusing with scenarios | Storyboards stay on one page | | Missing intermediate states | Show every step, not just start/end | | No "why" | Explain the purpose of each state | | Forgetting error states | What happens when things fail? | | Over-documenting | Focus on meaningful transformations | | No timing | Specify duration when it matters | --- ## Checklist For each interactive element: - [ ] Default state documented - [ ] All user-triggered states - [ ] All system-triggered states - [ ] Error states - [ ] Success states - [ ] Transition types specified - [ ] Timing where relevant - [ ] Why for each state --- ## What's Next In the tutorial, you'll create storyboards for the interactive elements in your own page sketches. Freya will guide you through identifying what needs storyboarding and documenting each transformation. --- **[Continue to Tutorial: Create Your Storyboards →](tutorial-10.md)** --- [← Back to Lesson 1](lesson-01-transformations.md) | [Back to Module Overview](module-10-storyboarding-overview.md) *Part of Module 10: Storyboarding*