A privacy-first Windows desktop widget that tracks your app usage and helps you stay aware of your digital habits. All data is stored locally on your machine — no cloud, no telemetry.
Status: Releasing pre-beta (v0.1.0). Core tracking works; blocking UI and AI chatbot are on the roadmap.
Accountability App is a lightweight, always-on-top desktop widget that runs quietly in your system tray and records which apps you use and for how long. It surfaces daily usage stats and session history in a draggable widget so you can see where your time is actually going.
Built with a Rust backend for system-level activity tracking and a React frontend for the widget UI, with a local SQLite database as the single source of truth.
- Windows app activity tracking (active window polling every 3s)
- Session-based time tracking with crash recovery
- Daily usage stats and most-used app summary
- Draggable always-on-top widget with expand/collapse views
- System tray integration
- Global hotkey (
Ctrl+Shift+A) to show/hide widget - First-run consent modal for privacy confirmation
- Clear all session data at any time
- App blocking UI (backend commands ready, UI pending)
- AI therapist chatbot (planned)
See CHANGELOG.md for version history and upcoming work.
| Layer | Technology |
|---|---|
| App Framework | Tauri 2 |
| Frontend | React 19 + TypeScript |
| State Management | Zustand |
| Backend | Rust |
| Database | SQLite via rusqlite |
| Activity Tracking | active-win-pos-rs |
| Build Tool | Vite 7 |
| Testing (Frontend) | Vitest + Testing Library |
| Testing (Backend) | Rust built-in test framework + tempfile |
You'll need the following installed on a Windows 10 or later machine:
- Node.js 18+ and npm — download
- Rust toolchain — install via rustup
- Tauri prerequisites for Windows (WebView2 is preinstalled on Windows 10+) — see the Tauri prerequisites guide
-
Clone the repository:
git clone https://github.com/D3lK1ch1/AccountabilityApp.git cd AccountabilityApp -
Install frontend dependencies:
npm install
-
Run the app in development mode:
npm run tauri dev
The first launch compiles the Rust backend, which can take a few minutes. Subsequent launches are much faster.
The project has both frontend and backend tests. If you want to verify things are working or explore the test setup:
Frontend (Vitest):
npm test # Run the frontend test suite once
npm run test:watch # Run in watch modeFrontend tests live in src/__tests__/ and cover the Zustand store, formatter utilities, and the Widget component.
Backend (Rust):
cd src-tauri
cargo test # Run the Rust unit test suiteBackend unit tests live inline at the bottom of src-tauri/src/database.rs (inside a #[cfg(test)] module) and cover session CRUD, session lifecycle updates, blocked-apps CRUD, settings CRUD, per-app usage aggregation, and total tracked time.
npm run tauri buildOutput lands in src-tauri/target/release
Click on accountabilityapp.exe for the app itself.
The video bellow shows how the Accountability App works, from general consent to app and tab tracking, clearing data and quitting the app:
High-level direction for the project. See CHANGELOG.md for version-specific planning.
- App blocking UI (backend already supports
add_blocked_app/remove_blocked_app) - AI therapist chatbot powered by a local LLM via Ollama
- Encrypted SQLite database with an OS keychain-backed local key
- Expand backend test coverage (
end_crash_session, error cases) - Add a CI pipeline
- macOS support (active window tracking — merged PR #1)
- iOS support (via the Screen Time API)
- Browser/editor extensions for tab-level tracking (database and command bridge started)
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.