{"id":13761015,"url":"https://github.com/internalfx/quickshot","last_synced_at":"2025-10-14T16:06:44.312Z","repository":{"id":28360957,"uuid":"31874822","full_name":"internalfx/quickshot","owner":"internalfx","description":"A Shopify theme development tool.","archived":false,"fork":false,"pushed_at":"2023-07-12T18:21:58.000Z","size":2833,"stargazers_count":105,"open_issues_count":6,"forks_count":19,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-14T16:06:42.649Z","etag":null,"topics":["javascript","shopify","theme"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/internalfx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2015-03-09T02:09:22.000Z","updated_at":"2025-05-01T09:36:03.000Z","dependencies_parsed_at":"2024-01-15T03:58:34.061Z","dependency_job_id":"089c0d03-f772-4fd6-9783-d6a41f194837","html_url":"https://github.com/internalfx/quickshot","commit_stats":{"total_commits":291,"total_committers":5,"mean_commits":58.2,"dds":"0.030927835051546393","last_synced_commit":"ed7d8053ba68bbf0bffbeb81b90e2090180c8efb"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/internalfx/quickshot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internalfx%2Fquickshot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internalfx%2Fquickshot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internalfx%2Fquickshot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internalfx%2Fquickshot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/internalfx","download_url":"https://codeload.github.com/internalfx/quickshot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internalfx%2Fquickshot/sbom","scorecard":{"id":491440,"data":{"date":"2025-08-11","repo":{"name":"github.com/internalfx/quickshot","commit":"54ce402571e33dd8bdf5e247fe594397623c37c8"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 1/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: ISC License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"22 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-wc69-rhjr-hc9g","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T19:16:08.693Z","repository_id":28360957,"created_at":"2025-08-19T19:16:08.693Z","updated_at":"2025-08-19T19:16:08.693Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279019558,"owners_count":26086750,"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-14T02:00:06.444Z","response_time":60,"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":["javascript","shopify","theme"],"created_at":"2024-08-03T13:01:32.397Z","updated_at":"2025-10-14T16:06:44.291Z","avatar_url":"https://github.com/internalfx.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Quickshot 4\n\n### A Shopify theme development tool.\n\n[![Join the chat at https://gitter.im/internalfx/quickshot](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/internalfx/quickshot?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![license](https://img.shields.io/npm/l/quickshot.svg)](https://github.com/internalfx/quickshot/blob/master/LICENSE)\n[![npm version](https://img.shields.io/npm/v/quickshot.svg)](https://www.npmjs.com/package/quickshot)\n\n## Features\n\n- Super fast file transfers\n- Uploads and downloads multiple files in parallel\n- Easily switch between Shopify stores and themes\n- Easy to use configuration wizard\n- Can be configured to ignore certain files when syncing\n- Uploads and downloads Shopify blogs, pages and products. You can now easily transfer product information between shops.\n\nRuns on node.js v16+.\n\n## TLDR, Installation\n\n\n`npm install -g quickshot`\n\n#### Getting nodejs\n\nQuickshot is written in JavaScript and needs nodejs to run.\nQuickshot recommends getting nodejs with [NVM](https://github.com/nvm-sh/nvm).\nOnce you have nodejs installed you can run `npm install -g quickshot`.\n\n## Getting started\n\nQuickshot is run from the command line (terminal). You can start quickshot with `quickshot` or `qs`.\n\n\u003e For the remainder of the docs we will give examples using the `qs` shortcut.\n\n#### Viewing command help\n\nRun `qs` by itself to see all the possible commands.\n\n```\n    Quickshot 4.0.0\n    ==============================\n\n    Commands:\n      quickshot config                        Creates/Updates the configuration file in current directory\n      quickshot blogs                         Manage Shopify blogs\n      quickshot pages                         Manage Shopify pages\n      quickshot products                      Manage Shopify products\n      quickshot theme                         Manage Shopify themes\n      quickshot                               Show this screen.\n```\n\n## Configuring\n\nRun `qs config` to run the configuration wizard, which will guide you through creating your Configuration file.\nYou do not need to make or edit this file by hand.\n\n#### Logging Configuration\n\nYou can enable logging to a file by choosing `options \u003e logging` from the `qs config` menu.\n\n#### Targets Configuration\n\nTargets allow you to direct Quickshot to send files to one of multiple locations. Almost every command in qs requires a target. A target is basically a specific theme at a specific shop.\n\nTargets have a name, shop, and theme.\nThis is very powerful as you can direct Shopify information wherever you wish.\n\nFor example, you could download all the theme files from your live store, and then upload them to your development shop in just 2 commands.\n\n#### Create Targets\n\nRun `qs config`\n\nGo to `targets` \u003e `Create target`\n\nYou will then be asked for all of the following information.\n\n- Target Name - Staging, Development or whatever you wish\n- Store URL - URL to the Shopify store you want to connect to (quickshot needs the full \"example URL\" as this also has the keys used to connect)\n- Theme - Quickshot will display all the available themes from your shop, use your arrow keys to select which one you want to connect to\n\nAfter configuring a target, you are returned to the Manage targets menu. From there you can edit, delete, and display a list of all configured targets. If you are finished adding targets select `\u003c Go Back` to continue.\n\n#### Edit Targets\n\nRun `qs config`\n\nGo to `targets` \u003e `Edit target`\n\nYou will then be asked for all of the following information. However, previous values will be pre-filled in for you. To keep the previous value press Enter.\n\n- Target Name - Staging, Development or whatever you wish\n- Store URL - URL to the Shopify store you want to connect to (quickshot needs the full \"example URL\" as this also has the keys used to connect)\n- Theme - Quickshot will display all the available themes from your shop, use your arrow keys to select which one you want to connect to\n\n#### Delete Targets\n\nRun `qs config`\n\nGo to `targets` \u003e `Delete target`\n\nSelect the target you wish to delete and press enter.\n\n#### List Targets\n\nRun `qs config`\n\nGo to `targets` \u003e `List targets`\n\n#### Ignoring Files\n\nyou can use a `.quickshot-ignore` file to prevent quickshot from uploading files you don't want in Shopify.\n\n`.quickshot-ignore` uses gitignore syntax\n\nFor gitignore syntax see the (Gitignore Docs)[https://git-scm.com/docs/gitignore]\n\n## Theme Download\n\n`qs theme download`\n\nDownloads theme files from the chosen target.\n\n| Option | Description |\n| --- | --- |\n| target | Explicitly select target. Allows you to bypass \"Select target\" prompt. |\n| filter | Only transfer files matching specified filter. |\n\n## Theme Upload\n\n`qs theme upload`\n\nUploads theme files to the chosen target.\n\n| Option | Description |\n| --- | --- |\n| target | Explicitly select target. Allows you to bypass \"Select target\" prompt. |\n| filter | Only transfer files matching specified filter. |\n\n## Theme Watch\n\n`qs theme watch [--sync]`\n\nWatches files for changes and uploads them to Shopify.\n\n| Option | Description |\n| --- | --- |\n| target | Explicitly select target. Allows you to bypass \"Select target\" prompt. |\n| --sync | Enable two-way sync. Quickshot will also watch remote files on Shopify and download them when they change. |\n\n## Pages Download\n\n`qs pages download`\n\nDownloads pages from the chosen target.\n\n| Option | Description |\n| --- | --- |\n| target | Explicitly select target. Allows you to bypass \"Select target\" prompt. |\n| filter | Only transfer pages matching specified filter. |\n\n## Pages Upload\n\n`qs pages upload`\n\nUploads pages to the chosen target.\n\n| Option | Description |\n| --- | --- |\n| target | Explicitly select target. Allows you to bypass \"Select target\" prompt. |\n| filter | Only transfer pages matching specified filter. |\n\n\n## Migrating from 2.x, breaking changes.\n\nThe format of `quickshot.json` has changed.\n\nThe API URL used to be constructed from three separate settings.\n\n```\n\"api_key\": \"123abc\",\n\"password\": \"789xyz\",\n\"domain\": \"shop\",\n```\n\nNow it only uses one.\n\n```\nurl\": \"https://123abc:789xyz@shop.myshopify.com/admin/api\",\n```\n\n`.quickshotignore` has been renamed to `.quickshot-ignore`\n\nQuickshot no longer reads your `.gitignore` file. Put files you need to ignore in your `.quickshot-ignore` file instead.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finternalfx%2Fquickshot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finternalfx%2Fquickshot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finternalfx%2Fquickshot/lists"}