A simple, beautiful, and fully responsive countdown timer that lives entirely in a single HTML file. It features a soothing "bamboo" chime generated by the Web Audio API, a responsive donut graph interface, and local storage presets.
- Visual Donut Interface: Clean, minimalist SVG donut graph that visualizes time remaining.
- Responsive Design: Automatically adjusts layout for portrait (vertical) and landscape (horizontal) orientations. The interface maintains aspect ratio and fits perfectly within the browser window.
- Bamboo Sound Engine: A procedural sound using the Web Audio API that mimics a wooden bamboo block at 440Hz. No external audio files are required.
- Savable Presets: Save your favorite timers (e.g., "Egg", "Pizza", "Nap") directly to your browser's LocalStorage.
- Interactive Controls:
- Tap: Load a preset.
- Long Press (Mobile) / Right Click (Desktop): Delete a saved preset.
- Single File: No dependencies, no build steps, no servers. Just download and open.
The User Interface - Available but not distracting.Imagine a calming, clean interface split into two cards. On the left (or top), a large donut chart displaying the time. On the right (or bottom), a numeric keypad and playback controls. Soft muted greens and wood tones.
- Download: Save the
zen-bamboo-timer.htmlfile to your computer. - Run: Double-click the file to open it in Chrome, Firefox, Safari, or Edge.
- PWA (Optional): On mobile, use the "Add to Home Screen" option to run it as an app.
- Tap the numeric keypad to enter hours, minutes, and seconds.
- Example:
300becomes 3 minutes 00 seconds.
- Example:
- Press the Green Play Button to start the timer.
- Pause: Halts the timer.
- Resume: Continues the timer.
- Stop: Resets the timer to zero and clears the input.
- Volume: Use the slider at the bottom to adjust the alarm volume.
- Save: While the timer is stopped (IDLE) and you have a time entered, click the + Save button below the donut.
- Load: Tap any preset button to instantly load that time.
- Delete:
- Desktop: Right-click the preset button.
- Mobile: Touch and hold the preset button for about 1 second until it turns red.
- HTML5 for structure.
- CSS3 (Flexbox, CSS Grid, Viewport Units) for responsive styling.
- Vanilla JavaScript (ES6+) for logic and state management.
- Web Audio API for procedural sound generation.
This project is open source and available under the MIT License.
Feel free to fork this project, customize the colors, or add new features!
Like what I do? Support this project. ↗
Made with bamboo & code.

