A customizable sit/stand, pomodoro, and generic timer desktop app with a cute, modular dashboard. Built with Electron, React, Vite, and TypeScript.
- ✨ Three timer types: Sit/Stand, Pomodoro, Generic
- 🎨 Multiple clock display modes: Digital, Analog, Ring, Flip, and compact/minimal-friendly layouts
- 🎭 10 built-in themes: Cozy, Sakura, Forest, Neon, and Paper in Light and Dark variants
- 🖼️ User-supplied mascot/character display with global and per-timer overrides
- ⏱️ Timer continuity: resume from last time or while app is closed
- 🔊 Custom alert sounds with global defaults, per-timer overrides, and local file picker support
- 💫 Optional inspirational messages at countdown milestones
- 📊 Comprehensive stats dashboard plus per-timer day/week/month/year breakdowns
- 🎯 Low resource usage (tick engine in main process)
- 🔄 Auto-update support (GitHub Releases)
Download the latest Windows installer from Releases.
- Node.js 20+
- npm or pnpm
git clone https://github.com/itsjesski/cozy-clock.git
cd cozy-clock
npm installnpm run devThis starts the Vite dev server and Electron in dev mode.
The development server is bound to 127.0.0.1 and the app only trusts its own signed dev server instance.
npm run buildCreates an optimized build and NSIS installer.
npm run type-checknpm run lintSee PLAN.md for detailed folder structure and architecture.
- Make commits with conventional commit messages (
feat:,fix:,chore:, etc.) - Run one of:
npm run releasefor the interactive flownpm run release:patchnpm run release:minornpm run release:major
- The release script updates
CHANGELOG.md, bumps the version, creates a git tag, and pushes everything - GitHub Actions automatically builds and publishes the installer to GitHub Releases, using the newest
CHANGELOG.mdsection as the release notes - Users get auto-update notifications on next app launch
See CONTRIBUTING.md for guidelines.
See DEVELOPER.md for detailed development information.
GPL-2.0-or-later. See LICENSE for details.