{"id":13878836,"url":"https://github.com/kirillplatonov/shopify-hotwire-sample","last_synced_at":"2026-03-09T13:05:43.021Z","repository":{"id":38737689,"uuid":"332202221","full_name":"kirillplatonov/shopify-hotwire-sample","owner":"kirillplatonov","description":"A sample app for Shopify's JWT integration with Hotwire Turbo","archived":false,"fork":false,"pushed_at":"2024-09-29T20:05:57.000Z","size":1483,"stargazers_count":147,"open_issues_count":2,"forks_count":41,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-04-04T12:07:27.382Z","etag":null,"topics":["jwt","rails","ruby","shopify"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kirillplatonov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"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},"funding":{"github":["kirillplatonov"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2021-01-23T12:14:01.000Z","updated_at":"2025-01-27T07:39:41.000Z","dependencies_parsed_at":"2024-01-13T20:45:11.889Z","dependency_job_id":"4fb3ea1c-7fdb-4ca3-b419-b760076eebe3","html_url":"https://github.com/kirillplatonov/shopify-hotwire-sample","commit_stats":{"total_commits":109,"total_committers":14,"mean_commits":7.785714285714286,"dds":0.6238532110091743,"last_synced_commit":"bb2e74e10963ffd13660ce00c830cb8585ed49bc"},"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/kirillplatonov/shopify-hotwire-sample","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirillplatonov%2Fshopify-hotwire-sample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirillplatonov%2Fshopify-hotwire-sample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirillplatonov%2Fshopify-hotwire-sample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirillplatonov%2Fshopify-hotwire-sample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kirillplatonov","download_url":"https://codeload.github.com/kirillplatonov/shopify-hotwire-sample/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirillplatonov%2Fshopify-hotwire-sample/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30297111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T11:12:22.024Z","status":"ssl_error","status_checked_at":"2026-03-09T11:10:54.577Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["jwt","rails","ruby","shopify"],"created_at":"2024-08-06T08:02:01.518Z","updated_at":"2026-03-09T13:05:43.000Z","avatar_url":"https://github.com/kirillplatonov.png","language":"Ruby","funding_links":["https://github.com/sponsors/kirillplatonov"],"categories":["Ruby"],"sub_categories":[],"readme":"# Shopify Hotwire Sample\n\n\u003e 🔒 Future updates to app template will be published in private repository available only for Github Sponsors. The new version with App Bridge 4, Shopify CLI 3, and the other improvements is already there. [Become a sponsor](https://github.com/sponsors/kirillplatonov) to get an access.\n\nThe sample app includes:\n- JWT integration for [Hotwire Turbo](https://turbo.hotwired.dev/)\n- JWT integration for [Rails Request.JS](https://github.com/rails/request.js)\n- Integration with AppBridge 3.x\n- [Polaris ViewComponents](https://github.com/baoagency/polaris_view_components)\n- [Hotwire::Livereload](https://github.com/kirillplatonov/hotwire-livereload)\n\n![Shopify Hotwire Sample](.github/assets/preview.png)\n\n## Previous versions\n\n- App Bridge 1 sample can be found in [`app-bridge-1`](https://github.com/kirillplatonov/shopify-hotwire-sample/tree/app-bridge-1) branch\n- App Bridge 2 sample can be found in [`app-bridge-2`](https://github.com/kirillplatonov/shopify-hotwire-sample/tree/app-bridge-2) branch\n\n## Dependencies\n\n- Redis\n- Postgres\n\n## OAuth Tunnel in Development\n\nIn order to redirect OAuth requests securely to localhost, you'll need to setup a tunnel to redirect from the internet to localhost.\n\nTo do that, you can [install the `cloudflared` CLI tool](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/), and run:\n\n```shell\n# Note that you can also use a different port\ncloudflared tunnel --url http://localhost:3000\n```\n\nYou will need to keep this window running to maintain the tunnel during development.\n\nFor more advanced tunnel setup check out article [Setting up Cloudflare Tunnel for development](https://kirillplatonov.com/posts/setting-up-cloudflare-tunnel-for-development/).\n\n## Quick start\n\nTo run this sample locally, you can clone this repository and follow these steps:\n\n1. Connect to Shopify app:\n\n```shell\nyarn shopify app config link\n```\n\n2. Pull Shopify app credentials:\n\n```shell\nyarn shopify app env pull\n```\n\nIt will generate `.env` file with Shopify API credentials.\n\n3. Add `HOST` with your cloudflare tunnel to `.env` file:\n\n```\nHOST=https://\u003cYour tunnel host\u003e\n```\n\n4. Update your app URLs in the Shopify Partner dashboard to point to your tunnel.\n\nSet the `App URL` to `https://\u003cyour tunnel host\u003e/` and the `Allowed redirection URL(s)` to `https://\u003cyour tunnel host\u003e/auth/shopify/callback`.\n\n5. Setup Rails app:\n\n```shell\nbin/setup\n```\n\n6. Start the app:\n\n```shell\nbin/dev\n```\n\n7. Install and open this app on a development shop.\n\n## Billing\n\nThis sample uses simple billing configuration provided by `shopify_app` gem. You can configure it in `config/initializers/shopify_app.rb` using `config.billing` setting.\n\n## Heroku Setup\n\nTo run your app in Heroku you need add the Shopify API Key, Shopify API Secret and Host to your config vars. You find the API Key and API Secret in your app setup. The host is your heroku app domain.\n\nThis templates config vars are:\n`SHOPIFY_API_KEY`, `SHOPIFY_API_SECRET`, `HOST`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkirillplatonov%2Fshopify-hotwire-sample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkirillplatonov%2Fshopify-hotwire-sample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkirillplatonov%2Fshopify-hotwire-sample/lists"}