{"id":19878845,"url":"https://github.com/jakubkorytko/python-apps","last_synced_at":"2025-06-10T09:34:35.936Z","repository":{"id":150990383,"uuid":"623390489","full_name":"JakubKorytko/python-apps","owner":"JakubKorytko","description":"Extensible console application for running categorized applications from a menu that is easy to customize and share","archived":false,"fork":false,"pushed_at":"2023-11-24T16:52:04.000Z","size":1577,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-11T17:49:13.120Z","etag":null,"topics":["mit-license","open-source","poetry","python-apps"],"latest_commit_sha":null,"homepage":"","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/JakubKorytko.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-04-04T09:23:34.000Z","updated_at":"2023-11-24T17:09:16.000Z","dependencies_parsed_at":"2023-11-23T14:29:04.955Z","dependency_job_id":"292f2902-a41a-4e20-826c-bbe2ef890853","html_url":"https://github.com/JakubKorytko/python-apps","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubKorytko%2Fpython-apps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubKorytko%2Fpython-apps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubKorytko%2Fpython-apps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubKorytko%2Fpython-apps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JakubKorytko","download_url":"https://codeload.github.com/JakubKorytko/python-apps/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241309093,"owners_count":19941722,"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":["mit-license","open-source","poetry","python-apps"],"created_at":"2024-11-12T17:06:50.835Z","updated_at":"2025-03-01T02:34:12.820Z","avatar_url":"https://github.com/JakubKorytko.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python Apps\n\n[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE)\n![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54)\n\n[![Poetry](https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json)](https://python-poetry.org/)\n[![Open Source Love svg1](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://github.com/ellerbrock/open-source-badges/)\n[![Run Super-Linter](https://github.com/JakubKorytko/python-apps/actions/workflows/super-linter.yml/badge.svg)](https://github.com/JakubKorytko/python-apps/actions/workflows/super-linter.yml)\n\n## Table of Contents\n\n- [Python Apps](#python-apps)\n  - [Table of Contents](#table-of-contents)\n  - [Introduction](#introduction)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Usage](#usage)\n    - [Menu](#menu)\n    - [Categories](#categories)\n    - [Programs generated data](#programs-generated-data)\n  - [Extending the project](#extending-the-project)\n    - [Adding new categories](#adding-new-categories)\n    - [Adding new apps](#adding-new-apps)\n  - [Building the application](#building-the-application)\n  - [Troubleshooting](#troubleshooting)\n    - [Missing dependencies](#missing-dependencies)\n  - [Contributing](#contributing)\n  - [Contact](#contact)\n  - [License](#license)\n\n## Introduction\n\nThis may feel like just another collection of random Python applications made by a beginner,\nbut it is not.\n\nIt is an extensible yet simple app that allows you to run apps from a menu.\nThe apps are divided into categories and can be nested.\nThe app is designed to be easily extensible,\nso you can add your own apps and categories because the app will look for them\nin the [pyap_apps](./pyap_apps/) directory so no real programming knowledge is required.\n\nThanks to this project, you can easily create your own collection of applications and share it with others.\nFor more information, see [extending the project](#extending-the-project).\n\n## Prerequisites\n\nBefore you begin, make sure you have the following prerequisites installed on your system:\n\n- [Python 3.11.4 or later](https://www.python.org/downloads/)\n- [Poetry 1.7.1 or later](https://python-poetry.org/docs/#installation)\n\n## Installation\n\n1. Clone this repository to your local machine using Git,\nor download the ZIP file and extract it to a directory of your choice:\n\n    ```bash\n    git clone https://github.com/JakubKorytko/python-apps.git\n    ```\n\n1. Change to the project directory:\n\n    ```bash\n    cd python-apps\n    ```\n\n1. Run the following command to install the required dependencies:\n\n    ```bash\n    poetry install\n    ```\n\nYou can now run the project by executing the following command:\n\n```bash\npoetry run python-apps\n```\n\n## Usage\n\nThe application has an intuitive menu that allows you to navigate through the applications and categories,\nthat are displayed when you run the application.\n\n### Menu\n\nThe menu displays categories and apps according to the\n[pyap_apps](./pyap_apps/) directory structure.\n\nThe options are numbered and you can select them by typing the corresponding number.\n\nApplications can be identified by the `[P]` (or `[p]`) at the end of their name,\nand categories by the `[C]` (or `[c]`) at the end of their name.\nApplications will also have a yellow font color, and categories will have a blue font color.\n\nYou can get the description (if `desc.txt` exists,\nsee [extending the project](#extending-the-project)) of the selected application or category\nby typing its number followed by `?`.\n\n### Categories\n\nThe application has a built-in categories (with applications) which are located in the [pyap_apps](./pyap_apps/) directory:\n\n- [console_apps[C]](./pyap_apps/console_apps[C]/)\n- [matura_tasks[C]](./pyap_apps/matura_tasks[C]/)\n- [tkinter_apps[C]](./pyap_apps/tkinter_apps[C]/)\n\n### Programs generated data\n\nWhen one of the applications generates data, it is stored in the application directory.\n\nFor example, if you are running the `pyap_apps/(...)/App[P]/main.py` app,\nand the app generates data, it will be stored in the `pyap_apps/(...)/App[P]` directory.\nIf the applications uses a subdirectory to store the data,\nit will be stored in the corresponding subdirectory of the `pyap_apps/(...)/App[P]` directory.\n\n`(...)` represents the category directories as they can be nested.\n\n## Extending the project\n\nApp categories and apps are determined by the directories in the [pyap_apps](./pyap_apps/) directory.\nA directory can be either a category or an application, but not both.\nYou can add new categories and apps by creating new directories in the [pyap_apps](./pyap_apps/) directory.\n\nThe application will look for `pyap_apps` in the following locations:\n\n1. First, in the parent directory of the [\\_\\_main\\_\\_.py](./python_apps/__main__.py) file\n2. If not found, in the [\\_\\_main\\_\\_.py](./python_apps/__main__.py) file directory\n\nYou can rename or move the [pyap_apps](./pyap_apps/) directory to another location,\nbut you must specify the new location in the [\\_\\_main\\_\\_.py](./python_apps/__main__.py) file.\nIf you intend to build the application, you will need to update the [pyproject.toml](./pyproject.toml) file.\n\n### Adding new categories\n\nCategory directories must have a `[C]` (or `[c]`) at the end of their name.\nFor example, `pyap_apps/Category[C]` is a valid category directory,\nbut `pyap_apps/Category` is not and will be ignored by the application.\n\nCategories can contain other categories and applications.\n\nYou can add a `desc.txt` file to the category directory\nto provide a description of the category.\n\n### Adding new apps\n\nApplication directories must contain a `[P]` (or `[p]`) at the end of their name.\nFor example, `pyap_apps/App[P]` is a valid application directory,\nbut `pyap_apps/App` is not and will be ignored by the application.\n\nYou can put a `desc.txt` file in the app directory\nto provide a description of the application.\n\nThe application will look for a `main.py` file in the app directory\nand execute it if found.\n\nEach app is executed in a separate subprocess and so it must be a standalone program.\nThis makes the app more secure, and less likely to crash the main app or other apps.\n\nIf your application requires additional dependencies,\nyou can add them to the [pyproject.toml](./pyproject.toml) file manually,\nor by running the following command:\n\n```bash\npoetry add \u003cdependency\u003e\n```\n\n## Building the application\n\nTo build the application, run the following command:\n\n```bash\npoetry build\n```\n\nThe built application will be located in the `dist` directory.\nIt should contain `.whl` and `.tar.gz` files. You can install the application by running the following command:\n\n```bash\npip install \u003cpath-to-whl-or-tar.gz-file\u003e\n```\n\n## Troubleshooting\n\n### Missing dependencies\n\nRunning the `poetry install` command should be sufficient in most cases,\nbut some dependencies may need to be installed manually.\nIf any of the applications fail to run due to missing dependencies,\nmake sure that:\n\n- They are listed in the [pyproject.toml](./pyproject.toml) file\n- You have run the `poetry install` command\n- If the above steps did not help, try installing the dependencies manually\nwith a [pip](https://pip.pypa.io/en/stable/) command:\n\n    ```bash\n    pip install \u003cdependency\u003e\n    ```\n\n- If the problem persists, search the web to see if there are any additional steps required\nto install the dependency or if it is compatible with your system.\nSome dependencies may require you to install additional system packages.\n`Tkinter` is one such example on the Linux operating system.\n\n- If you are unable to find a solution, feel free to open an issue.\n\n## Contributing\n\nIf you find issues or have suggestions for improvements,\nfeel free to open an issue or submit a pull request.\nContributions are welcome!\n\n## Contact\n\nIf you have any questions, feel free to contact me at \u003cjakub@korytko.me\u003e.\n\n## License\n\nThis project is released under the MIT License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubkorytko%2Fpython-apps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakubkorytko%2Fpython-apps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubkorytko%2Fpython-apps/lists"}