Windows 11 desktop screen-time tracker built with Electron + React + TypeScript.
- Per-app active time tracking (foreground app sampling every 1s)
- Idle detection (default 5 minutes)
- Local-only SQLite storage (
%APPDATA%/ArkWatch/arkwatch.db) - System tray controls (open, pause/resume, quit)
- Auto-start at login toggle
- Neo-brutalist dashboard using shadcn/ui + Merriweather font
- Electron + electron-vite
- React + TypeScript + Tailwind + shadcn-style UI primitives
- SQLite (
sqlite+sqlite3) - Vitest for unit/integration tests
bun install
bun run devbun run typecheck
bun run test
bun auditbun run buildbun run distUnsigned installer output:
release/0.1.0/ArkWatch-0.1.0-setup.exe
ArkWatch now uses Electron's auto-updater in packaged builds.
- Checks for updates 15 seconds after startup, then every 6 hours
- Downloads updates automatically in the background
- Shows live download progress in the dashboard
- Prompts the user to restart when the update is ready
- Installs automatically on quit if the user chooses "Later"
Updates are pulled from GitHub Releases (Subvius/arkwatch) via electron-builder publish config.
$env:GH_TOKEN = "<github-token-with-repo-access>"
bun run dist:publishThis uploads installer/update metadata (latest.yml, blockmap, setup .exe) so existing installs can auto-update.
- The project keeps signing optional for local builds (
signAndEditExecutable: false). Windows EXE metadata/icon branding is applied inbuild/after-pack.cjsviarcedit, so ArkWatch appears correctly in Task Manager and shell surfaces. - To enable code signing for production, provide standard Electron Builder signing environment variables (for example
CSC_LINKandCSC_KEY_PASSWORD) and adjust signing options as needed.