Skip to content

About

MIT open-source time tracker for DaVinci Resolve Studio that tracks active editing and render time locally.

Topics

Resources

Contributing

Stars

5 stars

Watchers

0 watching

Forks

Repository files navigation

Resolve Time Tracker

Work in progress: Resolve Time Tracker is working, but it is still evolving. Clone it, fork it, modify it for your own DaVinci Resolve workflow, and open pull requests if you build something useful.

DaVinci Resolve Python FastAPI Electron React shadcn/ui SQLite MIT License

Resolve Time Tracker is an MIT-licensed, open-source time tracker for DaVinci Resolve Studio. It tracks billable editing time per Resolve project while avoiding the classic mistake: counting time after the editor has walked away.

Resolve Time Tracker dashboard showing the current Resolve project, tracked time, page activity chart, and recent sessions

Requirements

  • DaVinci Resolve Studio. The latest Resolve Studio release is the actively tested target; Windows with Resolve Studio 21 is currently verified.
  • Git, used to download and update the project.
  • Node.js with pnpm, used to build the desktop app. The pnpm version is pinned in frontend/package.json.

The installer supplies uv, Python 3.13, Python packages, and frontend packages. macOS and Linux support is available but still needs broader real-machine testing; see Platform Support.

Install

On Windows, use the installed DaVinci Resolve + Time Tracker shortcut to start Resolve with tracking. Use the separate Resolve Time Tracker Dashboard shortcut to view saved time and reports. To attach tracking to an already-open Resolve session, run:

Workspace > Scripts > ResolveTimeTrackerMenu
Platform Download Run
Windows install.ps1 Right-click the file and choose Run with PowerShell.
macOS install.sh sh ~/Downloads/install.sh
Linux install.sh sh ~/Downloads/install.sh

Windows users who prefer a one-command install can run:

irm https://raw.githubusercontent.com/Today20092/Davinci-Resolve-TimeTracker/main/install.ps1 | iex

This downloads and immediately runs the installer. Use the download link above instead if you want to inspect the script before running it.

If Windows blocks install.ps1, open PowerShell in your Downloads folder and run:

powershell -ExecutionPolicy Bypass -File .\install.ps1

The installer downloads the project source, installs Python dependencies, builds the dashboard, and adds the DaVinci Resolve menu script. Windows installation also creates the tracking and dashboard shortcuts and removes legacy tracker login-startup entries.

If Git or Node.js with pnpm is missing, the installer stops before changing the installation and explains what to install.

When the tracker runs

Tracking starts when you use the tracked Resolve shortcut or Resolve's Scripts menu. There is no login-startup process or watcher waiting for Resolve to open.

The headless runtime records the Resolve session without an Electron window. Opening the dashboard connects to that runtime. If tracking has not started, the dashboard opens saved data without starting tracking.

Closing the dashboard exits Electron. Tracking continues while the tracked Resolve session is open. After Resolve closes, the runtime remains only if the dashboard is still open; closing both ends the runtime. Nothing remains running between sessions. Ordinary dashboard launches use the installed build without running pnpm or rebuilding assets.

For Linux activity detection, install xprintidle and xdotool with your distro package manager. Without them, the tracker can still run, but it falls back to always-active tracking.

Update

Rerun the same installer you downloaded:

.\install.ps1
sh install.sh

Restart Resolve if it was already open.

Uninstall

Download and run the uninstaller for your platform:

Platform Download
Windows uninstall.ps1
macOS / Linux uninstall.sh
.\uninstall.ps1
sh uninstall.sh

Close Resolve and the dashboard first. The uninstaller shows every location it will remove and asks for confirmation. It separately asks whether to permanently delete tracker.sqlite3; choosing No preserves all tracked projects and time.

Use

On Windows, start DaVinci Resolve + Time Tracker. If Resolve is already open, attach tracking with:

Workspace > Scripts > ResolveTimeTrackerMenu

