A modern, accessible Pomodoro Timer built with React and TypeScript. This application helps you manage your work sessions effectively using the Pomodoro Technique.
- ⏰ Customizable timer settings with 0:00 default start time
- 🔔 Smart countdown notifications:
- For timers < 60 seconds: notifications at 3, 2, and 1 seconds remaining
- For longer timers: notification at 10 seconds remaining
- 🏁 Completion notifications with automatic reset to custom time
- 🔄 Auto-reset functionality - timer automatically returns to your custom time after completion for easy restart
- ⌨️ Full keyboard accessibility
- 👁️ Screen reader support with ARIA live regions
- 🎨 Clean, modern UI with Chakra UI
- 📱 Responsive design
- 🚫 Fixed timer reset bugs for smooth countdown experience
- Node.js (v14 or higher)
- npm or yarn
-
Clone the repository:
git clone https://github.com/QABrandon/timer.git cd timer -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The application will be available at http://localhost:5173
Visit the live application: https://interview-timer.netlify.app
- React - UI Library
- TypeScript - Programming Language
- Vite - Build Tool
- Chakra UI - Component Library
- Jest - Testing Framework
- React Testing Library - Testing Utilities
Run the test suite:
npm testRun tests in watch mode:
npm run test:watchRun tests with coverage:
npm run test:coverageCurrent Test Status: ✅ All 16 tests passing
Create a production build:
npm run buildPreview the production build:
npm run preview- Set custom time: Use the minutes and seconds input fields to set your desired timer duration
- Update timer: Click "Update Timer" to apply your custom time settings
- Start countdown: Click "Start" to begin the countdown
- Pause/Resume: Use "Pause" to temporarily stop the timer, then "Start" to resume
- Reset: Click "Reset" to return to your custom time settings
- Automatic restart: After timer completion, it automatically resets to your custom time - just click "Start" again!
- Short timers (< 60 seconds): Get notifications at 3, 2, and 1 seconds remaining
- Longer timers (≥ 60 seconds): Get notification at 10 seconds remaining
- Completion: Visual and audio-accessible notification when timer ends
- Auto-reset: Timer automatically returns to your custom time for easy restart
This timer is built with accessibility in mind:
- ARIA live regions for time announcements
- Keyboard navigation support
- Screen reader friendly notifications
- High contrast color scheme
- Clear focus indicators
- Comprehensive ARIA labels on all interactive elements
- v2.4.0 - Added auto-reset to custom time after timer completion for easy restart
- v2.3.0 - Fixed countdown notifications (3,2,1 seconds) and timer completion bug
- v2.2.0 - Fixed timer reset bug and changed default to 0:00
- v2.1.1 - Code cleanup and optimization
- v2.1.0 - Enhanced UI and accessibility improvements
- v2.0.0 - Added notifications and improved test coverage
This project is continuously deployed to Netlify. Every push to the main branch automatically triggers a new deployment.
- Production URL: https://interview-timer.netlify.app
- Build Command:
npm run build - Publish Directory:
dist
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
npm test - Build the project:
npm run build - Submit a Pull Request
If you encounter any issues, please create an issue on GitHub with:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Browser/OS information