I built HushWork — a minimalist workspace that combines a focus timer, layerable ambient soundscapes, and a distraction-free writing pad into a single browser tab.
Why I built it: I kept juggling between a Pomodoro app, a white noise site, and a notes app every time I wanted to get into deep work. I wanted one calm, unified
space that doesn't nag me with metrics or require an account.
How it works:
- Focus timer — Pomodoro, deep work (50/10), or custom presets with cycle tracking. Uses timestamp-based tracking instead of setInterval, so it survives browser tab
throttling and page refreshes without drifting.
- Ambient sounds — Layer rain, ocean, wind, thunder, and more with individual volume controls. All served from CDN for instant playback.
- Writing pad — Auto-saves to IndexedDB with 1s debounce. No formatting clutter, just text.
- Gentle nudges — Optional reminders for hydration, posture, and breathing with three tones: supportive, factual, or playful.
Technical details:
- Next.js + React 19 + TypeScript, Tailwind CSS
- Also ships as a Chrome extension (Manifest V3, built with Vite)
- Offline-first — everything runs locally via IndexedDB. No account required.
- Optional Pro tier adds cloud sync (Supabase), extra sounds, and themes — but core functionality is fully free
- 12 color themes with atmospheric backgrounds, dark/light modes
Privacy-first: Your data stays in your browser by default. No tracking beyond privacy-friendly Plausible analytics. No sign-up walls.
The timestamp-based timer was the most interesting technical challenge — browsers aggressively throttle setInterval in background tabs, so I store the real start time
and always compute elapsed from Date.now(). Simple in hindsight, but it makes the timer actually reliable.
Would love feedback from the HN community. What focus tools do you use, and what's missing from them?
pgebski•1h ago