Create a web application that allows users to input a specific date and time, after which the application will display a countdown timer that counts down to the specified date and time from the current date and time.
- User input for the target date and time.
- Real-time countdown display.
- Ability to cancel and create a new countdown at any time.
- Responsive design for various screen sizes.
- Optional: Sound notification for when the countdown is complete
- Optional: Persist countdown even if the browser tab is reopened again.
- As a user, I want to be able to easily input the target date and time for the countdown.
- As a user, I want to see a real-time countdown displayed in an easy-to-understand format.
- As a user, I want the countdown timer to be visually appealing and responsive on different devices.
- Provide a form with fields for the user to input the target date and time.
- Validate the input to ensure it is a valid date and time format.
- Display the countdown timer in a visually appealing format.
- Update the countdown timer in real-time to reflect the remaining time.
- Allow the user to stop the countdown timer at any point of time.
- The maximum days for the countdown timer should be 99 days.
- The maximum hours for the countdown timer should be 23 hours
- The maximum minutes for the countdown timer should be 59 minutes
- The maximum seconds for the countdown timer should be 59 seconds
- The cut-off date for the date picker should be 99 days from the current date
- The countdown timer should not go below 0
- Ensure the application is responsive and displays correctly on desktop and mobile devices.
- Frontend: HTML, CSS and Javascript. The implementations should be in react.
- Optional: Use typescript, add unit tests and e2e tests.
- The UI should include reusable components
- Do not use any component library for building the date and time picker
- The images above are just an example layout, but the final result should aim to have the same features and somewhat the same layout
- Use linting tools, to ensure consistent formatting and code quality.
- You can hand in your assignment by creating a repository on GitHub and pushing it there.