A beautiful and functional Pomodoro Timer web application built with Vue 3, featuring sound notifications and dynamic Unsplash backgrounds.
- Pomodoro Technique: Follow the popular time management method with customizable work and break intervals
- Sound Notifications: Audio alerts when a timer starts and ends
- Beautiful Backgrounds: Random nature and landscape images from Unsplash that change with each session
- Responsive Design: Works on desktop and mobile devices
- Customizable Settings: Adjust timer durations, auto-start, and more
- Visual Progress: Circular progress indicator shows remaining time
- Local Storage: Your settings are saved between sessions
- Vue 3 (Composition API)
- Pinia for state management
- Vite for build tooling
- CSS3 with modern features
- Unsplash API for background images
- Local Storage API
- Web Audio API
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
- Work Session (Pomodoro): By default, this is set to 25 minutes
- Short Break: Take a 5-minute break after each Pomodoro
- Long Break: Take a 15-minute break after completing 4 Pomodoros
- Start: Begin the timer
- Pause: Temporarily stop the timer
- Reset: Reset the timer to its initial state
- Settings: Customize timer durations and other preferences
Click the gear icon to access settings where you can:
- Change the duration of Pomodoro, short break, and long break sessions
- Enable/disable automatic start of the next timer
- Enable/disable sound notifications
- Enable/disable background changes between sessions
The application uses Unsplash to fetch beautiful background images. To use your own Unsplash API key:
- Register at Unsplash Developers
- Create a new application to get an API key
- Replace
YOUR_UNSPLASH_API_KEY
in the App.vue file with your actual API key
If you don't provide an API key, the application will use a fallback method to fetch random images.
pomodoro-timer-vue/
├── public/
├── src/
│ ├── assets/
│ │ └── styles.css
│ ├── components/
│ │ ├── TimerContainer.vue
│ │ └── SettingsPanel.vue
│ ├── stores/
│ │ ├── timer.js
│ │ └── settings.js
│ ├── App.vue
│ └── main.js
├── index.html
├── package.json
├── vite.config.js
└── README.md
This project is open source and available under the MIT License.
- Sound effects from Mixkit
- Background images from Unsplash
- Icons from Font Awesome