Desktop app to track weekly hours, see time remaining to reach 40, and estimate a Friday clock-out time.
Input your clock in and clock out times for the week and it will auto calculate your clock out time for Friday to get 40 hours.

If no lunch time is given 60 minuts for lunch is assumed with a warning.

If your start and end times for a day are invalid date formats or in the wrong order a red error will let you know.

If you've worked more than 40 hours for a week overtime will be calculated and clock out time on Friday will be the same as your clock in time.

To learn how to use the app a helpful about page is provided inside the app.

- Download the appropriate ZIP:
- Unzip and run:
- macOS: double-click
TimeSheetCalculator.app(use right-click → Open on first run if Gatekeeper warns). - Windows: double-click
TimeSheetCalculator.exe(you may need “Run anyway” if SmartScreen prompts).
- macOS: double-click
- Open ABOUT.md in the ZIP for usage guidance.
- Enter start/end times for Monday–Thursday; add lunch minutes or leave blank to assume 60 minutes.
- Enter Friday start (or leave blank to assume 8:00 AM).
- Click Calculate or press Enter to update Total Hours Worked, Hours to 40, and Friday clock-out.
- Red = errors (invalid time, end before start, bad lunch). Yellow = assumed lunch.
- See ABOUT.md for the full usage guide.
- Prerequisites: Python 3.12+,
uvinstalled. - Setup:
uv sync - Run tests with coverage:
uv run pytest --cov=timesheet_service --cov-report=term-missinguv run pytest --cov=ui_view_model --cov-report=term-missing tests/test_ui_view_model.pyuv run pytest --cov=app --cov-report=term-missing tests/test_app_ui.py- Or use the helper script:
./tools/pytest_run_coverage.sh
- Build (mac):
./tools/build.sh(produces.appbundle wrapping a onefile binary) - Package (mac):
./tools/package.sh(producesTimeSheetCalculator_macos_vX.Y.Z.zip) - Build (Windows):
powershell -ExecutionPolicy Bypass -File tools\build.ps1 - Package (Windows):
powershell -ExecutionPolicy Bypass -File tools\package.ps1
Contributions are welcome and appreciated. To contribute please fork the repo, create a feature branch, then open a PR.
File issues for bugs or feature requests through GitHub.
- GPLv3 — see LICENSE.