{"id":26658221,"url":"https://github.com/ltbringer/boxtime","last_synced_at":"2025-08-16T11:33:43.022Z","repository":{"id":214414564,"uuid":"736399561","full_name":"ltbringer/boxtime","owner":"ltbringer","description":"Analyze timeboxed events on your calendar.","archived":false,"fork":false,"pushed_at":"2024-01-06T12:39:59.000Z","size":1408,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T09:18:58.303Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ltbringer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-12-27T19:52:00.000Z","updated_at":"2023-12-29T19:38:54.000Z","dependencies_parsed_at":"2024-01-06T13:45:07.898Z","dependency_job_id":null,"html_url":"https://github.com/ltbringer/boxtime","commit_stats":null,"previous_names":["ltbringer/boxtime"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ltbringer/boxtime","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ltbringer%2Fboxtime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ltbringer%2Fboxtime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ltbringer%2Fboxtime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ltbringer%2Fboxtime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ltbringer","download_url":"https://codeload.github.com/ltbringer/boxtime/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ltbringer%2Fboxtime/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270706257,"owners_count":24631648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-25T09:19:04.846Z","updated_at":"2025-08-16T11:33:43.000Z","avatar_url":"https://github.com/ltbringer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BoxTime\n\nAn application that helps you understand the distribution of time across different categories of\ntasks that you perform.\n\nYou need:\n\n- A clone of this project.\n- Google Calendar\n- Habit of timeboxing tasks.\n\n\n\n## Installation\n\nYou need:\n\n1. Miniconda/conda or any other environment manager that allows installing and switching python versions.\n\n    ```shell\n    conda create -n timebox python=3.10 # 3.10 or higher works\n    ```\n\n2. Python 3.10 or above.\n3. `git`: To clone this project.\n4. jupyter notebook or vscode jupyter extension.\n5. A google cloud account.\n\n    \u003cdetails\u003e\n    \u003csummary\u003eGetting GCP credentials\u003c/summary\u003e\n    You'd need to request credentials from google cloud to access the calendar API.\n    [This guide](https://developers.google.com/calendar/api/quickstart/python) outlines the steps needed to acquire the credentials. \n\n    ![Google credentials page](./resources/image.png)\n    Once you hit create, you will be able to download the credentials. The file is originally named as `client_secret_(\\d+)-[a-z0-9]+.apps.googleusercontent.com.json`\n    \u003c/details\u003e\n\n6. Create a `credentials` dir at the root and save the credential as `google.credentials.json`.\n7. Launch the sketch.ipynb.\n8. (Optional) You can install custom fonts if you prefer that to the default selected by matplotlib. Clearing the font cache in `~/.cache/matplotlib/` might be necessary.\n\n## Demo\n\n### Quantitative\n\n\u003cdetails\u003e\n\u003csummary\u003eQuality of time spent over a year\u003c/summary\u003e\n\n![Heatmap showing time spent](./resources/charts/heatmap.png)\nThis chart penalizes working longer hours as much as staggeringly less. However, this is a judgement based on quantity and misses importance of themes like:\n\n- _Great work done efficiently_.\n- _Time taken to resolve major outages._\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDistribution of time over different task categories\u003c/summary\u003e\n\n![Violin plot showing distribution of time](./resources/charts/violin.png)\nThis chart delves deeper into the time spent, to highlight attempts at juggling various types of work. This chart values consistency and makes one-off moments clearer.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eTime balancing\u003c/summary\u003e\n\n\u003cimg src='./resources/charts/radar.png' width='500'\u003e\n\nThis chart helps making comparison with others operating at the target role. This could vary by person and industry, but the area and shape can help you identify if efforts are at least in the right direction.\n\n\u003c/details\u003e\n\n### Qualitative\n\nThe above charts aren't are sure sign of progress but they help you with direction. If business impact is your strongest index, well...? folks should be excited?\n**or** the way impact is measured, delivered, defined, etc might be misunderstood. Either way, the chart's job is to provoke thoughts.\n\nThere are more blind spots that are unaddressed by a time boxed calendar. The calendar shows what you are working on, what you have noticed. It can't talk about the things\nyou are missing or avoiding. To help you with that, we will share a simple contract around an emotion journal.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fltbringer%2Fboxtime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fltbringer%2Fboxtime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fltbringer%2Fboxtime/lists"}