UXFocus is a distraction-light desktop productivity app for structured focus sessions.
It combines:
- a daily schedule planner,
- a live session timer,
- movement and wellness reminders,
- schedule import/export,
- and desktop reminder popups.
Built with React + TypeScript + Tailwind + Electron.
If you just want to run the desktop app, follow these steps.
- Node.js 18 or newer (includes npm)
- Docker Desktop
After installing Docker Desktop, open it once and wait until it says Docker Engine is running.
From the project folder, run:
npm installOn Windows, run:
scripts/start-uxfocus.vbsWhat this launcher does:
- Starts Docker Desktop if needed.
- Builds/starts the local container.
- Opens the UXFocus desktop window.
Auto-start at Windows login:
powershell -ExecutionPolicy Bypass -File scripts/install-windows-startup.ps1Manual desktop shortcut:
- Right-click scripts/start-uxfocus.vbs.
- Select Send to > Desktop (create shortcut).
- Rename the shortcut to UX Focus V2.
- Confirm Docker Desktop is open and running.
- Run scripts/start-uxfocus.vbs again.
- First launch after reboot may take longer while Docker starts.
- Open Settings and choose time format/theme.
- Add your tasks in Schedule (name + start/end + type).
- Toggle reminders for tasks you want alerts for.
- Start the timer on your current task.
- Export your schedule periodically as a backup JSON.
- Imported schedule files are read and parsed, then normalized schedule data is saved locally.
- Local runtime data is stored under .cache/electron-user-data in local desktop workflows.
- Personal runtime schedule data is ignored by git via .gitignore rules.
Use this section if you want to develop or contribute to UXFocus.
- Node.js 18+
- npm 9+
- Docker Desktop
npm installnpm run devnpm run desktop:devnpm test
npm run build
npm run docker:build
npm run docker:up- src/app: app composition (App.tsx, AppShell.tsx) and app-level orchestration hooks
- src/features: feature boundaries (schedule, timer, reminders, settings, import-export)
- src/components/shared: cross-feature shared UI components
- src/lib: infrastructure modules (audio, platform, storage, time)
- electron: main/preload process code and Electron-facing tests
- Follow architecture guidance in docs/architecture.md.
- Keep feature ownership inside src/features/.
- Put shared product UI in src/components/shared.
- Put infrastructure code in src/lib.
- Avoid cross-feature coupling.
No license file is currently defined in this repository.