Focus Clock is a small desktop productivity timer app combining a Pomodoro-technique timer with custom, user-created timers. Built with Tauri, SolidJS, and TypeScript, and designed to sit on a second monitor as a lightweight companion so it doesn't clutter your main screen. This is an early alpha release โ it was built quickly and covers Phase 1 of its own roadmap.
-
๐ Pomodoro Timer: Configurable work/break intervals (
src/routes/pomodoro). -
โฒ๏ธ Custom Timers: Create, save, and manage multiple named timers (
src/routes/timer). -
๐พ Persistent Settings: Timer configuration and preferences saved locally via
tauri-plugin-store. -
๐จ Minimal UI: Custom titlebar and a simple navigation menu, built with SolidJS + Tailwind CSS.
-
๐ป Lightweight: Minimal Rust dependency footprint โ no networking, just local settings storage.
Home: Overview of your timers and recent activity.
Navigation Menu: Quick minimal navigation menu without distractions.
Pomodoro: Start sessions with configurable intervals.
Timer Gallery: Manage your custom timers.
Pomodoro Settings: Save your Pomodoro preferences.
About: About page that describes the project.
src/
โโโ components/ # Reusable UI components (Titlebar, Navigation, ...)
โโโ routes/
โ โโโ pomodoro/ # PomodoroMain, PomodoroSettings, usePomodoro
โ โโโ timer/ # TimerMain, TimerGallery, TimerCard, NewTimerCard, useTimer
โโโ config/ # store.ts โ persistent settings
โโโ types/ # TypeScript types
โโโ style/ # Tailwind styles
src-tauri/ # Tauri backend (Rust) โ minimal, store + serde only
โโโ src/
โโโ tauri.conf.json
-
Prerequisites:
- Node.js (v16+)
- pnpm
- Rust (latest stable)
-
Install dependencies:
pnpm install
-
Run in development mode:
pnpm tauri dev
-
Build for production:
pnpm build pnpm tauri build
The bundled app will be available under
src-tauri/target/release/.
- Pomodoro timer with intervals
- Custom timers
- Persistent settings
- Stats and reports
- Advanced theming
- Cloud sync
Alpha (0.1.0). Phase 1 is complete and working; Phase 2 items above haven't been started. There's
a leftover, unused src/temp/settings.tsx from an earlier settings rewrite that never got wired in.





