A delightful Pomodoro timer application with a playful cat theme and physics-based animations, built with Nuxt.js.
Don't be shy, click start:
- Pomodoro Timer: Classic 25-minute work sessions with 5-minute breaks
 - Physics Animation: Interactive Matter.js physics simulation with falling objects
 - Sound Effects: Audio feedback for timer events
 - Responsive Design: Works beautifully on desktop and mobile devices
 - Modern UI: Built with Tailwind CSS and Shadcn Vue components
 - Dark/Light Mode: Adaptive color scheme support
 - TypeScript: Full type safety throughout the application
 
This project is built with cutting-edge technologies:
- Nuxt 3 - The Vue.js framework
 - Vue 3 - Progressive JavaScript framework
 - TypeScript - Type-safe JavaScript
 - Tailwind CSS - Utility-first CSS framework
 - Shadcn Vue - Beautiful UI components
 - Matter.js - Physics engine for animations
 - VueUse - Essential Vue composition utilities
 
- Nuxt Icon - Icon management
 - Nuxt SVGO - SVG optimization
 - Nuxt Test Utils - Testing utilities
 - Nuxt Color Mode - Dark/light mode
 - Nuxt Fonts - Font optimization
 
- 
Clone the repository:
git clone https://github.com/schroedinger-Hat/sh-pomo-cat.git cd sh-pomo-cat - 
Install dependencies:
pnpm install
 - 
Start the development server:
pnpm run dev
 - 
Open your browser and navigate to
http://localhost:3000 
- Start/Pause: Click the play/pause button to control the timer
 - Reset: Reset the current session (only available when timer is active)
 - Skip: Skip to the next session (work β break β work)
 
- Work Session: 25 minutes of focused work time π
 - Break Session: 5 minutes of rest time π
 
- Watch objects fall and interact with the physics simulation
 - The animation responds to your timer completions
 
# Development
pnpm run dev          # Start development server
pnpm run build        # Build for production
pnpm run generate     # Generate static site
pnpm run preview      # Preview production build
# Code Quality
pnpm run lint         # Run ESLint
pnpm run lint:fix     # Fix ESLint issues
pnpm run lint:scss    # Lint SCSS files
# Testing
pnpm run test         # Run tests with VitestThe application can be configured through environment variables:
# .env
NUXT_PUBLIC_APP_MODE=development  # development | productionYou can modify the timer durations in app/composables/usePomodoro.ts:
const POMODORO_TIME = 25 * 60 // 25 minutes in seconds
const SHORT_BREAK = 5 * 60    // 5 minutes in seconds
const LONG_BREAK = 15 * 60    // 15 minutes in seconds
const TEST_TIME = 0.05 * 60   // 3 seconds for developmentDevelopment Mode: When NUXT_PUBLIC_APP_MODE is set to 'development', the timer will default to approximately 3 seconds (0.05 minutes) for all sessions to speed up testing and development.
sh-pomo-cat/
βββ app/
β   βββ components/
β   β   βββ pomodoro/          # Pomodoro-specific components
β   β   βββ ui/                # Reusable UI components
β   βββ composables/           # Vue composables
β   βββ assets/               # Static assets
β   βββ app.vue               # Main app component
βββ public/                   # Public assets
βββ server/                   # Server-side code
βββ test/                     # Test files
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
 - Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
 
This project is licensed under the MIT License - see the LICENSE file for details.
SchrΓΆdinger Hat Team - @schroedinger_hat
Project Link: SchrΓΆdinger PomoCat
        
           
          Patrick Raedler π» Maintainer  | 
    
