Skip to content

PythonSmall-Q/TimeLens

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TimeLens Logo

TimeLens, a lightweight screen time tracker & floating widget manager for your desktop

CI Release License: MIT Platform

简体中文 · English


✨ Features

  • Screen Time Tracking — Automatically records foreground app usage with per-app daily totals, hourly distribution charts, 7-day trends, and a 365-day usage heatmap.
  • Insight Hub — Discover "What Changed" between periods, identify distraction hotspots, and explore a unified timeline across desktop, browser, and interruptions.
  • Floating Widgets — Transparent, frameless, always-on-top overlays: analog/digital clock, drag-reorder to-do list, multi-mode timer, sticky notes, habit tracker, and desktop pet.
  • Glassmorphic UI — Dark-first design with backdrop blur, subtle transparency, and gradient accents throughout.
  • App Limits & Goals — Set daily limits and productivity goals for apps or categories, with progressive notifications before you exceed them.
  • Focus Mode — One-click focus sessions with automatic rules and deep-work time logging.
  • Browser & VS Code Integration — Browser extension captures domain-level web usage; VS Code extension tracks coding time by language and project.
  • Third-party Widget SDK — Open widget SDK v2 with permission matrix, audit logs, and a developer harness.
  • Data Health & Encrypted Backup — Integrity checks, gap scans, orphaned-row cleanup, AES-256-GCM encrypted backups, and multi-profile isolation.
  • Local API Server — Built-in API server with scoped tokens, allowlist, and rate limiting for widgets and external tools.
  • System Tray — Minimize to tray; create new widgets, pause tracking, or quit from the tray menu.
  • Persistent Sessions — Widget layouts and positions are restored on every launch via SQLite.
  • Multi-language — Ships with 8 languages: en, zh-CN, zh-TW, ja, ko, fr, de, es; easily extensible (see Adding a Language).

🗺 Product Ecosystem

TimeLens is more than a desktop app — it's a screen-time platform with cross-tool integrations:

Component Path Description
TimeLens Desktop src/ + src-tauri/ Main Tauri + React application with tracking, insights, widgets, and settings.
Browser Extension browser-extension/ Collects domain-level web usage and merges it with desktop stats.
VS Code Extension vscode-extension/ Tracks coding sessions by language, project, and workspace.

🛠 Tech Stack

Layer Technology
Desktop shell Tauri 2.x
UI framework React 18 + TypeScript 5
Styling Tailwind CSS 3.4 + glassmorphism utilities
State management Zustand 4.5
Charts Recharts 2.12
i18n i18next + react-i18next
Widget DnD @dnd-kit/core + @dnd-kit/sortable
Database SQLite via rusqlite (bundled)
Build tool Vite 5

🚀 Quick Start

Prerequisites

Tool Version
Node.js ≥ 18
Rust ≥ 1.77
Tauri CLI 2.x (cargo install tauri-cli --version "^2")
WebView2 (Windows) Bundled with Windows 11 / downloadable for Win 10
Xcode (macOS) Latest stable

Development

# 1. Clone
git clone https://github.com/PythonSmall-Q/TimeLens.git
cd TimeLens

# 2. Install frontend dependencies
npm install

# 3. Start dev server + Tauri window
npm run tauri:dev

Production Build

npm run tauri:build
# Outputs:
#   Windows: src-tauri/target/release/bundle/msi/*.msi
#            src-tauri/target/release/bundle/nsis/*.exe
#   macOS:   src-tauri/target/release/bundle/dmg/*.dmg

Release Publishing (v0.5.0 example)

# 1. Push master first (current repo convention)
git push origin refs/heads/master:refs/heads/master

# 2. Create and push the version tag
git tag -a v0.5.0 -m "release: v0.5.0"
git push origin v0.5.0

Notes: Pushing a v* tag triggers .github/workflows/release.yml.


🗂 Project Structure

TimeLens/
├── src/                        # React frontend
│   ├── components/             #   Shared UI components
│   ├── i18n/                   #   i18next config & locale files
│   ├── pages/                  #   Dashboard, WidgetCenter, Settings
│   ├── services/               #   Tauri command wrappers
│   ├── stores/                 #   Zustand state stores
│   ├── types/                  #   Shared TypeScript types
│   ├── utils/                  #   Formatting helpers
│   └── widgets/                #   Floating widget components
├── src-tauri/                  # Rust backend
│   ├── src/
│   │   ├── commands/           #   Tauri command handlers
│   │   ├── db/                 #   SQLite queries
│   │   ├── models/             #   Serde data structs
│   │   └── monitor/           #   Background window poller
│   ├── capabilities/           #   Tauri 2 permission manifests
│   ├── Cargo.toml
│   └── tauri.conf.json
├── .github/workflows/          # CI + release automation
└── docs/                       # Developer documentation

🧩 Widget Development


🌐 Adding a Language

See docs/ADD_LANGUAGE.md for a step-by-step guide.


🤝 Contributing

Please read CONTRIBUTING.md before submitting pull requests.


🗺 Roadmap


📋 Changelog

See CHANGELOG.md.


📄 License

MIT © 2026 TimeLens Contributors

About

App based on tauri that can record and show your screen time usage, with great widgits supported!

Topics

Resources

Contributing

Stars

Watchers

Forks

Contributors