# Brew Timer / Multi-timer
![[coffee-setup.jpeg]]
A multi-timer designed to get your attention when brewing pour-over coffee, but potentially has other uses.
## Features
- [x] Set multiple timers that build on each other - timer keeps running!
- [x] Each time a timer goes off we should get some audio
- Remember my settings on a device
- Very quick to go from zero to starting a timer
- Needs to have as little friction as using "stopwatch" on my phone or I'll just use that
- Ideally, we might want to wrap this webapp in a native wrapper, deploy to the app store, and set up a homescreen shortcut
- That _might_ be something it's hard to pull off in replit, so we'll start with the webapp
## 2023-03-30
- [x] Make sure the sound plays right at the appropriate time
- [x] Show time in min:sec format in the timers
- [x] Have the sound continue until dismissed
- [ ] Sort the timers in ascending order
- we are using `bind:value` to update the timer's `time` field, but that update happens while editing is happening.
- If we re-draw the list while editing, it swaps out the input field from underneath us.
- we will need to move to calling a function to update the timer's `time` field and execute that function `on:blur` or when `on:keypress` when return is pressed, or something like that.
- [x] Get prettier and eslint working in replit
- They're running on-demand using `npm run lint` and `npm run format`
- [ ] Style it up
- [ ] Show which timers have already elapsed
- [ ] Turn stop into Pause and, when paused, change Start to Resume and Pause to Clear
- [ ] BUG: When changing the time for a timer and the timer is running, may need to reset the elapsed status
- We will need to call a function when the timer value updates so that we can reset `elapsed` and `acknowledged`
- [x] BUG: Adding a new timer when the largest timer has a decimal point causes string addition
- Improve the UX on mobile
- [ ] Show the numeral keypad instead of the letters
- [ ] Make it "dismiss" on "return" (maybe even rename the return key)
- [ ] Lock the zoom to prevent accidental zooms
- [ ] Look into a bounty to create an iOS wrapper
## 2023-03-22
- [x] Timer on the screen counting up from zero
- [x] Start the timer when we click a button
- [x] Stop the timer when we click another button
- [x] Play a sound when the timer hits a certain point
- [x] Create a new timer
- [x] Play a sound when any timer expires
- [x] Remove an existing timer
- [x] Update the time of an existing timer