The Rails Shopify app with some tools for quick starting developing shopify app.
This template combines a number of third party open source tools:
- BackEnd
- Rails builds the backend.
- FrontEnd
- Vite builds the React frontend.
- React Router is used for routing. We wrap this with file-based routing.
- React Query queries the Admin API.
i18next
and related libraries are used to internationalize the frontend.react-i18next
is used for React-specific i18n functionality.i18next-resources-to-backend
is used to dynamically load app translations.@formatjs/intl-localematcher
is used to match the user locale with supported app locales.@formatjs/intl-locale
is used as a polyfill forIntl.Locale
if necessary.@formatjs/intl-pluralrules
is used as a polyfill forIntl.PluralRules
if necessary.
- Database:
PostgreSQL
- Background Job:
These third party tools are complemented by Shopify specific tools to ease app development:
- Shopify API library adds OAuth to the Rails backend. This lets users install the app and grant scope permissions.
- App Bridge and App Bridge React add authentication to API requests in the frontend and renders components outside of the App’s iFrame.
- Polaris React is a powerful design system and component library that helps developers build high quality, consistent experiences for Shopify merchants.
- Custom hooks make authenticated requests to the Admin API.
- File-based routing makes creating new pages easier.
@shopify/i18next-shopify
is a plugin fori18next
that allows translation files to follow the same JSON schema used by Shopify app extensions and themes.
This includes gems like:
- You must create a Shopify partner account if you don’t have one.
- You must create a store for testing if you don't have one, either a development store or a Shopify Plus sandbox store.
- You must have Ruby installed.
- You must have Bundler installed.
- You must have Node.js installed.
git clone git@github.com:remy727/rails-shopify-app-starter-kit.git your-app-name
cd your-app-name
- Install the ruby dependencies:
cd web bundle install
- Run the Rails template script.
It will guide you through setting up your database and set up the necessary keys for encrypted credentials.
bin/rails app:template LOCATION=./template.rb
- Update
SHOPIFY_API_KEY
inheroku.yml
.
And your Rails app is ready to run! You can now switch back to your app's root folder to continue:
cd ..
The Shopify CLI connects to an app in your Partners dashboard. It provides environment variables, runs commands in parallel, and updates application URLs for easier development.
You can develop locally using your preferred Node.js package manager. Run one of the following commands from the root of your app:
Using yarn:
yarn dev
Using npm:
npm run dev
Using pnpm:
pnpm run dev
Open the URL generated in your console. Once you grant permission to the app, you can start development.
- Download and install the Heroku CLI.
- Navigate to your app directory:
cd my-app
- Log in to the Heroku CLI:
heroku login
- Log in to the Heroku Container Registry:
heroku container:login
- Create an app in Heroku:
heroku create -a <my-app-name> -s container
The following environment variables need to be provided for all apps:
Variable | Secret? | Required | Value | Description |
---|---|---|---|---|
HOST |
Yes | Yes | string | Heroku App Domain |
RAILS_MASTER_KEY |
Yes | Yes | string | Use value from web/config/master.key or create a new one. |
RAILS_ENV |
Yes | "production" |
||
RAILS_SERVE_STATIC_FILES |
Yes | 1 |
Tells rails to serve the React app from the public folder. | |
RAILS_LOG_TO_STDOUT |
Yes | 1 |
Tells rails to print out logs. | |
SENTRY_CURRENT_ENV |
string | Sentry Environment | ||
SENTRY_DSN |
string | Sentry DSN | ||
SENTRY_TRACES_SAMPLE_RATE |
float | Sentry Sample Rate | ||
SHOPIFY_API_KEY |
string | The client ID of the app, retrieved using Shopify CLI. | ||
SHOPIFY_API_SCOPES |
string | The app's access scopes, retrieved using Shopify CLI. | ||
SHOPIFY_API_SECRET |
string | The client secret of the app, retrieved using Shopify CLI. | ||
SHOPIFY_APP_NAME |
string | Shopify App Name |
git push heroku main
- From the Partner Dashboard, go to Apps.
- Select the app that you deployed to your hosting provider.
- On the App setup page, in the URLs section, update the App URL and Allowed redirection URL(s) settings.
- App URL: The base URL of your app. This URL should match your
HOST
environment variable. - Allowed redirection URL(s): The callback URL for your app. This is usually the same as the app URL, with
/api/auth/callback
appended.
The following are examples of URLs that you might set for Heroku:
- App URL:
https://my-app.herokuapp.com
- Allowed redirection URL(s):
https://my-app.herokuapp.com/api/auth/callback