š¼ Panda-Pomodoro Timer
A pixel art style pomodoro timer built with Tauri + Svelte + TypeScript. Features panda animations, sound effects, and a built-in music player with YouTube download capability
By Talal

Features
- Always on Top - Stays visible on your screen while you work (300x400px window)
- Customizable Timers - Set your own study time, break time, and total rounds
- Sound Effects - Gentle audio feedback for timer events
- Music Player - Play background music while studying
- YouTube Download - Download music from YouTube and save as local playlists
- Progress Tracking - Visual progress bar and round indicators
- Smooth Animations
- Compact Design - Small square window that doesn't take up much space
š ļø Tech Stack
- Tauri - Lightweight desktop framework (Rust backend)
- Svelte - Modern, fast frontend framework
- TypeScript - Type-safe JavaScript
- Vite - Fast build tool
š Prerequisites
- Node.js (v18 or higher) - Download
- Rust - Install Rust
- yt-dlp (for YouTube downloads) - Install yt-dlp
Installing yt-dlp
- Windows:
winget install yt-dlp or download from GitHub releases
- macOS:
brew install yt-dlp
- Linux:
sudo apt install yt-dlp or pip install yt-dlp
Getting Started
Installation
Clone the repository:
git clone https://github.com/YOUR_USERNAME/panda-pomodoro.git
cd panda-pomodoro
Install dependencies:
npm install
Run the app in development mode:
npm run tauri:dev
Building for Distribution
Build the app for your platform:
# Development build
npm run tauri:dev
# Production build
npm run tauri:build
Built applications will be in src-tauri/target/release/bundle/.
Customization
Adding Pixel Art
You can replace the CSS character with your own pixel art sprites. Edit src/components/Character.svelte to use image sprites or add animation frames.
Custom Sound Effects
Add your sound files to a sounds/ directory and update the sound loading logic in the timer store.
Colors and Themes
Modify the gradient backgrounds in src/components/PomodoroTimer.svelte:
.study-mode - Study session colors
.break-mode - Break session colors
.complete-mode - All rounds complete colors
š Usage
Timer Controls
- Start Timer: Click the play button (ā¶) to start your study session
- Pause: Click the pause button (āø) to pause the timer
- Reset: Click the reset button (ā») to restart the current session
- Settings: Click the settings button (ā) to customize:
- Study time (minutes)
- Break time (minutes)
- Total rounds
- Sound effects on/off
Music Player
- Toggle Player: Click the music icon (šµ) to show/hide the music player
- Download Music: Enter a YouTube URL and click "Download" to save music locally
- Play Music: Use the player controls to play/pause, skip tracks, and adjust volume
- Manage Playlist: Tracks are automatically saved to playlists in your app data directory
The timer will automatically switch between study and break sessions based on your settings.
š Default Settings
- Study Time: 25 minutes
- Break Time: 5 minutes
- Total Rounds: 4
- Sound Effects: Enabled
šļø Project Structure
āāā src/ # Frontend (Svelte + TypeScript)
ā āāā components/ # Svelte components
ā āāā stores/ # Svelte stores (state management)
ā āāā main.ts # Entry point
āāā src-tauri/ # Backend (Rust)
ā āāā src/
ā ā āāā main.rs # Tauri main file
ā ā āāā commands.rs # Tauri commands
ā āāā Cargo.toml # Rust dependencies
āāā package.json # Node dependencies
š¤ Contributing
Contributions are welcome! Feel free to submit issues or pull requests.
š License
This project is licensed under the MIT License.
š¤ Author
Talal
š Acknowledgments
- Inspired by the Pomodoro Technique by Francesco Cirillo
- Built with Tauri - A framework for building tiny, fast binaries with great developer experience
- Built with Svelte - Cybernetically enhanced web apps
Have fun guys i spent a weekend on this lol.