Open Resolve Time Tracker Dashboard to see whether time is being recorded, the open Resolve project and page, saved work sessions, settings, and report exports. Use Pause Tracking to stop the timer manually and Resume Tracking to start it again.

The dashboard alone does not start tracking. Starting Resolve through its ordinary shortcut also does not start tracking; use the tracked shortcut or Scripts menu for sessions you want recorded.

CSV export writes closed sessions only. Open active sessions are exported after they close.

Screenshots

These screenshots use sample project data to show the companion app pages.

View app screenshots

Projects

Projects table showing tracked Resolve projects and total time

Page Activity

Page activity table showing saved Resolve page sessions

Export

Export page showing CSV and PDF report options

Settings

Settings page showing idle timeout and theme controls

How Tracking Works

  • Tracks while Resolve is the foreground app and you are not idle.
  • Stops when Resolve is minimized or you switch to another app.
  • Keeps tracking during Resolve render/export.
  • Stores data locally in SQLite.
  • Exports closed sessions to CSV.
  • Never records keystrokes, mouse coordinates, screen contents, footage, or media contents.

Automated performance checks use synthetic activity and lifecycle scenarios. They do not measure CPU or memory during a real Resolve editing session.

Default data file:

Windows: %LOCALAPPDATA%\ResolveTimeTracker\tracker.sqlite3
macOS: ~/Library/Application Support/ResolveTimeTracker/tracker.sqlite3
Linux: $XDG_DATA_HOME/ResolveTimeTracker/tracker.sqlite3 or ~/.local/share/ResolveTimeTracker/tracker.sqlite3

Platform Support

  • Windows: verified with DaVinci Resolve Studio 21.
  • macOS: supported by installer and activity probes, needs real-machine smoke testing.
  • Linux: supported by installer and Resolve scripting path; proper idle/focus detection requires xprintidle and xdotool.

More detail lives in docs/platform-support.md.

Need Help?

See Troubleshooting when the Resolve menu item is missing, the tracker is disconnected, or time is not increasing.

For connection or performance problems, open Settings > Support report in the desktop app and choose Copy report or Save report. Paste or attach that report to your GitHub issue. It includes runtime and connection details, but not Resolve project names or tracking history.

Architecture

View architecture diagrams and component map

Diagram Key

Both diagrams use the same visual language:

  • Orange: where the user starts an action.
  • Blue: DaVinci Resolve.
  • Green: the desktop app and results visible to the user.
  • Purple: background work performed by the tracker.
  • Pink: data stored privately on the computer.
  • Rectangle: an action or part of the tracker; diamond: a choice; cylinder: stored data; dotted line: an explanatory note rather than a runtime step.

Runtime Flow

How Resolve, the desktop companion, the local Python sidecar, and local storage talk to each other while the tracker is running.

flowchart TD
  Menu["Tracked Resolve shortcut<br/>or Resolve's Scripts menu"] --> Tracker["Headless runtime<br/>tracks this Resolve session"]
  Dashboard["You open the dashboard"] --> App["Desktop dashboard<br/>saved data without tracking by default"]
  App <-->|Local API| Tracker

  Resolve["DaVinci Resolve<br/>project, page, and render status"] --> Tracker
  Activity["Your computer<br/>active, idle, or Resolve in background"] --> Tracker

  Tracker --> Decision{"Should this time count?"}
  Decision -->|Yes| Database[("Private local database<br/>projects, time, and settings")]
  Decision -->|No| Wait["Wait without adding time"]
  Wait --> Tracker

  Database --> App
  App --> Reports["Dashboard, CSV,<br/>and PDF reports"]

  Note["Dashboard close exits Electron.<br/>Runtime exits when the tracked Resolve session and dashboard have closed."] -.-> App

  classDef user fill:#fff7ed,stroke:#f97316,color:#7c2d12
  classDef resolve fill:#eff6ff,stroke:#2563eb,color:#1e3a8a
  classDef desktop fill:#f0fdf4,stroke:#16a34a,color:#14532d
  classDef backend fill:#eef2ff,stroke:#4f46e5,color:#312e81
  classDef data fill:#fdf2f8,stroke:#db2777,color:#831843

  class Menu,Dashboard user
  class Resolve resolve
  class App,Reports desktop
  class Tracker,Decision,Activity,Wait backend
  class Database data
