Feature: Add Countdown Timer app specification

Add Countdown Timer app specification

Resolves: N/a
See also: N/a
pull/43/head
jdmedlock 6 years ago
parent 2a56429b7f
commit 698ef1f1d4

@ -0,0 +1,60 @@
# Countdown Timer
**Tier:** 1-Beginner
We all have important events we look forward to in life, birthdays,
anniversaries, and holidays to name a few. Wouldn't it be nice to have an app
that counts down the months, days, hours, minutes, and seconds to an event?
Countdown Timer is just that app!
The objective of Countdown Timer is to provide a continuously decrementing
display of the he months, days, hours, minutes, and seconds to a user entered
event.
### Constraints
- Use only builtin language functions for your calculations rather than relying
on a library or package like [MomentJS](https://momentjs.com/). This assumes,
of course, that the language of your choice has adequate date and time
manipulation functions built in.
- You may not use any code generators such as the
[Counting Down To](https://countingdownto.com/) site. You should develop your
own original implementation.
## User Stories
- [ ] User can see an event input box containing an event name field, an
date field, an optional time, and a 'Start' button.
- [ ] User can define the event by entering its name, the date it is
scheduled to take place, and an optional time of the event. If the time is
omitted it is assumed to be at Midnight on the event date in the local time
zone.
- [ ] User can see a warning message if the event name is blank.
- [ ] User can see a warning message if the event date or time are incorrectly
entered.
- [ ] User can see a warning message if the time until the event data and time
that has been entered would overflow the precision of the countdown timer.
- [ ] User can click on the 'Start' button to see the countdown timer start
displaying the days, hours, minutes, and seconds until the event takes place.
- [ ] User can see the elements in the countdown timer automatically
decrement. For example, when the remaining seconds count reaches 0 the remaining
minutes count will decrement by 1 and the seconds will start to countdown from 59. This progression must take place from seconds all the way up to the remaining days position in countdown display.
## Bonus features
- [ ] User can save the event so that it persists across sessions
- [ ] User can see an alert when the event is reached
- [ ] User can specify more than one event.
- [ ] User can see a countdown timers for each event that has been defined.
## Useful links and resources
- Images of analog tube-based countdown timers can be found
[here](https://nixieshop.com/)
- [`clearInterval` MDN](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval)
- [`setInterval` MDN](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval)
- [Date MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
## Example projects
[Simple Clock/Countdown Timer](https://codepen.io/karlo-stekovic/pen/OajKVK)

@ -45,6 +45,7 @@ required to complete them.
| [Christmas Lights](./Projects/Christmas-Lights-App.md) | Simulate a string of Christmas lights | 1-Beginner |
| [Cause Effect App](./Projects/Cause-Effect-App.md) | Click list item to display item details | 1-Beginner |
| [Color Cycle](./Projects/Color-Cycle-App.md) | Cycle a color value through incremental changes | 1-Beginner |
| [Countdown Timer](./Projects/Countdown-Timer-App.md) | Event Countdown timer | 1-Beginner |
| [CSV2JSON App](./Projects/CSV2JSON-App.md) | CSV to JSON converter | 1-Beginner |
| [Flip Image](./Projects/Flip-Image-App.md) | Change the orientation of images across two axes | 1-Beginner |
| [JSON2CSV App](./Projects/JSON2CSV-App.md) | JSON to CSV converter | 1-Beginner |

Loading…
Cancel
Save