Skip to content

bobvasic/Rapid-Development-Timer-Assistant

Repository files navigation

⏱️ Rapid Development Timer Assistant

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β”‚  β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘    β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•
β”‚  β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘       β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ–ˆβ–ˆβ•”β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  
β”‚  β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•  β•šβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•”β•       β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•  
β”‚  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•        β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ•β• β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β”‚  β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β•β•  β•šβ•β•β•β•         β•šβ•β•   β•šβ•β•β•šβ•β•     β•šβ•β•β•šβ•β•β•β•β•β•β•
β”‚                                                                
β”‚  [STATUS: ACTIVE] [VERSION: 2.0] [MODE: PRODUCTION]          
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

A military-grade 15-minute sprint timer engineered for maximum productivity and uninterrupted focus sessions.


🎯 MISSION OBJECTIVE

Precision-engineered focus timer built for developers who demand reliability, accuracy, and zero distractions. No bloat. No bullshit. Just pure, focused development sprints.


⚑ CORE FEATURES

[βœ“] 15-minute sprint timer with millisecond precision
[βœ“] Pomodoro cycle: Enforced 10-min breaks after 4 sessions
[βœ“] Web Worker background execution (tab-independent)
[βœ“] Persistent state across page reloads/crashes
[βœ“] Enforced audio + visual notifications
[βœ“] Smart extension warnings (2nd & 3rd+ extensions)
[βœ“] Session counter tracking (X/4 to break)
[βœ“] Dark/Light theme with localStorage persistence
[βœ“] Active task tracking with pulsating indicators
[βœ“] One-touch keyboard shortcuts (Enter to start)
[βœ“] Task completion logging & history
[βœ“] Zero external dependencies

πŸ”§ TECHNICAL STACK

Frontend:      Pure Vanilla JavaScript (ES6+)
Styling:       CSS3 with CSS Variables
Threading:     Web Worker API
Storage:       localStorage API
Notifications: Web Notifications API + HTML5 Audio
Architecture:  Event-driven, stateful persistence

πŸš€ DEPLOYMENT

# Clone the repository
git clone https://github.com/bobvasic/Rapid-Development-Timer-Assistant.git

# Navigate to directory
cd Rapid-Development-Timer-Assistant

# Serve locally (Python 3)
python3 -m http.server 8080

# OR use any static server
npx serve .

# Access at: http://localhost:8080

πŸ’‘ HOW IT WORKS

πŸ… Pomodoro Break Cycle

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Session 1 (15 min) β†’ Complete/Extend               β”‚
β”‚ Session 2 (15 min) β†’ Complete/Extend               β”‚
β”‚ Session 3 (15 min) β†’ Complete/Extend               β”‚
β”‚ Session 4 (15 min) β†’ BREAK ENFORCED                β”‚
β”‚                                                      β”‚
β”‚ β˜•οΈ Break Modal β†’ Start 10-Minute Break             β”‚
β”‚ Break Timer (10 min) β†’ Notification + Audio        β”‚
β”‚ β†’ Cycle resets β†’ Start new session                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Break Enforcement Logic:

  • After 4 completed sessions (1 hour), break modal appears
  • User must start break before continuing
  • Complete/Extend buttons hidden until break taken
  • Break completion resets session counter to 0/4
  • All state persists across page reloads

⚠️ Smart Extension Warnings

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 1st Extension  β†’ βœ“ Normal (no warning)             β”‚
β”‚ 2nd Extension  β†’ ⚠️ ORANGE WARNING (focus!)         β”‚
β”‚ 3rd+ Extension β†’ 🚨 RED ALERT (finish it!)          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

βœ… Cross-Tab/Window Reliability

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Different Tab      β†’ βœ“ Timer continues          β”‚
β”‚ Different Window   β†’ βœ“ Notification appears     β”‚
β”‚ Different App      β†’ βœ“ OS-level alert + audio   β”‚
β”‚ Page Reload        β†’ βœ“ Timer restores           β”‚
β”‚ Audio Playback     β†’ βœ“ Enforced after user act  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”Š Notification System

  • System Notifications: OS-level alerts appear regardless of active window
  • Audio Enforcement: Unlocked on first interaction, bypasses autoplay policies
  • Persistent Alerts: Notifications require manual dismissal
  • Multi-Attempt Playback: Retry mechanism ensures audio plays