Loading

Install Flow

What the one-file installer prepares before the menu item appears inside DaVinci Resolve.

flowchart TD
  Download["Download and run<br/>the installer for your computer"]
  Download --> Prepare["The installer prepares<br/>the tracker and desktop app"]
  Prepare --> Menu["The tracker is added to<br/>Resolve's Scripts menu"]
  Prepare --> Shortcuts["Windows tracking and dashboard shortcuts<br/>replace legacy login-startup entries"]
  Shortcuts --> Ready["Installation complete<br/>nothing runs at sign-in"]
  Menu --> Ready
  Ready --> Use["Use the tracked Resolve shortcut<br/>or attach from Resolve's Scripts menu"]

  classDef bootstrap fill:#fff7ed,stroke:#f97316,color:#7c2d12
  classDef setup fill:#eef2ff,stroke:#4f46e5,color:#312e81
  classDef resolve fill:#eff6ff,stroke:#2563eb,color:#1e3a8a

  class Download bootstrap
  class Prepare setup
  class Menu,Shortcuts,Ready,Use resolve
Loading
Area Files Responsibility
Plugin entry scripts/ResolveTimeTracker.py Opens the built dashboard by default; --tracked-launch starts or attaches Resolve tracking, and --api attaches a dashboard owner to the managed runtime.
Install path install.py, install.ps1, install.sh, scripts/install_resolve_menu.py Prepares Python and frontend dependencies, then installs the Resolve Scripts-menu launcher.
Interface frontend/ Electron owns the dashboard window and desktop PDF printing and exits when the window closes; React, Vite, Tailwind, and shadcn/ui render the dashboard.
Runtime lifecycle src/resolve_time_tracker/runtime_host.py, src/resolve_time_tracker/tracked_launch.py Shares one runtime per database while a tracked Resolve session or dashboard owns it. Publishes an ephemeral localhost endpoint in the database's .runtime.json file.
Backend API src/resolve_time_tracker/api.py FastAPI exposes localhost commands, exports, server-sent invalidations, and the complete dashboard read model consumed by React.
Tracking rules src/resolve_time_tracker/tracking_engine.py Converts Resolve/runtime snapshots into billable Sessions with heartbeats.
Resolve adapter src/resolve_time_tracker/resolve_bridge.py Reads project, Page, render, timeline, idle, and foreground state.
Storage src/resolve_time_tracker/database.py Stores Projects, active Session, closed Sessions, settings, heartbeat recovery, summaries, and CSV output in SQLite.

Development and Contributing

Local checkouts also install Workspace > Scripts > ResolveTimeTrackerDevMenu. It starts the Vite development server and Electron with hot reload; use the normal ResolveTimeTrackerMenu entry to attach tracking to the current Resolve session. The dashboard shortcut opens the built app.

The Development Guide covers prerequisites, repository structure, local startup, API access, tests, linting, and builds. An AI coding agent can use the copyable Agentic Development Prompt to prepare and verify a checkout. See CONTRIBUTING.md before opening a pull request.

Credits

The project is inspired by Jamie Fenn's DaVinci Resolve time tracker concept and launch video:

This is an independent open-source implementation. It is not affiliated with, endorsed by, or a copy of Jamie Fenn's commercial product.

License

MIT. See LICENSE.

About

MIT open-source time tracker for DaVinci Resolve Studio that tracks active editing and render time locally.

Topics

Resources

Contributing

Stars

5 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages