ShiftTrack is a lightweight native Windows desktop time tracker for remote workers. It is built with C#, .NET 8, WPF, MVVM, SQLite through Microsoft.Data.Sqlite, and xUnit.
- Start and end a work shift.
- Add tasks for the current shift.
- Start, pause, resume, complete, edit, and delete tasks.
- Supports multiple task timers running at the same time.
- Keeps task duration source-of-truth in timestamped timing sessions.
- Shows shift elapsed time from the original shift start.
- Optional always-on-top window mode with persisted setting.
- Persists the active shift, tasks, timing sessions, and window placement locally.
- Pauses running tasks on application shutdown while keeping the shift open.
- Generates a daily report when the shift ends.
- Copies reports to the clipboard and exports them as CSV.
The SQLite database and local log are stored under the current user's local application data folder:
%LOCALAPPDATA%\ShiftTrack\
No cloud services, accounts, telemetry, API keys, or subscriptions are used.
- Windows 10 or Windows 11
- .NET 8 Desktop Runtime to run the application
- .NET SDK to build and test
The executable projects include RollForward=Major so they can run on newer installed .NET runtimes when .NET 8 is not present.
dotnet restore ShiftTrack.sln
dotnet build ShiftTrack.sln --no-restoredotnet test ShiftTrack.sln --no-restoredotnet run --project src/ShiftTrack.App/ShiftTrack.App.csprojShiftTrack.sln
src/
ShiftTrack.App/ WPF views, MVVM view models, dialogs, DI startup
ShiftTrack.Core/ Domain models, timer rules, reports, CSV export, abstractions
ShiftTrack.Infrastructure/ SQLite repositories, schema creation, file logging
tests/
ShiftTrack.Tests/ Deterministic xUnit tests with a fake clock