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
VS Code with the Svelte, Tauri, and rust-analyzer extensions.