Project Overview
Build a minimal pomodoro timer web app prototype focused on reliable background audio notifications in Chrome browser.
Core Functionality Requirements
Timer Features
- Single HTML page with configurable timer input (minutes only)
- Timer display showing MM:SS format countdown
- Start/pause button controls
- When timer reaches 00:00: stop, play notification sound, reset display back to original configured time
- Single repeating timer (no pomodoro cycle tracking)
Critical Background Audio Requirement
- Notification sound MUST play even when Chrome tab is in background or minimized
- Handle any browser audio restrictions/permissions needed for background playbook
- Use a simple chime/beep sound
- This is the main technical challenge and should be prioritized
Interface Requirements
- Minimal design: timer input field, timer display, and start/pause buttons only
- Clean, functional layout
- No external dependencies if possible
Technical Requirements
- Single HTML file with embedded CSS/JS
- Primary target: Recent versions of Chrome desktop
- Focus on background audio functionality working reliably
- Timer must continue counting accurately when tab is inactive
Testing Requirements
Core Testing Scenarios
- Background Audio Test: Set a short timer (30 seconds), start it, switch to another tab/app, verify sound plays when timer ends
- Permission Testing: Test with Chrome's sound/notification permissions both allowed and blocked
- Tab Inactive Test: Verify timer continues counting down accurately when tab is not focused
- Input Validation: Test with various inputs (negative numbers, zero, very large numbers)
Browser Permission Scenarios
- Test initial load (first-time user)
- Test when user denies audio permissions
- Test when user initially denies, then grants permissions later
User Experience Considerations
Audio Permissions
- If browser blocks audio permissions, show clear message asking user to enable sound
- Provide instructions on how to enable audio permissions in Chrome if needed
- Graceful degradation if audio fails
Input Validation
- Minutes input should accept reasonable limits (1-999 minutes)
- Handle invalid inputs (negative numbers, non-numeric, empty)
- Clear feedback for invalid inputs
Visual Feedback
- Provide visual indication when timer starts/pauses/ends
- Visual notification should work even if sound fails
- Clear state indication (running, paused, completed)
Error Handling Requirements
Audio Failures
- Handle case where user denies audio permissions gracefully
- Timer should still function visually even if sound doesn't work
- Don't break the app if audio context fails
Input Errors
- Validate timer input before starting
- Handle edge cases (0 minutes, decimal inputs, etc.)
- Provide user-friendly error messages
Accessibility Requirements
- Ensure keyboard navigation works (tab through controls, spacebar to start/pause)
- Timer display should be readable by screen readers
- Buttons should have appropriate ARIA labels
- Sufficient color contrast for visibility
Browser Scope & Limitations
- Primary target: Recent versions of Chrome desktop
- Document any limitations discovered with background tabs/audio policies
- Note any fallback behaviors for unsupported features
Success Criteria
- Timer functions correctly with configurable minutes
- Audio notification plays reliably when tab is in background
- Clean, minimal interface that's easy to use
- Graceful handling of permission denials
- Accurate timekeeping regardless of tab focus state
Deliverables
- Single HTML file with embedded CSS/JS
- Brief documentation of any browser limitations found
- Testing notes on background audio reliability
Project Overview
Build a minimal pomodoro timer web app prototype focused on reliable background audio notifications in Chrome browser.
Core Functionality Requirements
Timer Features
Critical Background Audio Requirement
Interface Requirements
Technical Requirements
Testing Requirements
Core Testing Scenarios
Browser Permission Scenarios
User Experience Considerations
Audio Permissions
Input Validation
Visual Feedback
Error Handling Requirements
Audio Failures
Input Errors
Accessibility Requirements
Browser Scope & Limitations
Success Criteria
Deliverables