Skip to main content

A hackable GUI time tracker designed to be easily modified for user-centric automation.

Project description

ClockPuncher

Abstract

This is a small python utility app that is being designed for time-tracking. As the name suggests, this is trying to replace track.toggl.com for tracking my own work.

The end-goal is a local, open-source timer that is hackable and can automate specific tasks like uploading/submitting billable hours.

Images

'Production' GUI for usage

Productions View

Development GUI with logger and debugger windows

Development View

Installation

The best way is to use pipx and run pipx install clockpuncher or pipx run clockpuncher.

On install a folder will be created in ~/.local/Clockpuncher to contain local data storage. It should contain a sqlite db called timer.db and possibly wal files. It's literally just a sqlite database, you can access, query, and adjust as you would with any other database. This might be slightly different depending on your OS.

You can delete this folder without issue, but you will lose all your stored data.

Current Next Steps:

  • Integrate sqlite DB of timer sessions
  • Add inputs for specific task descriptions (text box)
  • Add on-the-fly graph representations
    • Task Breakdown
    • Total Hours (per task and total)
    • Total Billed (per task and total)
  • Add report CSV output
  • Add tests for main.py + gui module
  • Put on PyPI
  • Setup with pipx for app deployment
  • Add user settings with persistent storage
  • Add database back-up/cold-storage option

Repo Structure

This repo follows a pretty standard layout with main.py being the GUI front-end + database composed together to make the stopwatch app itself.

Outline:

  • clockpuncher/ - contains all code required to run Clock Puncher
    • main.py - The main file that combines GUI, database, and application logic to make the above images
    • database.py - Contains the Database class that does CRUD operations for main.py
    • models.py - Dataclasses that represent rows in the Entries and Projects table
    • platform_local_storage.py - Local storage location constants for
    • data/ - Contains local data storage. In production it stores data in data/timer.db
    • gui/ - All reusable GUI components
      • base_gui.py - Base GUI class with loggers and basic development/production switchers.
      • dev_gui.py - This holds quick GUI screens tossed together for development.
      • entry_visualization.py - Contains task_chart and entry_table components and their class definitions
      • timer.py - Contains Timer and Number GUI components that make up the clock display
    • tests - Test suite using Pytest + Hypothesis

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clockpuncher-0.1.4.tar.gz (82.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clockpuncher-0.1.4-py3-none-any.whl (86.0 kB view details)

Uploaded Python 3

File details

Details for the file clockpuncher-0.1.4.tar.gz.

File metadata

  • Download URL: clockpuncher-0.1.4.tar.gz
  • Upload date:
  • Size: 82.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.10 Linux/5.15.0-56-generic

File hashes

Hashes for clockpuncher-0.1.4.tar.gz
Algorithm Hash digest
SHA256 a011242cb3c79c0dd10f6ceb696b5aec504394a4638f5cbb47c8193e7a8781da
MD5 cc175087af0d0c030c132b66cb59c94b
BLAKE2b-256 9876184bd05a457685906749ba82b2276ab227bfa7944f09fb20a255935a43fb

See more details on using hashes here.

File details

Details for the file clockpuncher-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: clockpuncher-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 86.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.10 Linux/5.15.0-56-generic

File hashes

Hashes for clockpuncher-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a73ad850a901baa22526e6675ccbd8e4bdc16bb1197a7ba2a427bc02e4ce2367
MD5 90d962374125b30e7c87f2b1377d405e
BLAKE2b-256 372aaf2c50176ff074756b467df252b2397396e10400beb7ef584d4a5a451793

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page