πŸ’Ύ State Persistence

  • Timestamp-Based: Accurate time tracking using Date.now()
  • Auto-Save: State saved every second to localStorage
  • Crash Recovery: Automatically restores timer on page reopen
  • Elapsed Calculation: Smart math recovers exact remaining time

βš™οΈ Web Worker Architecture

Main Thread              Web Worker Thread
    β”‚                           β”‚
    β”œβ”€β”€[START TIMER]───────────>β”‚
    β”‚                           β”‚
    β”‚<────[TICK UPDATE]────────── (every 1s)
    β”‚                           β”‚
    β”‚<────[COMPLETE]───────────── (at 0s)
    β”‚                           β”‚

🎨 UI FEATURES

πŸŒ™ Dark Mode         β†’ Automatic theme switching
🟠 Active Indicator  β†’ Pulsating orange status dot
πŸ“Š Task Log          β†’ Complete history with timestamps
⌨️  Keyboard Shortcuts β†’ Enter to start, instant flow
πŸ”” Visual Feedback   β†’ Real-time countdown display

πŸ“‹ USAGE

Basic Flow

  1. Enter Task Name β†’ Type your focus objective
  2. Press Enter or click "Start 15-Minute Sprint"
  3. Stay Focused β†’ Timer runs in background
  4. Get Notified β†’ Audio + visual alert at completion
  5. Complete or Extend β†’ Mark done or add 15 more minutes

Pomodoro Cycle Flow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 1. Complete 4 focus sessions (15 min each)         β”‚
β”‚ 2. Break modal appears (enforced)                  β”‚
β”‚ 3. Click "β˜•οΈ Start 10-Minute Break"                β”‚
β”‚ 4. Break countdown begins (10:00 β†’ 0:00)           β”‚
β”‚ 5. Notification: "Break Complete!"                 β”‚
β”‚ 6. Enter new task and start next cycle             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Session Counter: Top-right displays Sessions: X/4

  • Increments after each completed 15-minute session
  • Resets to 0/4 after break completion
  • Persists across page reloads

Keyboard Shortcuts

[Enter]  β†’ Start timer (when in task input field)
[Click]  β†’ Toggle dark/light mode (theme button)

πŸ›‘οΈ RELIABILITY GUARANTEES

Feature Status Notes
Background Timing [ACTIVE] Web Worker immune to throttling
Audio Playback [ENFORCED] Multi-retry with user interaction unlock
State Recovery [PERSISTENT] Survives crashes, reloads, closures
Cross-Tab Sync [OPERATIONAL] Notification system OS-level
Accuracy [Β±1s] Timestamp-based calculation

πŸ§ͺ TESTED ENVIRONMENTS

βœ“ Chrome/Chromium 90+
βœ“ Firefox 88+
βœ“ Safari 14+
βœ“ Edge 90+
βœ“ Mobile Browsers (iOS/Android)

πŸ“ FILE STRUCTURE

Rapid-Development-Timer-Assistant/
β”œβ”€β”€ index.html          # Main application
β”œβ”€β”€ timer-worker.js     # Web Worker for background timing
β”œβ”€β”€ favicon.svg         # App icon
└── README.md          # This file

πŸ” PRIVACY & SECURITY

[βœ“] No external API calls
[βœ“] No tracking or analytics
[βœ“] No cookies
[βœ“] No data transmission
[βœ“] 100% client-side execution
[βœ“] localStorage only (local machine)

🀝 CONTRIBUTING

Found a bug? Have an enhancement?

# Fork the repo
git fork https://github.com/bobvasic/Rapid-Development-Timer-Assistant.git

# Create feature branch
git checkout -b feature/your-enhancement

# Commit changes
git commit -m "feat: your enhancement description"

# Push and create PR
git push origin feature/your-enhancement

πŸ“„ LICENSE

MIT License - Use freely, modify as needed, attribution appreciated.


🎯 MISSION STATUS: OPERATIONAL

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  System Status: [●] ONLINE            β”‚
β”‚  Timer Accuracy: [Β±1s]                β”‚
β”‚  Notification: [●] ACTIVE             β”‚
β”‚  Audio System: [●] OPERATIONAL        β”‚
β”‚  Web Worker: [●] RUNNING              β”‚
β”‚  State Persist: [●] ENABLED           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Stay focused. Ship code. Repeat. πŸš€


⭐ Star this repo | πŸ› Report Bug | πŸ’‘ Request Feature

Made with ⚑ by developers, for developers

About

For the Rapid MVC development sprints

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors