DEV Community

Cover image for Deskrona — Open-Source, Local-First Time Tracking & Pomodoro Timer
Abiruzzaman Molla
Abiruzzaman Molla

Posted on

Deskrona — Open-Source, Local-First Time Tracking & Pomodoro Timer

What is Deskrona?

Deskrona is a local-first, privacy-focused time tracking and productivity monitoring desktop application. Built with Tauri, Rust, and Vue 3, it runs on Windows (64-bit and 32-bit) and keeps all your data on your machine — no cloud, no telemetry, no leaks.

⬇️ Download the latest release

❤️ Support the project


Why I Built It

I wanted a time tracker that:

  1. Respects privacy — No SaaS, no accounts, no data leaving my computer
  2. Is fast — Native performance without Electron overhead
  3. Has a modern UI — Dark/light themes, smooth animations
  4. Is extensible — I can add features as needed
  5. Is open source — Full transparency, MIT license

Tauri gave me the native performance of Rust with a Vue 3 frontend, and the result is a ~7MB installer with minimal RAM usage.


Key Features

🔒 Local-First Privacy

All data lives in a SQLite database on your machine. There are no network requests for tracking data — zero telemetry. You own your data completely.

-- Everything is stored locally in SQLite
SELECT * FROM activity_events WHERE user_id = 'default_user';
Enter fullscreen mode Exit fullscreen mode

⏱ Real-Time Activity Tracking

Deskrona automatically detects:

  • Active windows and application names
  • Window titles
  • Browser URLs (Chrome, Firefox, Edge, Brave, and more)
  • Keyboard and mouse input

Idle detection marks periods without input as "idle time" based on a configurable threshold.

📸 Screenshot Monitoring

Optional automated screenshots at configurable intervals (default: 10 seconds). Multi-monitor support. Full-screen preview with click-to-view. Can be disabled anytime in settings.

📊 Dashboard & Reports

The dashboard shows:

  • Active time vs idle time today
  • Keyboard and mouse counts
  • Productivity score
  • Top applications by usage
  • Recent browser URLs

Filter by day, week, month, year, or custom date range.

👥 Multi-User Mode

Two modes available:

  • Single User — Personal tracking on your device
  • Multi-User — Company mode with admin and employee roles

Admins can create users, view team productivity, and control settings centrally.

🖥 Floating Overlay

A compact draggable overlay that shows your tracking time in real-time. Features:

  • Always-on-top mode
  • Click-through mode (clicks pass through to apps underneath)
  • Pause/resume button
  • Draggable to any screen position
  • Configurable in settings

🍅 Pomodoro Timer

Built-in Pomodoro focus session system that works alongside tracking:

  • Focus: 25 minutes (configurable)
  • Short break: 5 minutes (configurable)
  • Long break: 15 minutes after 4 pomodoros (configurable)
  • Auto-transitions between phases
  • Auto-starts when tracking starts (optional)
  • Countdown displayed in sidebar and overlay
  • No database writes — all in-memory

🌙 Themes & i18n

  • Dark and light themes with smooth transitions
  • English and Bengali localization
  • System tray integration with live timer tooltip

💾 Backup & Export

  • Automated database backups (daily/weekly/monthly)
  • Manual export and import
  • Configurable backup location

Tech Stack

Layer Technology
Frontend Vue 3, TypeScript, Vite, Chart.js
Backend Rust, Tauri 2
Database SQLite (rusqlite)
i18n vue-i18n
Input tracking device_query, active-win-pos-rs
Screenshots screenshots-rs
Charts Chart.js + vue-chartjs

Getting Started

Prerequisites

  • Node.js (latest LTS)
  • Rust toolchain
  • Tauri CLI

Build from Source

git clone https://github.com/AbiruzzamanMolla/Deskrona-Time-Tracking-Software.git
cd Deskrona-Time-Tracking-Software
npm install
npm run tauri dev     # Development mode with hot reload
npm run tauri build   # Production build
Enter fullscreen mode Exit fullscreen mode

Download Prebuilt Installers

64-bit and 32-bit MSI/EXE installers available on the releases page.


Architecture Overview

Project Structure

Deskrona-Time-Tracking-Software/
├── src/                    # Vue 3 frontend
│   ├── App.vue             # Main application component
│   └── i18n.ts             # Internationalization
├── src-tauri/              # Rust backend
│   └── src/
│       ├── main.rs         # Application entry point
│       ├── lib.rs          # Tauri commands + background threads
│       ├── db.rs           # Database management
│       ├── tracking.rs     # Activity tracking engine
│       ├── auth.rs         # Multi-user authentication
│       └── backup.rs       # Backup/restore
├── docs/                   # Landing page
│   └── index.html
└── public/
    └── overlay.html        # Floating overlay HTML/CSS/JS
Enter fullscreen mode Exit fullscreen mode

Data Flow

[Windows API] → [device_query/active-win-pos-rs] → [tracking.rs]
                                                       ↓
                                              [SQLite database]
                                                       ↓
                                              [Tauri IPC commands]
                                                       ↓
                                              [Vue 3 frontend]
Enter fullscreen mode Exit fullscreen mode

Key Design Decisions

  1. Independent tracking and sessions — The activity monitoring engine (running/paused/stopped) is separate from the session/pomodoro system. You can track activity without a session, or have a session without tracking.

  2. In-memory pomodoro — The Pomodoro timer runs entirely in memory using Rust statics. No database writes for timer state, which means no disk I/O overhead.

  3. Background thread for timers — A dedicated Rust thread updates the tray tooltip, overlay timer, and pomodoro countdown every second using thread::sleep(Duration::from_secs(1)).


What's Coming Next

  • macOS and Linux support
  • Customizable notification sounds
  • Cloud sync (optional, opt-in)
  • More Pomodoro analytics
  • Browser extension for URL tracking

Contributing

The project is open source under the MIT license. Contributions are welcome!


Built with ❤️ using Tauri, Rust, and Vue 3.

Top comments (0)