{"id":37309957,"url":"https://github.com/hamflx/saleor-design","last_synced_at":"2026-01-16T03:00:08.291Z","repository":{"id":278784894,"uuid":"936766834","full_name":"hamflx/saleor-design","owner":"hamflx","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-21T16:57:25.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-21T17:45:14.005Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://saleor-design.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hamflx.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-21T16:45:27.000Z","updated_at":"2025-02-21T16:57:28.000Z","dependencies_parsed_at":"2025-02-21T17:46:51.272Z","dependency_job_id":"628938b2-5c40-4856-80e3-63ebfe115010","html_url":"https://github.com/hamflx/saleor-design","commit_stats":null,"previous_names":["hamflx/saleor-design"],"tags_count":0,"template":false,"template_full_name":"saleor/saleor-app-template","purl":"pkg:github/hamflx/saleor-design","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamflx%2Fsaleor-design","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamflx%2Fsaleor-design/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamflx%2Fsaleor-design/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamflx%2Fsaleor-design/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hamflx","download_url":"https://codeload.github.com/hamflx/saleor-design/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamflx%2Fsaleor-design/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28476662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T00:15:39.755Z","status":"online","status_checked_at":"2026-01-16T02:00:07.781Z","response_time":107,"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":"2026-01-16T03:00:07.947Z","updated_at":"2026-01-16T03:00:08.259Z","avatar_url":"https://github.com/hamflx.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"150\" alt=\"saleor-app-template\" src=\"https://user-images.githubusercontent.com/4006792/215185065-4ef2eda4-ca71-48cc-b14b-c776e0b491b6.png\"\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eSaleor App Template\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003eBare-bones boilerplate for writing Saleor Apps with Next.js.\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://saleor.io/\"\u003eWebsite\u003c/a\u003e\n  \u003cspan\u003e | \u003c/span\u003e\n  \u003ca href=\"https://docs.saleor.io/docs/3.x/\"\u003eDocs\u003c/a\u003e\n  \u003cspan\u003e | \u003c/span\u003e\n    \u003ca href=\"https://githubbox.com/saleor/saleor-app-template\"\u003eCodeSandbox\u003c/a\u003e\n\u003c/div\u003e\n\n\u003e [!TIP]\n\u003e Questions or issues? Check our [discord](https://discord.gg/H52JTZAtSH) channel for help.\n\n### What is Saleor App\n\nSaleor App is the fastest way of extending Saleor with custom logic using [asynchronous](https://docs.saleor.io/docs/3.x/developer/extending/apps/asynchronous-webhooks) and [synchronous](https://docs.saleor.io/docs/3.x/developer/extending/apps/synchronous-webhooks/key-concepts) webhooks (and vast Saleor's API). In most cases, creating an App consists of two tasks:\n\n- Writing webhook's code executing your custom logic.\n- Developing configuration UI to be displayed in Saleor Dashboard via specialized view (designated in the App's manifest).\n\n### What's included?\n\n- 🚀 Communication between Saleor instance and Saleor App\n- 📖 Manifest with webhooks using custom query\n\n### Why Next.js\n\nYou can use any preferred technology to create Saleor Apps, but Next.js is among the most efficient for two reasons. The first is the simplicity of maintaining your API endpoints/webhooks and your apps' configuration React front-end in a single, well-organized project. The second reason is the ease and quality of local development and deployment.\n\n### Learn more about Apps\n\n[Apps guide](https://docs.saleor.io/docs/3.x/developer/extending/apps/key-concepts)\n\n## Development\n\n#### Running app locally in development containers\n\nThe easiest way of running app for local development is to use [development containers](https://containers.dev/).\nIf you have Visual Studio Code follow their [guide](https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-an-existing-folder-in-a-container) on how to open existing folder in container.\n\nDevelopment container only creates container, you still need to start the server.\n\nDevelopment container will have port opened:\n\n1. `3000` - were app dev server will listen to requests\n\n### Requirements\n\nBefore you start, make sure you have installed:\n\n- [Node.js 22](https://nodejs.org/en/)\n- [pnpm 9](https://pnpm.io/)\n\n1. Install the dependencies by running:\n\n```\npnpm install\n```\n\n2. Start the local server with:\n\n```\npnpm dev\n```\n\n3. Expose local environment using tunnel:\n   Use tunneling tools like [localtunnel](https://github.com/localtunnel/localtunnel) or [ngrok](https://ngrok.com/).\n\n4. Install the application in your dashboard:\n\nIf you use Saleor Cloud or your local server is exposed, you can install your app by following this link:\n\n```\n[YOUR_SALEOR_DASHBOARD_URL]/apps/install?manifestUrl=[YOUR_APP_TUNNEL_MANIFEST_URL]\n```\n\nThis template host manifest at `/api/manifest`\n\nYou can also install application using GQL or command line. Follow the guide [how to install your app](https://docs.saleor.io/docs/3.x/developer/extending/apps/installing-apps#installation-using-graphql-api) to learn more.\n\n### Generated schema and typings\n\nCommand `generate` would generate schema and typed functions using Saleor's GraphQL endpoint. Commit the `generated` folder to your repo as they are necessary for queries and keeping track of the schema changes.\n\n[Learn more](https://www.graphql-code-generator.com/) about GraphQL code generation.\n\n### Storing registration data - APL\n\nDuring the registration process, Saleor API passes the auth token to the app. With this token App can query Saleor API with privileged access (depending on requested permissions during the installation).\nTo store this data, app-template use a different [APL interfaces](https://docs.saleor.io/developer/extending/apps/developing-apps/app-sdk/apl).\n\nThe choice of the APL is made using the `APL` environment variable. If the value is not set, FileAPL is used. Available choices:\n\n- `file`: no additional setup is required. Good choice for local development. It can't be used for multi tenant-apps or be deployed (not intended for production)\n- `upstash`: use [Upstash](https://upstash.com/) Redis as storage method. Free account required. It can be used for development and production and supports multi-tenancy. Requires `UPSTASH_URL` and `UPSTASH_TOKEN` environment variables to be set\n\nIf you want to use your own database, you can implement your own APL. [Check the documentation to read more](https://docs.saleor.io/developer/extending/apps/developing-apps/app-sdk/apl).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhamflx%2Fsaleor-design","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhamflx%2Fsaleor-design","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhamflx%2Fsaleor-design/lists"}