{"id":30208330,"url":"https://github.com/amythicdev/zp","last_synced_at":"2025-10-08T06:17:54.201Z","repository":{"id":307975134,"uuid":"1029747394","full_name":"AMythicDev/zp","owner":"AMythicDev","description":"A highly opinionated projects manager","archived":false,"fork":false,"pushed_at":"2025-08-03T10:22:21.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-13T17:45:24.048Z","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":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AMythicDev.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,"zenodo":null}},"created_at":"2025-07-31T14:06:17.000Z","updated_at":"2025-08-03T10:22:24.000Z","dependencies_parsed_at":"2025-08-03T12:27:05.819Z","dependency_job_id":null,"html_url":"https://github.com/AMythicDev/zp","commit_stats":null,"previous_names":["amythicdev/zp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AMythicDev/zp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMythicDev%2Fzp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMythicDev%2Fzp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMythicDev%2Fzp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMythicDev%2Fzp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AMythicDev","download_url":"https://codeload.github.com/AMythicDev/zp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMythicDev%2Fzp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278898744,"owners_count":26065051,"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-10-08T02:00:06.501Z","response_time":56,"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-08-13T17:23:53.630Z","updated_at":"2025-10-08T06:17:54.172Z","avatar_url":"https://github.com/AMythicDev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Zp\nAn highly opinionated projects manager\n\n`zp` lets you create and manage projects. It works by maintaining a global project directory which hosts\nall your projects. It also integrates with [fzf](https://github.com/junegunn/fzf) for quickly selecting projects,\n[Zellij](https://zellij.dev/) to provide multiplexing support and workspace\npersistence and git to easily import external repositories.\n\n`zp` works for only certain set of people:\n1. Your development IDE is basically a terminal and Vim/Neovim.\n2. You use Zellij/Tmux for persisting project sessions and multiplexing.\n\nIf you don't satisfy any of the above conditions, **don't use this and go away**.\n\n## Why?\nYou are probably looking into this because\n1. You have to deal with \u003e= 5 active projects and a dozen side projects.\n2. You are a total hipster who wants to overcomplicate typing 3-4 commands everyday on the terminal.\n3. You are fine hacking and maintaining a project manager by yourself.\n\nIf you don't satisfy any of the above conditions, **don't use this and go away, and yes its a repetition.**.\n\n## Philosophy\nOnly one: type as less as possible in the terminal for project related tasks, let the fuzzy finder type for you.\n\n## Requirements\n- Python \u003e= 3.13\n- fzf\n- Zwllij\n- Have a global project directory under which you host all your projects. By default, it is assumed to be `$HOME/projects/`\n  but can be overriden by the `ZP_PROJECTS_DIR` enviroment variable\n\n## Installation\n1. Clone thw repo\n2. Run\n```sh\npip install .\n```\n\n## Docs\n### Create a new project\n```sh\nzp new [PROJECT_NAME]\n```\nThis will create a new directory under your global projects directory and start a zellij session inside that project directory.\n\n### Open project switcher\n```sh\nzp\n```\nOpens fzf and lets you select and switch to a project.\nIf executed inside an already registered project, will immediately run Zellij inside that directory. To force use the fuzzy finder rather than switching instantly, use the `-f` flag\n\n### Open project by name\n```sh\nzp sw [PROJECT_NAME]\n\n```\n**Do not use this unless you are writing a shell script or you've gone insane and want to keep hitting your fingers on your keyboard.**\n\n### Remove a project\n```sh\nzp rm [PROJECT_NAME]\n```\n1. By default, `zp` removes the associated session from Zellij, use the `--no-session` to also keep the session.\n2. Zellij leaves the project directory as it is, essentially deregistering it from `zp`. Use the `--dir` flag to also remove it\n   from the global projects directory.\n\n### Import a project\n#### Import a project as a Zp project already residing under the global projects directory\n```sh\nzp import [PROJECT_NAME]\n```\n\n#### Import a GitHub repo as a Zp project\n```sh\nzp import gh:[USERNAME]/[REPONAME]\n```\n\n#### Import a GitLab repo as a Zp project\n```sh\nzp import gl:[USERNAME]/[REPONAME]\n```\n\n#### Import a git project from a arbitrary URL\n```sh\nzp import [URL starting with http:// or https://]\n```\n\n## Extending\nClone it, change it, enjoy your life\n\n### Use Tmux over Zellij\nCreate a new file under `src/` directory, defining two functions `switch_session()` and `delete_session()` and import it in the `src/main.py`\ninstead of the `zellij.py` file. Use the `zellij.py` for an example.\n\n## Contributing\nDon'd send PRs unless its a bug or feature that everyone can benefit from.\n\nAll contributions are under the BSD 3 Clause license. See the [LICENSE](./LICENSE) file.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famythicdev%2Fzp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famythicdev%2Fzp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famythicdev%2Fzp/lists"}