Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(README.md): add more comprehensive instructions for developing application kit bundles in readme #2346

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from
Draft
111 changes: 95 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,40 +23,119 @@ $ npx @commercetools-frontend/create-mc-app my-new-custom-application-project --

## Developing application-kit packages

Install the dependencies (uses yarn workspaces):
### Initial Installation
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This all section can be removed to be honest. We can mention to check and ensure to have the .env.local file but I wouldn't document its content. Instead you can add more information and give hints in the template file itself.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screen Shot 2021-09-21 at 2 44 09 PM

@emmenko
When you initially pull down the repo this is the result when you run yarn build:watch after adding the environment variables without running yarn build first.


1. Clone this repo

```bash
$ git clone https://github.com/commercetools/merchant-center-application-kit.git
```
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would omit this part to be honest, it does not seem relevant.


2. Add necessary environment variables

> Navigate to `merchant_center_application_kit/playground`, duplicate `.env.local.template`, name the duplicate `.env.local` and add these values:

```bash
MC_API_URL="https://mc-api.europe-west1.gcp.commercetools.com" # for prod
APP_ID="" # can be an empty string for dev
CTP_INITIAL_PROJECT_KEY=<your-project-name> # the name of any project you have access to on prod/stage
```

3. Build and run the application kit

> In a new terminal window, navigate to the project root directory - `/merchant_center_application_kit` - and run:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> In a new terminal window, navigate to the project root directory - `/merchant_center_application_kit` - and run:
> In a new terminal window, navigate to the project root directory and run:


```bash
$ yarn && yarn prebuild && yarn build && yarn build:watch
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This command does not make much sense. Simply run build.

Suggested change
$ yarn && yarn prebuild && yarn build && yarn build:watch
$ yarn build

FYI: prebuild is automatically executed when the build command is executed. Every npm script that starts with pre<name of command> does that.

```

> Confirm that the watch is running successfully, you should see:

```bash
> "info @commercetools-frontend/application-shell waiting for changes..."
>...
```

4. Remove fake permission:
> `PERMISSIONS.ViewPlaygroundStateMachines` which is required by playground is a fake permission and you might need to remove it
> in order to be able to run and view the application. You'll need to remove it twice in `custom-application-config.mjs` and once in
> `routes.js` so that `permissions`/`demandedPermissions` are just empty objects:

`custom-application-config.mjs`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand this point. Why fake?

Copy link

@jmcreasman jmcreasman Sep 21, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screen Shot 2021-09-21 at 3 00 10 PM

@emmenko
"Fake" might not be the best terminology but without removing them in those two files you cannot access the playground (see screenshot). Fedor helped me discover this and he called them fake permissions which is why I used that term but I can change it if there's a better alternative. We were curious though why they were there in the first place and if they needed to be removed permanently?


```bash
$ yarn
permissions: [PERMISSIONS.ViewPlaygroundStateMachines],
submenuLinks: [
{
uriPath: 'echo-server',
permissions: [PERMISSIONS.ViewPlaygroundStateMachines],
defaultLabel: '${intl:en:Menu.EchoServer}',
labelAllLocales: [
{
locale: 'en',
value: '${intl:en:Menu.EchoServer}',
},
{
locale: 'de',
value: '${intl:de:Menu.EchoServer}',
},
],
},
],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The custom app config does not need to change. You can omit this.

```

To run the tests:
`routes.js`

```bash
$ yarn test
const canViewStateMachines = useIsAuthorized({
demandedPermissions: [PERMISSIONS.ViewPlaygroundStateMachines],
});
```

# or
$ yarn test:watch
5. Build and run the [playground application](./playground):

> In a new terminal window, navigate to the project root directory - `/merchant_center_application_kit`, and run:

```bash
$ yarn playground:build && yarn playground:start
ByronDWall marked this conversation as resolved.
Show resolved Hide resolved
```

Build the application bundles
> This should open a browser window and the standard merchant cernter login prompt, login using your account, and then the playground should load in the browser if permissions are set correctly (I am unclear on what those perms are or how to set them, so this is completely theoretical on my part at this point)
ByronDWall marked this conversation as resolved.
Show resolved Hide resolved

### RUNNING THE APP KIT AND PLAYGROUND AFTER INITIAL INSTALLATION
ByronDWall marked this conversation as resolved.
Show resolved Hide resolved

> The playground application consumes the app-kit dependencies as es modules, which means you need to bundle the packages first. We recommend to bundle the packages in watch mode in one terminal process and start the playground app in another terminal process.

- Open 2 terminal windows

- In the first terminal run

```bash
$ yarn build:watch
```

- Once the watch process has completed and is listening, in the second terminal window run

```bash
$ yarn playground:start
```

## To run the tests:

```bash
$ yarn build
$ yarn test

# or
$ yarn build:bundles:watch
$ yarn test:watch
```

Start the [playground application](./playground):

> NOTE: the playground application consumes the app-kit dependencies's es modules, which means you need to bundle the packages first. We recommend to bundle the packages in watch mode in one terminal process and start the playground app in another terminal process.
## To Build the application bundles:

```bash
// Terminal process 1
$ yarn build:bundles:watch
$ yarn build

// Terminal process 2
$ yarn playground:start
# or
$ yarn build:bundles:watch
```

## Documentation
Expand Down