Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions submissions/pomodoro-timer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Pomodoro Timer Solution

Bounty: https://github.com/AkongaLabs/OSS-bounties/issues/1

## Solution Overview

Single HTML file implementation of a Pomodoro timer with reliable background audio notifications.

## Features Implemented

### Core Functionality
- Configurable timer input (1-999 minutes)
- MM:SS format countdown display
- Start/Pause/Reset controls
- Notification sound on completion
- Auto-reset to original time after completion

### Critical: Background Audio
- Web Audio API for background playback
- Sound plays even when tab is minimized/background
- Audio scheduled at start time (not dependent on throttled timers)

### Input Validation
- Range validation (1-999 minutes)
- Whole number validation
- Clear error messages

### Error Handling
- Graceful degradation if audio fails
- Chrome permission recovery instructions
- Persistent "sound blocked" indicator

### Accessibility
- Keyboard navigation (Tab, Space, R key)
- ARIA labels on all controls
- Screen reader friendly
- Good color contrast

### Visual Feedback
- Running/Paused/Ready states
- Sound status indicator
- Visual pulse animation on completion

## Testing

All test scenarios passed:
1. Background audio plays when tab is minimized
2. Timer continues when tab is inactive
3. Graceful permission handling
4. Input validation

## Usage

1. Open pomodoro-timer.html in Chrome
2. Set timer duration (1-999 minutes)
3. Click Start
4. Timer will notify with sound when complete

## Technical Notes

- Single HTML file with embedded CSS/JS
- No external dependencies
- Uses Web Audio API for reliable background audio
- Target: Chrome desktop

## Bounty Payment

Binance (USDT/USDC) - $200
Loading