App Name: Toastmaster Timer
App Type: Zoom Apps (Sidebar)
Version: 1.0.0
Production URL: https://www.timer.simple-tech.app
Toastmaster Timer is a Zoom Apps application that automates the Timer role in Toastmasters meetings. It controls video filter overlays based on speech timing (green → yellow → red) and provides comprehensive tracking and reporting features.
No test credentials required. This app does not require user authentication or login. It operates entirely within the Zoom client and stores all data locally in the browser. Any Zoom user can install and use the app immediately without creating an account.
This app uses the Zoom Apps SDK with the following capabilities:
| Capability | Purpose | How It's Used |
|---|---|---|
videoFilter |
Apply/remove video filter overlays | Changes the user's video overlay to colored backgrounds (green, yellow, red) based on speech timing to signal time status to the audience |
shareApp |
Basic Zoom Apps capability | Required for the app to run as a sidebar in Zoom meetings |
| Function | Scope | Purpose |
|---|---|---|
zoomSdk.config() |
Initialization | Initializes the SDK and requests capabilities |
zoomSdk.setVideoFilter() |
videoFilter |
Applies colored overlay images to the user's video |
zoomSdk.deleteVideoFilter() |
videoFilter |
Removes the video filter overlay |
zoomSdk.getVideoState() |
Built-in | Checks if user's video is currently on or off |
zoomSdk.setVideoState() |
Built-in | Turns user's video on (with user's permission) |
- Zoom Desktop Client (Windows or macOS) with version 5.9.0 or later
- A Zoom meeting (can be a personal meeting room)
- Camera/webcam connected and enabled
- Video turned ON in the Zoom meeting
- Open the Zoom Marketplace and find "Toastmaster Timer"
- Click "Add" to add the app to your Zoom account
- Review and accept the permissions requested:
- Video Filter capability (to change your video overlay)
- Complete the installation
- Start or join a Zoom meeting
- Click the "Apps" button in the Zoom toolbar
- Find and click "Toastmaster Timer" from your installed apps
- The app will open as a sidebar panel on the right side of your Zoom window
- Expected Result: The app loads with three tabs: "Live", "Agenda", and "Report"
- In the Live tab, locate the "Debug Panel" section (collapsed by default)
- Click to expand the Debug Panel
- Expected Result:
- "Initialized: Yes"
- "Available: Yes"
- "setVideoFilter: Yes"
- "deleteVideoFilter: Yes"
- Debug logs show "Zoom SDK initialized successfully"
- With your video ON, check the Debug Panel
- Expected Result: "Video State: ON" displayed
- Turn off your video in Zoom
- Expected Result:
- "Video State: OFF" displayed
- A yellow warning banner appears: "Your video is turned off. Please turn on your video to use the Timer Card."
- The START button becomes disabled (grayed out)
- Click "Turn Video On" button in the warning banner
- Expected Result: Your video turns on and the warning disappears
- Ensure your video is ON
- In the Live tab, enter a speaker name (optional): "Test Speaker"
- Select a role from the dropdown: "Standard Speech" (5-6-7 minutes)
- Expected Result: Timing rules displayed: "Green: 5 minutes, Yellow: 6 minutes, Red: 7 minutes"
- Click "START" button
- Expected Result:
- Timer starts counting from 00:00
- A grey/white overlay is applied to your video (visible in Zoom)
- Debug logs show "Applying video filter overlay"
Note: For faster testing, use "Table Topics Speech" role (1-1.5-2 minutes) or "Custom" role with shorter times.
Testing with Table Topics Speech (1-1.5-2 minutes):
- Select "Table Topics Speech" from the role dropdown
- Click START and observe the timer and your video overlay:
| Time | Expected Overlay Color | Status |
|---|---|---|
| 0:00 - 0:59 | Grey/White | Before green time |
| 1:00 - 1:29 | Green | Within time limit |
| 1:30 - 1:59 | Yellow | Warning period |
| 2:00+ | Red | Over time |
- Expected Result: Your video overlay changes automatically at each threshold
- The debug logs should show each color change
Alternative: Testing with Custom Timing Rules:
- Select "Custom" from the role dropdown
- Set timing rules to short intervals for quick testing:
- Green: 5 seconds
- Yellow: 10 seconds
- Red: 15 seconds
- Click START
- Expected Result: Overlay colors change at 5s (green), 10s (yellow), and 15s (red)
- While the timer is running, click the "Eye" icon in the top-right corner
- Expected Result:
- The video filter overlay is removed
- Your face is revealed in the video
- The icon changes to "Eye with slash"
- Click the icon again
- Expected Result:
- The video filter overlay is reapplied
- The correct color overlay (based on current time) is shown
- While timer is running, click "STOP"
- Expected Result: Timer pauses, displays "CONTINUE" and "FINISH" buttons
- Click "CONTINUE"
- Expected Result: Timer resumes from where it stopped
- Click "STOP" again, then click "FINISH"
- Expected Result:
- Timer stops
- Video filter overlay is removed
- Speech is recorded in Reports tab
- Timer resets to 00:00
- After finishing a speech (Step 8), click the "Report" tab
- Expected Result: A table showing:
- Speaker name
- Role
- Duration (time spent)
- Status color (green/yellow/red)
- Comments column
- Click "Copy Report to Clipboard"
- Expected Result:
- Report data copied in tab-separated format
- "Copied to clipboard" toast notification appears
- Click "Clear" to clear all reports
- Expected Result: Confirmation dialog appears, reports cleared after confirmation
- Click the "Agenda" tab
- Click "Add Item" button
- Expected Result: Modal opens with speaker name and role fields
- Enter:
- Speaker Name: "John Doe"
- Role: "Ice Breaker"
- Click "Add"
- Expected Result: Speaker appears in the agenda list
Simple Format Import:
- In Agenda tab, click "Import Text"
- Select the "Simple Format" tab
- Paste the following text:
Alice Smith (Standard Speech) Bob Johnson (Table Topics) Carol Williams (Speech Evaluation) - Click "Import"
- Expected Result: 3 speakers added to the agenda with correct roles
EasySpeak Format Import:
- Click "Import Text" again
- Select "EasySpeak Format" tab
- Paste meeting details copied from EasySpeak website
- Click "Import"
- Expected Result: Speakers parsed with roles automatically detected
- In Agenda tab, click on any speaker in the list
- Expected Result:
- App switches to Live tab
- Speaker name and role are pre-filled
- Timer ready to start
- In Agenda tab with multiple speakers
- Drag a speaker using the grip handle on the left
- Drop to a new position
- Expected Result: Speakers reorder successfully
- In Live tab, click "Edit Rules" link next to the role dropdown
- Expected Result: Modal opens showing all role types with their timing rules
- Modify a timing rule (e.g., change Standard Speech green from 300 to 240 seconds)
- Click "Save"
- Expected Result:
- Rules updated
- New timing displayed when that role is selected
- Start the timer with an overlay visible
- Close the app (click X or switch to another app)
- Expected Result: The video filter overlay should be removed when the app is closed
| Feature | Description | Zoom API Used |
|---|---|---|
| Timer Display | Real-time countdown/countup timer | None (client-side) |
| Video Overlay | Colored overlays (grey/green/yellow/red) based on timing | setVideoFilter, deleteVideoFilter |
| Reveal Face | Temporarily remove overlay to show face | deleteVideoFilter |
| Video State Check | Detect if video is on/off | getVideoState |
| Turn Video On | Turn on user's video | setVideoState |
| Speaker Management | Add, edit, delete, reorder speakers | None (local storage) |
| Agenda Import | Import from EasySpeak or simple text | None (local storage) |
| Timing Reports | Track and export speech timing data | None (local storage) |
| Custom Timing Rules | Configure timing thresholds per role | None (local storage) |
All data is stored locally in the browser using localStorage:
- Speaker agenda
- Completed speech reports
- Custom timing rules
- User preferences (debug panel state)
No data is stored on external servers or Zoom Cloud.
- Support URL: https://www.timer.simple-tech.app/support
- Privacy Policy: https://www.timer.simple-tech.app/privacy
- Developer Email: shuhao.zhang@simple-tech.app