{"id":27629411,"url":"https://github.com/flowkeeper-org/fk-desktop","last_synced_at":"2025-04-23T15:17:05.037Z","repository":{"id":213986190,"uuid":"724082501","full_name":"flowkeeper-org/fk-desktop","owner":"flowkeeper-org","description":"Flowkeeper desktop application","archived":false,"fork":false,"pushed_at":"2025-04-21T06:58:34.000Z","size":70915,"stargazers_count":130,"open_issues_count":62,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-23T15:16:51.410Z","etag":null,"topics":["desktop-application","free","gplv3","linux-application","macos-application","pomodoro","pomodoro-technique","pomodoro-timer","python3","qt6","windows-application"],"latest_commit_sha":null,"homepage":"https://flowkeeper.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flowkeeper-org.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-27T11:09:51.000Z","updated_at":"2025-04-22T22:24:22.000Z","dependencies_parsed_at":"2024-03-09T14:48:01.643Z","dependency_job_id":"89afe108-b6f5-43b9-bc97-d4a7338ccdbc","html_url":"https://github.com/flowkeeper-org/fk-desktop","commit_stats":null,"previous_names":["flowkeeper-org/fk-desktop"],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowkeeper-org%2Ffk-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowkeeper-org%2Ffk-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowkeeper-org%2Ffk-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowkeeper-org%2Ffk-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flowkeeper-org","download_url":"https://codeload.github.com/flowkeeper-org/fk-desktop/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250457781,"owners_count":21433734,"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","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":["desktop-application","free","gplv3","linux-application","macos-application","pomodoro","pomodoro-technique","pomodoro-timer","python3","qt6","windows-application"],"created_at":"2025-04-23T15:17:04.479Z","updated_at":"2025-04-23T15:17:05.032Z","avatar_url":"https://github.com/flowkeeper-org.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flowkeeper\n\n![Pipeline status](https://github.com/flowkeeper-org/fk-desktop/actions/workflows/main.yml/badge.svg?branch=main \"Pipeline status\")\n[![Coverage Status](https://coveralls.io/repos/github/flowkeeper-org/fk-desktop/badge.svg?branch=main)](https://coveralls.io/github/flowkeeper-org/fk-desktop?branch=main)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=flowkeeper-org_fk-desktop\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=flowkeeper-org_fk-desktop)\n\nFlowkeeper is an independent Pomodoro Technique desktop timer for power users. It is a \nsimple tool, which focuses on doing one thing well. It is Free Software with open source. \n\nVisit [flowkeeper.org](https://flowkeeper.org) for screenshots, downloads and FAQ.\n\nIf you used it, I will appreciate it if you take a minute to \n[provide some feedback](https://www.producthunt.com/products/flowkeeper/reviews/new). \nYour constructive criticism is welcome!\n\n![Flowkeeper screenshot](doc/fk-simple.png \"Flowkeeper screenshot\")\n\n## Building\n\nFlowkeeper has a single major dependency -- Qt 6.6, which in turn requires Python 3.8 or later (3.9+ if you\nuse Qt 6.7). To create installers and binary packages we build Flowkeeper on Ubuntu 22.04 using Python 3.11 \nand the latest version of Qt (6.7.2 at the time of writing). We also occasionally test it on Ubuntu 20.04 \nagainst Qt 6.2.4 and Python 3.8.10. Some features might not work as expected with Qt 6.2.x.\n\nOLD ADVICE, which might not be relevant to you anymore: If you want to build it with Ubuntu 20.04 or Debian 11, \nboth of which come with older versions of Python, you would have to \n[compile Python 3.11](https://fostips.com/install-python-3-10-debian-11/). \u003c-- Try the system Python version \nfirst. \n\n### Building for Linux and macOS\n\nCreate a virtual environment and install dependencies:\n\n```shell\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\nNote that `requirements.txt` contains ALL libraries and tools needed to run, test and\ncreate installers. You can use `requirements-run.txt` if you only want to debug\nFlowkeeper locally, or `requirements-build.txt` if you also want to create distributable /\nportable bundles.\n\nThen you need to \"generate resources\", which means converting data files in `/res` directory into\nthe corresponding Python classes. Whenever you make changes to files in `/res` directory, you need\nto rerun this command, too:\n\n```shell\n./generate-resources.sh\n```\n\nFrom here you can start coding. If you want to build an installer, refer to the CI/CD pipeline in\n`.github/workflows/build.yml`. For example, if you want to build a DEB file, you'd need to execute \n`pyinstaller installer/normal-build.spec` and then `./package-deb.sh`. \n\n### Building for Windows\n\nConsult the above section for details. In short, install Python 3.11. Then:\n\n```shell\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\nGenerate resources:\n\n```shell\ncd res\npyside6-rcc --project -o resources.qrc\npyside6-rcc -g python resources.qrc -o \"../src/fk/desktop/resources.py\"\n```\n\nPackage as a distributable / portable bundle (OPTIONAL):\n\n```shell\npyinstaller installer\\portable-build.spec\npyinstaller installer\\normal-build.spec\n```\n\n## Testing Flowkeeper\n\nTo execute Flowkeeper:\n\n```shell\nPYTHONPATH=src python -m fk.desktop.desktop\n```\n\nTo run unit tests w/test coverage (install requirements from \n`requirements.txt` or `requirements-test.txt` first):\n\n```shell\nPYTHONPATH=src python -m coverage run -m unittest discover -v fk.tests\npython -m coverage html\n```\n\nTo execute end-to-end tests:\n\n```shell\nPYTHONPATH=src python -m fk.desktop.desktop --e2e\n```\n\n## Technical details\n\n- [Design considerations](doc/design.md)\n- [Data model](doc/data-model.md)\n- [Strategies](doc/strategies.md)\n- [Events](doc/events.md)\n- [UI actions](doc/actions.md)\n- [CI/CD pipeline](doc/pipeline.md)\n- [Building for Alpine Linux](doc/build-alpine.md)\n\n## Copyright\n\nCopyright (c) 2023 - 2024 Constantine Kulak.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowkeeper-org%2Ffk-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowkeeper-org%2Ffk-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowkeeper-org%2Ffk-desktop/lists"}