A habit tracking desktop app built with Tauri 2, SvelteKit, and TypeScript.
| Type | Description | Display |
|---|---|---|
todo |
Simple checkbox | ☐ label |
counter |
Count toward a target, optionally in sets | 3 / 20 or 1/3 sets · 3/20 |
timer |
Stopwatch with a target duration | 1:23 / 2:00 |
counter-timer |
N timed rounds | Round 2/3 · 0:18 / 0:30 |
Every habit has a start date and a repeat rule:
| Repeat | Behaviour |
|---|---|
| Daily | Active every day from start date |
| Weekly | Active on selected days of the week (Sun–Sat) |
| Monthly | Active on selected days of the month (1–31) |
| Every N days | Active every N days counting from the start date |
Habits with no start date are saved as drafts — they appear in the Habits list but not on the Today view.
The Rust backend owns the SQLite database. The frontend never touches the DB directly — all reads and writes go through typed Tauri commands (load_habits, add_habit, update_habit, delete_habit, save_log). Daily scheduling (is_active_today) is computed in Rust using chrono and returned with each habit record.
bun install
bun tauri dev
bun tauri build
Downloaded builds are blocked by Gatekeeper because the app isn't notarized. Strip the quarantine attribute to fix it:
xattr -cr /Applications/enhabitz.app
VS Code with the Svelte, Tauri, and rust-analyzer extensions.