diff --git a/.github/workflows/ai-deploy-request.yml b/.github/workflows/ai-deploy-request.yml
new file mode 100644
index 000000000..4ae188a70
--- /dev/null
+++ b/.github/workflows/ai-deploy-request.yml
@@ -0,0 +1,45 @@
+---
+###########################
+###########################
+## Deployment AI generation testing ##
+###########################
+###########################
+
+name: Hackathon Deployment Request
+
+######################################################
+# Start the job on a "deployment" to hackathon-test or other branch #
+######################################################
+
+on:
+ workflow_dispatch:
+ inputs:
+ target_branch:
+ description: "Target branch to send PR to (e.g., main, stage, etc)"
+ type: string
+ required: false
+ default: "hackathon-test"
+
+###############
+# Set the Job #
+###############
+
+jobs:
+ ai-metadata-update:
+ name: AI Metadata Update on Deployment
+ uses: AdobeDocs/adp-devsite-workflow/.github/workflows/ai-deploy-metadata.yml@app-builder-test
+ with:
+ FILE_NAME: "all_pages_content.txt"
+ secrets:
+ AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
+ AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
+
+ lint:
+ name: Lint
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Lint
+ run: npx --yes github:AdobeDocs/adp-devsite-utils#add-lint-check runLint -v
diff --git a/.github/workflows/ai-pr-request.yml b/.github/workflows/ai-pr-request.yml
new file mode 100644
index 000000000..e738dea27
--- /dev/null
+++ b/.github/workflows/ai-pr-request.yml
@@ -0,0 +1,40 @@
+---
+###########################
+###########################
+## Pull request testing ##
+###########################
+###########################
+name: Hackathon Pull Request
+
+# Documentation:
+# - Workflow: https://help.github.com/en/articles/workflow-syntax-for-github-actions
+# - SuperLinter: https://github.com/github/super-linter
+# - Markdown linter: https://github.com/DavidAnson/markdownlint
+# - Link validation: https://github.com/remarkjs/remark-validate-links
+
+######################################################
+# Start the job on a pull request to the hackathon-test branch #
+######################################################
+on:
+ pull_request:
+ branches: [hackathon-test]
+ paths:
+ - 'src/pages/**'
+
+###############
+# Set the Job #
+###############
+jobs:
+ call_reusable_workflow:
+ name: Generate AI Metadata
+ # Skip if PR title starts with "[AI PR] Metadata Update" or branch name starts with "ai-metadata"
+ if: >-
+ !startsWith(github.event.pull_request.title, '[AI PR] Metadata Update') ||
+ !startsWith(github.event.pull_request.head.ref, 'ai-metadata')
+ uses: AdobeDocs/adp-devsite-workflow/.github/workflows/ai-pr-request-metadata.yml@app-builder-test
+ with:
+ PR_ID: ${{ github.event.pull_request.number }}
+ FILE_NAME: "pr_content.txt"
+ secrets:
+ AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
+ AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
diff --git a/src/pages/hackathon-new-files/adobe-express.svg b/src/pages/hackathon-new-files/adobe-express.svg
new file mode 100644
index 000000000..b7f4834d4
--- /dev/null
+++ b/src/pages/hackathon-new-files/adobe-express.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/src/pages/hackathon-new-files/barcode.md b/src/pages/hackathon-new-files/barcode.md
new file mode 100644
index 000000000..9d5b9e2eb
--- /dev/null
+++ b/src/pages/hackathon-new-files/barcode.md
@@ -0,0 +1,127 @@
+# Lesson 2: Writing a Serverless Action
+
+There are many existing npm packages to display a barcode. Some don't play well in serverless environments.
+For this Code Lab, we'll use [bwip-js](https://www.npmjs.com/package/bwip-js/) to render a code128 barcode.
+
+## Barcode action
+
+First, install the dependency with:
+
+```bash
+npm i bwip-js --save
+```
+
+Then import the dependency into your action:
+
+```javascript
+const bwipjs = require('bwip-js');
+```
+
+Now we can use the library and generate a barcode buffer in the exported main function:
+
+```javascript
+const buffer = await bwipjs.toBuffer({
+ bcid: 'code128',
+ text: params.value,
+ scale: 3,
+ height: 10,
+ includetext: false,
+});
+```
+
+Notice that we defined a `value` parameter to be passed to the barcode generator configuration. This is the actual data that the barcode will be holding.
+
+Then we can return the image representation of the buffer with:
+
+```javascript
+return {
+ headers: { 'Content-Type': 'image/png' },
+ statusCode: 200,
+ body: buffer.toString('base64')
+};
+```
+
+Finally we can add checks to verify the requested `value` parameter, add logging and appropriate error handling to obtain this action:
+
+```javascript
+const { Core } = require('@adobe/aio-sdk');
+const { errorResponse, stringParameters, checkMissingRequestInputs } = require('../utils');
+const bwipjs = require('bwip-js');
+
+// main function that will be executed by Adobe I/O Runtime
+async function main (params) {
+ // create a Logger
+ const logger = Core.Logger('main', { level: params.LOG_LEVEL || 'info' });
+
+ try {
+ // 'info' is the default level if not set
+ logger.info('Calling the main action');
+
+ // log parameters, only if params.LOG_LEVEL === 'debug'
+ logger.debug(stringParameters(params));
+
+ // check for missing request input parameters and headers
+ const requiredParams = ['value'];
+ const errorMessage = checkMissingRequestInputs(params, requiredParams);
+ if (errorMessage) {
+ // return and log client errors
+ return errorResponse(400, errorMessage, logger);
+ }
+
+ const buffer = await bwipjs.toBuffer({
+ bcid: 'code128',
+ text: params.value,
+ scale: 3,
+ height: 10,
+ includetext: false,
+ backgroundcolor: 'ffffff'
+ });
+
+ return {
+ headers: { 'Content-Type': 'image/png' },
+ statusCode: 200,
+ body: buffer.toString('base64')
+ };
+ } catch (error) {
+ // log any server errors
+ logger.error(error);
+ // return with 500
+ return errorResponse(500, error.message, logger);
+ }
+}
+
+exports.main = main;
+```
+
+You can run the action locally using the CLI using:
+
+```bash
+aio app run --local
+```
+
+This will:
+
+1. Start a local [OpenWhisk](https://openwhisk.apache.org/) stack on Docker
+2. Package and deploy the Runtime action and its dependencies using a built-in webpack configuration
+3. Start a local development environment and provide the action url e.g. `http://localhost:3233/api/v1/web/guest/my-barcode-app-0.0.1/barcode` for testing and debugging
+
+Note that we'll cover how to do debug an App Builder app in a different Code Lab.
+
+Nowadd the value parameter, e.g. `?value=test`, to the url so the action will generate a barcode:
+
+
+
+## Deploying
+
+You can deploy an App Builder Headless app with `aio app run` or `aio app deploy`. This will deploy the actions to Adobe I/O Runtime.
+`aio app deploy` would have deployed the UI to a CDN, but since we don't have a UI, that step is ignored. We'll have a separate Code Lab to guide you through building an App Builder App with UI.
+
+Be sure to set your Adobe I/O Runtime secrets (namespace and auth) in the `.env` file. Also, turn off the built-in authentication by setting `require-adobe-auth: false` in the `manifest.yml`. The security topic will be covered in a dedicated Code Lab.
+
+Entering deploy in the CLI will output the deployed action URL:
+
+
+
+**Congratulations! Your first App Builder Headless App is live.**
+
+How can we test that the passed value is actually rendered as a barcode? Fortunately, there are barcode readers that we can use in our tests.
diff --git a/src/pages/hackathon-new-files/first-app.md b/src/pages/hackathon-new-files/first-app.md
new file mode 100644
index 000000000..008eebbd8
--- /dev/null
+++ b/src/pages/hackathon-new-files/first-app.md
@@ -0,0 +1,588 @@
+# Creating your First App Builder Application
+
+In this tutorial, we'll guide you through the following steps to give you an introduction on how to set up and develop an App Builder Application.
+
+1. Set up Local Environment
+1. Create new Project on [Adobe Developer Console](/console)
+1. Sign in from the [CLI](https://github.com/adobe/aio-cli)
+1. Bootstrap new App using [CLI](https://github.com/adobe/aio-cli)
+1. Anatomy of an App Builder Application
+1. Developing the Application
+1. Deploying the Application
+
+If you run into any issues during development, please first refer to the [Common Issues section](first-app.md#common-issues) on this page.
+
+## 1. Set up Local Environment
+
+Ensure your local environment and tooling is up to date. Instructions are here: [Setting up Your Environment](https://developer.adobe.com/app-builder/docs/get_started/app_builder_get_started/first-app#local-environment-set-up). Make sure you have access to App Builder as described here [How to Get Access to App Builder](../overview/getting_access.md). If are have not yet been granted access, you may want to wait before proceeding.
+
+## 2. Create a new Project on Developer Console
+
+[Adobe Developer Console](/console) gives you access to [APIs](/apis), [SDKs](https://github.com/adobe/aio-sdk) and developer tools to integrate, and extend Adobe products. In App Builder, you need access to [Adobe I/O Runtime](/runtime) credentials used for deploying your application, and access to API credentials if you want to access Adobe [APIs](/apis) in your application.
+
+Follow the instructions to set up your project:
+
+1. Navigate to [Adobe Developer Console](/console).
+
+ 
+
+2. Use the IMS Org Switcher in the upper right corner to select the IMS organization you want to use, if it is not the correct one.
+
+ 
+
+3. Once you are in the correct organization, Under `Quick Start`, click on the option to `Create project from template`.
+
+ > **Note:** if you don't have the `Create project from template` option, confirm the IMS org is correct. If it is, you do not yet have access to App Builder.
+ Make sure you followed the process for [How to Get Access to App Builder](../overview/getting_access.md).
+
+4. Select `App Builder` from the list of templates.
+
+ 
+
+5. Enter `Project Title` and `App Name` for your templated project.
+
+ `Project Title` is used to identify this project within [Adobe Developer Console](/console) and in [CLI](https://github.com/adobe/aio-cli). We recommend changing the default title to a meaningful project title.
+
+ `App Name` is a unique identifier for your application.
+
+ > **Note:** once project set up is complete `App Name` cannot be changed.
+
+ By default, the "Include Runtime with each workspace" checkbox is checked. Each workspace is automatically provisioned with a unique [Adobe I/O Runtime](/runtime) namespace allowing each developer to work within their own [Adobe I/O Runtime](/runtime) environment.
+
+ > **Note:** If you deselect the checkbox and do not opt for automatic inclusion of [Adobe I/O Runtime](/runtime), you will need to enable it manually for each individual workspace. You cannot auto-add [Adobe I/O Runtime](/runtime) to all workspaces after the initial set up is complete.
+
+ You can manually remove [Adobe I/O Runtime](/runtime) from individual workspaces later if you determine that it is not needed.
+
+ Click `Save` when ready.
+
+ 
+
+6. You should see a new project generated with 2 default `Workspaces`.
+ - Workspaces can be used to manage different deployment environments (dev, qa, stage, prod) for your application and to provide individual working environment for each developer on the project. Workspace is where you will connect services and get the credential details needed to connect to [Adobe APIs](/apis). Connected services can differ from workspace to workspace, and credentials used within each workspace is not shared across workspaces.
+
+ - Each App Builder project has two default workspaces: `Production` and `Stage`. You can add more workspaces as needed. The `Production` workspace is a special workspace used for the submission and distribution flow. When you’re ready to deploy your app, you will submit it for approval from the Production workspace.
+
+ 
+
+7. Create a new workspace or select a workspace to add [APIs](https://developer.adobe.com/developer-console/docs/guides/services/#add-a-service) and [Events](https://developer.adobe.com/developer-console/docs/guides/services/services-add-event/) that you will need for your application.
+
+ 
+
+To learn more about Adobe Developer Console, please refer to [Console Documentation](https://developer.adobe.com/developer-console/docs).
+
+## 3. Sign in from CLI
+
+Once your project is set up in [Adobe Developer Console](/console), let's move onto your local environment. You can always go back to [Adobe Developer Console](/console) to modify your project later.
+
+1. On your machine, navigate to the Terminal and enter
+
+ ```bash
+ aio login
+ ```
+
+1. A browser window should open, asking you to sign in with your Adobe ID. If the window did not automatically open, you can also copy paste the URL printed in your browser to log in.
+
+ ```bash
+ $ aio login
+ Visit this url to log in:
+ https://aio-login.adobeioruntime.net/api/v1/web/default/applogin?xxxxxxxx
+ ```
+
+1. Once you've logged in, you can close the browser window and go back to Terminal. You will see a string printed in the terminal. This is your user token. It is automatically stored in [CLI](https://github.com/adobe/aio-cli) config, allowing the [CLI](https://github.com/adobe/aio-cli) to use the token to talk to [Adobe Developer Console](/console).
+
+ ```bash
+ eyJ4NXUiOixxxxxxxxxxxxxxxxxxx
+ ```
+
+1. Now you can start building App Builder Applications with the [CLI](https://github.com/adobe/aio-cli)!
+
+## 4. Bootstrap new App using the CLI
+
+There are a few sample flows listed below. Some developers may not have access to [Adobe Developer Console](/console) as entitled Enterprise Organization users but may still want to look at the project or to import credentials later.
+
+### 4.1 Developer is Logged in as Enterprise Organization user
+
+#### 4.1.1 Initialize your project with Extension Points
+
+1. In your Terminal, navigate to where you want to initialize your project and type in the following command in your Terminal:
+
+ ```bash
+ aio app init
+ ```
+
+ You will be prompted with a few questions about how you want your app to be boostrapped and configured:
+
+1. Select `Organization` that you'd like to use for this new App Builder Application. Navigate through the list to find the project and workspace you just created. If you have a lot of organizations, you can also start typing to shorten the list.
+
+ ```bash
+ $ aio app init helloworld
+ Retrieving information from Adobe Developer Console..
+ ? Select Org Adobe IO DEV
+ ```
+
+1. Once you have selected org, project and workspace, next, select the product you would like to extend:
+
+ ```bash
+ ? Which extension point(s) do you with to implement?
+ select components to include (Press to select, to toggle all, to invert selection)
+ ❯◉ DX Experience Cloud SPA v1
+ ◉ DX Asset Compute Worker v1
+ ```
+
+1. Select the `Project` you'd like to use for this new App Builder application. Navigate through the list to find the project you just created. If you have a lot of projects, you can also start typing to shorten the list.
+
+ ```bash
+ ? Select Project Demo Project SAXU
+ ```
+
+1. Once you complete this selection, you should see the build process kicking off with necessary npm dependencies are getting installed.
+
+ ```bash
+ create package.json
+ create app.config.yaml
+ create .aio
+ create README.md
+
+ .......
+
+ found 0 vulnerabilities
+
+ ✔ App initialization finished!
+ ```
+
+1. Now your project is initialized! Go into the folder you just created, and you can see a number of files generated.
+
+ ```bash
+ $ cd helloworld
+ $ ls
+ README.md src app.config.yaml package-lock.json test
+ e2e node_modules package.json web-src
+ ```
+
+1. Note that you still can add/remove the extension points, back-end actions, SPA front-end or GitHub workflows from your application later by respectively using the `aio app ext`, `aio app action`, `aio app web-assets` and `aio app ci` commands within your application folder.
+
+1. Optionally, you can install an App Builder template using Template Registry. Discover available templates in the App Builder template registry with the following command:
+
+ ```bash
+ aio templates discover
+ ```
+
+1. Install the desired template with either of these commands:
+
+ ```bash
+ aio templates install
+ ```
+
+ or
+
+ ```bash
+ aio templates discover --interactive
+ ```
+
+ The template's npm package will be downloaded and extracted, and Developer Console resources such as services and workspaces will be created and configured based on the template's **install.yaml** configuration file. `npm install` will run in the background to install the npm package.
+
+#### 4.1.2 Initialize an empty project
+
+1. In your Terminal, navigate to where you want to initialize your project and type in the following command in your Terminal:
+
+ ```bash
+ aio app init --standalone-app
+ ```
+
+ You will be prompted with a few questions about how you want your app to be boostrapped and configured:
+
+1. Select `Organization`, `Project` and `Workspace` that you'd like to use for this new App Builder Application. Navigate through the list to find the project and workspace you just created. *If you have a lot of organizations / projects / workspaces, you can also start typing to shorten the list.* Upon completing the selection, the [CLI](https://github.com/adobe/aio-cli) automatically downloads a `console.json` file that contains all the credentials from your workspace to be used in your App Builder project.
+
+ ```bash
+ $ aio app init helloworld
+ Retrieving information from Adobe Developer Console..
+ ? Select Org Adobe IO DEV
+ ? Select Project Demo Project SAXU
+ ? Select Workspace saxudevenv
+ create console.json
+ ```
+
+1. Next, you will be asked to select app features to enable:
+
+ ```bash
+ You are about to initialize the project 'demoproject'
+ Generating code in: /Users/sarahxxu/Dropbox/Development/helloworld
+ ? Which Adobe I/O App features do you want to enable for this project?
+ select components to include (Press to select, to toggle all, to invert selection)
+ ❯◉ Actions: Deploy Runtime actions
+ ◉ Events: Publish to Adobe I/O Events
+ ◉ Web Assets: Deploy hosted static assets
+ ◉ CI/CD: Include GitHub Actions based workflows for Build, Test and Deploy
+ ```
+
+ Each option indicates a feature you can enable for your App Builder application. Select one or all the options depending on the application you intend to build. We recommend you select all for now to fully explore all the options.
+
+ - **Actions: Deploy Runtime actions:** adding the boilerplate for backend serverless actions on [Adobe I/O Runtime](/runtime)
+ - **Events: Publish to Adobe I/O Events:** adding the boilerplate for a serverless action that publishes [Custom I/O Events](/events/docs/guides/using/custom_events/)
+ - **Web Assets: Deploy hosted static assets:** adding the boilerplate for frontend [React-Spectrum](https://react-spectrum.adobe.com/) SPA and static assets
+ - **CI/CD: Include GitHub Actions based workflows for Build, Test and Deploy:** adding the boilerplate for GitHub Actions supporting CI/CD process of the application
+
+1. If you included `Actions` in your last selection, you will be asked to select one or more sample actions to be generated along with the new app.
+
+ ```bash
+ ? Which type of sample actions do you want to create?
+ select type of actions to generate (Press to select, to toggle all, to invert selection)
+ ❯◯ Adobe Analytics
+ ◯ Adobe Experience Platform: Realtime Customer Profile
+ ◉ Generic
+ ```
+
+ These sample actions help you quickly get started and show best practices for integrating with [Adobe APIs](/apis) using [SDK](https://github.com/adobe/aio-sdk) in your applications.
+Note that you may not see all the options listed below on your command line, because we make recommendations based on what credentials you have added in the selected workspace. Similar to the last step, you can select one or all of the options listed:
+
+ - **Adobe Target**: including dependencies and examples of accessing the [Adobe Target API](https://developers.adobetarget.com/api/#admin-apis)
+ - **Adobe Analytics**: including dependencies and examples of accessing the [Adobe Analytics 2.0 API](https://adobedocs.github.io/analytics-2.0-apis/)
+ - **Adobe Audience Manager: Customer Data**: including dependencies and examples of accessing the [Adobe Audience Manager Customer Data API](https://docs.adobe.com/content/help/en/audience-manager/user-guide/api-and-sdk-code/api.html)
+ - **Adobe Campaign Standard**: including dependencies and examples of accessing the [Adobe Campaign Standard (ACS) API](https://docs.adobe.com/content/help/en/campaign-standard/using/working-with-apis/get-started-apis.html)
+ - **Adobe Experience Platform: Realtime Customer Profile**: including dependencies and examples of accessing the [Realtime Customer Profile API of Adobe Experience Platform](/apis/experienceplatform/home/api-reference#!acpdr/swagger-specs/real-time-customer-profile.yaml)
+ - **Generic**: a generic back-end action with hello world flow that can be reused and modified e.g. for simple serverless computing or 3rd party API integration
+
+1. If you included `Web Assets` under Adobe I/O App features you will be given two choices. One to include React Spectrum based UI template or a Vanilla HTML/JS one
+
+ ```bash
+ ? Which type of UI do you want to add to your project? select template to generate (Use arrow keys)
+ ❯ React Spectrum 3 UI
+ Raw HTML/JS UI
+ ```
+
+ - The `React Spectrum 3 UI` template will add a React based UI with [React Spectrum](https://react-spectrum.adobe.com/) components included.
+ - The `Raw HTML/JS UI` will add a Valinna HTML/JS/CSS UI with [Spectrum CSS](https://opensource.adobe.com/spectrum-css) styles included.
+
+ Both the templates comes with boilerplate code needed to integrate your App Builder application with [Adobe Experience Cloud](../guides/exc_app/index.md)
+
+1. We'll ask you to define the name for the instance of each selected sample actions. You can keep the default name or specify your own.
+
+ ```bash
+ ? We are about to create a new sample action that interacts with the Adobe Analytics API
+ how would you like to name this action? analytics
+ ? We are about to create a new sample action that interacts with the Adobe Experience Platform: Realtime Customer Profile
+ how would you like to name this action? customer-profile
+ ? We are about to create a new sample action that showcases how to access an external API
+ how would you like to name this action? (generic)
+ ```
+
+1. Once you complete this select, you should see the build process kicking off with necessary npm dependencies are getting installed.
+
+ ```bash
+ create package.json
+ create app.config.yaml
+ create .aio
+ create README.md
+
+ .......
+
+ found 0 vulnerabilities
+
+ ✔ App initialization finished!
+ ```
+
+1. Now your project is initialized! Go into the folder you just created, and you can see a number of files generated.
+
+ ```bash
+ $ cd helloworld
+ $ ls
+ README.md console.json app.config.yaml package-lock.json test
+ actions e2e node_modules package.json web-src
+ ```
+
+1. Note that you still can add/remove the back-end actions, SPA front-end or GitHub workflows from your application later by respectively using the `aio app action`, `aio app web-assets` and `aio app ci` commands within your application folder.
+
+### 4.2 Developer is not Logged in as Enterprise Organization user
+
+#### Developer with a Console config file
+
+This flow is intended for developers who do not have access to [Adobe Developer Console](/console) as entitled Enterprise Organization users, likely due to permission issues, but can get credentials that are tied to an App Builder workspace from an entitled Enterprise Organization administrator or developer.
+
+For this flow to work, the developer should ask someone with access to set up a project and a workspace following the last few sections. With the workspace correctly set up, the credentials can downloaded by authorized [Adobe Developer Console](/console) users through the `Download all` button in Workspace overview.
+
+
+
+1. In Terminal, navigate to where you want to initialize your project and type in the following command:
+
+ ```bash
+ aio app init --import
+ ```
+
+1. Select project configuration options (see section above)
+1. When your project is initialized, go into the folder you just created, and you can see a number of files generated.
+
+ ```bash
+ $ cd helloworld
+ $ ls
+ README.md e2e node_modules package.json web-src
+ actions app.config.yaml package-lock.json test
+ ```
+
+1. When you generate a project with a downloaded configuration file without logging into [Adobe Developer Console](/console) on your [CLI](https://github.com/adobe/aio-cli), everything should be the same.
+We use the values from the downloaded file to pre-populated values in your `.env` and `.aio`. The only difference you will notice is the missing `config.json` file because that's the file you used to generate this project.
+
+#### Developer without any credentials
+
+This flow is intended for developers who have no access or credentials whatsoever but still want to look at the code.
+
+1. In your Terminal, navigate to where you want to initialize your project and type in the following command in your Terminal:
+
+ ```bash
+ aio app init -y
+ ```
+
+ The `-y` flag allows user to skip all questions and generates a sample project with only the `generic` sample action.
+
+1. You should still be able to see similar files generated, but none of the config files will be pre-polulated.
+
+ ```bash
+ $ cd helloworld
+ $ ls
+ README.md e2e node_modules package.json web-src
+ actions app.config.yaml package-lock.json test
+ ```
+
+1. You will not be able to run or to deploy your application by default because there is no credential provided.
+
+## 5. Anatomy of an App Builder Application
+
+Now that your project is initialized, let's open the project in your favorite IDE. We recommend using [VSCode](https://code.visualstudio.com/). If you have enabled the shell command, open the project by entering `code `, or open VSCode -> Open... -> select app folder.
+
+You should see these folders and files in your project:
+
+1. `src`: Instead of one folder for all `actions` and all `web-src`, you will see individual folders under `src` for each Extension point you have selected. For instance, a `dx-excshell-1` folder for your Experience Cloud SPA actions and frontend resources.
+ - Under each folder, you should be able to see both the actions and the frontend code when application. In addition, you should be able to see `ext.config.yaml`. This file contains all the action and extension configuration for the extension point where it's located. This individual configuration allows for more flexibility in defining and managing individual extension points. You can see that this file is also imported to `app.config.yaml` as that's the master config file.
+ - The action definition in this file shoud adhere to the [OpenWhisk deployment YAML specification](https://github.com/apache/openwhisk-wskdeploy/tree/master/specification#package-specification).
+ - Once defined, the [CLI](https://github.com/adobe/aio-cli) use this file to deploy or redeploy actions. You might see values like `$CUSTOMER_PROFILE_TENANT` listed under environments in this file. These are environment variables that you can define in your `.env` file.
+ - The generated actions use CommonJS syntax. **ES Module syntax is not supported by App Builder**.
+1. `test`: this folder is intended for back-end action unit tests and integration tests
+1. `e2e`: this folder is intended for end-to-end tests
+1. `app.config.yaml`: this is the master configuration file. It follows the same principle as the individual `ext.config.yaml`, and compiles these individual file into one comprehensive config upon application build.
+1. `lib`: this folder will contain all the shared utility actions across different extension points.
+1. `package.json`: this file describes project definition and various metadata relevant to the project.
+ - It is used to give information to npm that allows it to identify the project as well as handle the project's dependencies. Learn more [here](https://nodejs.org/en/knowledge/getting-started/npm/what-is-the-file-package-json/).
+1. `.aio`: this file contains config variables that are useful for the [CLI](https://github.com/adobe/aio-cli) to facilitate the app, e.g. supported API services. **This file should not be committed to a source code versioning system.**
+ - You can manually update the file or use the `aio config` commands to add or to remove configurations. Learn more about the [Config Plugin](https://github.com/adobe/aio-cli-plugin-config).
+1. `.env`: this file contains environment variables that are useful for the app during development, e.g. Adobe I/O Runtime credentials and Adobe Product API tenant specifics (API key, secrets, etc.)
+ - The environment variables defined here can be used in the application (e.g. in `ext.config.yaml` or `app.config.yaml`). If you've set up credentials for the selected workspaces, you should be able to see some of those values prepopulated upon initialization, like `AIO_runtime_auth` and `AIO_runtime_namespace`.
+ - This file is automatically included in `.gitignore`. **It is not intended be shared given the credentials and secrets listed.**
+
+## 6.Developing the Application
+
+### 6.1 Running the Application
+
+To run the application locally, use one of the following commands:
+
+```bash
+aio app dev
+```
+
+This is thre preferred method of local development. The command will launch the application locally with the following supported Features:
+
+- Web actions/sequences served via http
+- Hot reload of actions on code change
+- Hot reload of web source on code change
+- Debug web browser JavaScript code in Visual Studio Code
+- Debug web actions/sequences in Visual Studio Code
+- Require-adobe-auth web annotation support
+- Logging to console
+
+
+```bash
+aio app run
+```
+
+If you need to test functionality that is not supported by `aio app dev`, you can deploy the actions to Adobe I/O Runtime while running the UI part on your local machine.
+
+```bash
+aio app run --local
+```
+
+(Deprecated) This will deploy the actions to a local [OpenWhisk](https://openwhisk.apache.org/) instance, which the [CLI](https://github.com/adobe/aio-cli) will autmomatically download and install. The SPA will be run on the local machine. **Note: Users of Apple Silicon will encounter issues with this command. Please use `aio app dev` instead.**
+
+
+#### (First time users) Accept the Certificate
+
+If you are using this application for the first time, you will see a message similar to
+
+```bash
+success: generated certificate
+A self signed development certificate has been generated, you will need to accept it in your browser in order to use it.
+Waiting for the certificate to be accepted.... timed out
+```
+
+This message pops up because we use a development SSL certificate for secure communication. Understand more about the purpose of this certificate [here](https://letsencrypt.org/docs/certificates-for-localhost/).
+
+If you see this message, please navigate to `https://localhost:9080`, you should see a screen similar to this.
+
+
+Click on `Advanced`, the nex screen may vary from browser to browser, but you should see a screen like this, where you can click on `Proceed to localhost (unsafe)` to accept the certificate.
+
+
+You may need to exit the current process and run `aio app run` again.
+
+#### Proceed to the Application on localhost
+
+For users who have accepted the certificate in the past, you should see the following process running in Teminal instead. You can see your backend actions are being deployed to [Adobe I/O Runtime](/runtime) (or to the local OpenWhisk instance if the `--local` option has been used.
+
+```bash
+$ aio app run
+> Local Dev Server
+ℹ using remote actions
+ℹ redeploying actions..
+......
+ℹ writing credentials to tmp wskdebug config '.wskdebug.props.tmp'..
+ℹ injecting backend urls into frontend config
+ℹ starting local frontend server ..
+ℹ local frontend server running at https://localhost:9080
+ℹ setting up vscode debug configuration files..
+ℹ press CTRL+C to terminate dev environment
+
+```
+There are two URLs printed:
+
+```bash
+To view your local application:
+ -> https://localhost:9080
+To view your deployed application in the Experience Cloud shell:
+ -> https://experience.adobe.com/?devMode=true#/custom-apps/?localDevUrl=https://localhost:9080
+```
+
+The first URL allows you to see your standalone application on localhost (by default, but the port is configurable). The second URL places your local application in the context of the [Experience Cloud UI](../guides/exc_app/index.md) for preview.
+
+While most changes in your code get updated in real-time when your application is running, the `.env` file is not among them. Running the application depends on `.env` file to provide necessary credentials, so the file is unmodifiable while the app is running. When your app is running, the `.env` file is backed up, and a new one is written with specific values. When you exit the process, the original `.env` is restored.
+
+As indicated in the message, when you are done, you can press `CTRL+C` to terminate the local development environment.
+
+To have the application run completely locally, which means the actions will run on a local deployed (standalone) version of OpenWhisk instead of on [Adobe I/O Runtime](/runtime), use `aio app run --local`. Some additional dependencies are required if you have not installed them yet, see `Optional tools` section in [Setting up Your Environment](./index.md) if you want to set them up manually.
+
+Usually, we recommend running your applications with deployed [Adobe I/O Runtime](/runtime) actions, as your application should run on [Adobe I/O Runtime](/runtime) in production. However, if you need to build complex actions or sequencing, the `--local` flag is handy to locally debug the application. Please see the Debugging the Application section below for more info.
+
+### 6.2 Try the Sample Application
+
+When you access `https://localhost:9080`, you should see the sample application deployed.
+
+
+This simple SPA contains links to documentation and allows you to run your backend actions for tests. To try it, use the selection box to pick the action you'd like to invoke. You can also pass request headers and parameters from the corresponding input fields in the SPA UI.
+
+All actions require `Authorization` and `x-gw-ims-org-id` in the headers by default. In your project code, if you navigate to `app.config.yaml`, you can see that a `require-adobe-auth` annotation is set to `true` for all the sample actions. Having this flag enabled enforces a valid user token be used to invoke this action. We recommend always having this enabled for security reasons. You can learn more about this in our [Security Overview](../guides/security/index.md).
+
+1. With the `require-adobe-auth` annotation set to `true`, you need to pass in a valid user token and corresponding organization ID to invoke your action. You can easily retrieve the token from your [CLI](https://github.com/adobe/aio-cli) by typing in `aio login`, and the org ID (look for `some_hash@AdobeOrg`) from the workspace details on [Adobe Developer Console](/console) or from the URL of [Adobe Admin Console](https://adminconsole.adobe.com) (make sure that you have the correct organization selected in the top right corner).
+You can also list all the organizations you belong to and their org ID from your [CLI](https://github.com/adobe/aio-cli) by typing in `aio console org list`.
+
+1. Put the token and org ID into this following format.
+ `{"Authorization":"Bearer ","x-gw-ims-org-id":""}`
+1. Go back to your browser, and put the joined value in the `headers` input field. You should now be able to invoke actions that does not require additional params (like `generic`).
+
+
+**Note:** If you open your application in the [Experience Cloud Shell](http://experience.adobe.com/) using the second link provided by the CLI, your Experience Cloud Shell user token will automatically be available to the SPA UI and passed by this one to the underlying [Adobe I/O Runtime](/runtime) actions of your application.
+This is a very useful feature of our SPA UI template, which integrates for you with the [client-side API](../guides/exc_app/index.md) of the [Experience Cloud Shell](http://experience.adobe.com/).
+
+The other sample actions require futher paramaters to be invoked. For instance, if you try to invoke `analytics` with only the authorization header, you would see an error similar to `"error": "missing parameter(s) 'apiKey,companyId'"`. This is because these sample actions use Adobe API that requires those params before it can be invoked.
+
+1. Each sample action requires different params. Some only needs an API key, some also requires the tenant ID or more information. Go into the action code in `actions` folder to learn more.
+1. The API key is a common required field. If you have the service added in the current workspace, it is easily retrievable in `.env` or `console.json` file.
+1. Other fields are not accessible directly through the [CLI](https://github.com/adobe/aio-cli), like tenant ID for Target and for Campaign Standard or company ID for Adobe Analytics. Please refer to product documentation to locate these value for your Org.
+1. Once you have these parameters handy, construct them in the expected format `{"key": "value"}` and paste into the params. You should now be able to invoke these actions.
+
+### 6.3 Debugging the Application
+
+The [CLI](https://github.com/adobe/aio-cli) has a _dev_ command (`aio app dev`) to support debug functionalities. You can develop and debug your Adobe Runtime actions in your favorite IDE or debugger with a fast feedback loop. It features:
+
+- Step through debugging with lengthy timeouts _(previously you could only stop at a breakpoint for 60 seconds)_
+- LiveReload for web actions
+- Instant logging output to terminal
+
+Please visit [Debugging App Builder Apps Codelab](../resources/debugging/index.md) to set up your local environment and go through step-by-step instructions.
+
+If the local development is run (`aio app run`), the actions you are calling are run directly on [Adobe I/O Runtime](/runtime). When you use `aio app dev`, the actions are run/debugged in node directly. In both cases your frontend is run on localhost.
+
+### 6.4 Retrieving Logs for the Application
+
+#### Dev
+When using `aio app dev` logs are immediately output to the terminal and are not kept in an activation record.
+
+#### Run or Deploy
+To see your application logs after running `aio app run` or after running your deployed app (`aio app deploy`), use the command `aio app logs`. By default, only the logs of the latest activation is fetched. If you want to see a more extensive list of logs, use the `--limit` flag to define the number of recent activations to be fetched.
+
+Read more at [Managing Application Logs](../guides/application_logging.md)
+
+### 6.5 Test the Application
+
+The bootstrapped application comes with sample implementations for both unit and end-to-end tests.
+You can execute these tests locally by using `aio app test` and `aio app test -e`, which will respectively run the unit and end-to-end tests against the bootstrapped codebase.
+
+As you modify and extend the code of your application, you will need to update the tests accordingly.
+
+We are using [jestJS](https://jestjs.io/) for the unit tests of the [CLI](https://github.com/adobe/aio-cli), [SDK](https://github.com/adobe/aio-sdk) and bootstrapped application. It is possible to change the implementation to your preferred framework.
+
+[CI/CD for App Builder Applications](../guides/deployment/ci_cd_for_firefly_apps.md) also explains how to execute these tests in the context of a CI/CD pipeline.
+
+## 7 Deploy the Application
+
+Once the application is in a good shape, it can be fully deployed to your development workspace. This is achievable with a single command.
+
+```bash
+aio app deploy
+```
+
+This command may take a minute or two as behind the scenes the [CLI](https://github.com/adobe/aio-cli) is building and deploying:
+
+- The actions defined in `app.config.yaml` into [Adobe I/O Runtime](/runtime)
+- The frontend built files and assets into our out-of-the-box CDN
+
+The [CLI](https://github.com/adobe/aio-cli) output details this process:
+
+```bash
+> Build actions
+ℹ dist/actions/analytics.zip
+...
+
+> Build static files
+ℹ dist/web-src-prod/index.html
+...
+
+> Deploy actions
+ℹ Info: Deploying package [demoproject-0.0.1]...
+...
+
+> Deploy static files
+ℹ index.html
+
+...
+
+Your deployed actions:
+ -> demoproject-0.0.1/__secured_analytics
+...
+
+To view your deployed application:
+ -> https://.adobeio-static.net//index.html
+To view your deployed application in the Experience Cloud shell:
+ -> https://experience.adobe.com/?devMode=true#/custom-apps/?localDevUrl=https://.adobeio-static.net//index.html
+Well done, your app is now online 🏄
+```
+
+Note the last section of the output `To view your deployed application`. There are 2 urls of the app shown by default, which allow access either to the CDN host or [Experience Cloud Shell](http://experience.adobe.com/). In the latter case, The URL format of the app should follow `https://experience.adobe.com/?devMode=true#/custom-apps/?localDevUrl=`.
+
+You can also undeploy your app with `aio app undeploy`. To learn more about deployment, please refer to [Deployment Overview](../guides/deployment/index.md). To automate your build, deploy and build process with our out-of-the-box CI/CD GitHub actions, please refer to [CI/CD for App Builder Applications](../guides/deployment/ci_cd_for_firefly_apps.md).
+
+## Common Issues
+
+1. When in doubt, please first ensure your [CLI](https://github.com/adobe/aio-cli) and all plugins are up to date. For the [CLI](https://github.com/adobe/aio-cli), you can check the version through `aio -v` and compare it with `npm show @adobe/aio-cli version`. If your [CLI](https://github.com/adobe/aio-cli) is outdated, update it by running `npm install -g @adobe/aio-cli`. After that, you can simply run `aio update` to ensure all core plugins are updated.
+
+1. Validation error. If you see the following error, it is because you did not pass in an authorization header to an action expecting one. See `Trying the Sample App` section above or learn more about this in our [Security Overview](../guides/security/index.md).
+
+ ```bash
+ {"error": "cannot validate token, reason: missing authorization header"}
+ ```
+
+1. Missing param error. If you see the following error, it is because you did not pass in required params to an action expecting one. See `Trying the Sample App` section above.
+
+ ```bash
+ {"error": "missing parameter(s) 'apiKey,companyId'"}`
+ ```
+
+## Next steps
+
+For more code examples and use cases, please refer to the [Resources page](../resources/index.md).
+
diff --git a/src/pages/hackathon-new-files/index.md b/src/pages/hackathon-new-files/index.md
new file mode 100644
index 000000000..cd1d69bc2
--- /dev/null
+++ b/src/pages/hackathon-new-files/index.md
@@ -0,0 +1,26 @@
+# Getting Started with App Builder
+
+Welcome to the Getting Started section of App Builder documentation. Here you'll find comprehensive guides to help you start working with App Builder and Adobe I/O Runtime.
+
+## Choose Your Path
+
+### App Builder Getting Started
+If you're new to App Builder, start with our [App Builder Getting Started guide](app_builder_get_started/app-builder-intro.md). This guide will walk you through:
+- Setting up your development environment
+- Creating your first App Builder application
+- Publishing your app
+- Troubleshooting common issues
+
+### Runtime Getting Started
+If you're interested in serverless development with Adobe I/O Runtime, check out our [Runtime Getting Started guide](runtime_getting_started/index.md). This guide covers:
+- Understanding Runtime fundamentals
+- Setting up your environment
+- Creating and deploying actions
+- Working with entities and activations
+- Best practices and resources
+
+## Next Steps
+
+After completing either getting started guide, you can explore our detailed [Guides](../guides/index.md) section for more in-depth information about specific features and capabilities.
+
+For additional resources and support, visit our [Resources](../resources/index.md) section.
diff --git a/src/pages/hackathon-new-files/lessons/aep-foundation.png b/src/pages/hackathon-new-files/lessons/aep-foundation.png
new file mode 100644
index 000000000..3d831be45
Binary files /dev/null and b/src/pages/hackathon-new-files/lessons/aep-foundation.png differ
diff --git a/src/pages/hackathon-new-files/lessons/lessons1.md b/src/pages/hackathon-new-files/lessons/lessons1.md
new file mode 100644
index 000000000..03f1e5fee
--- /dev/null
+++ b/src/pages/hackathon-new-files/lessons/lessons1.md
@@ -0,0 +1,53 @@
+# Lesson 1: Bootstrap a Headless App
+
+First, you need a new headless app created with AIO CLI. This app needs only a simple action to test the cron job, so all other components have been deselected.
+Follow this, from [Creating your First App Builder Application](../../get_started/app_builder_get_started/first-app.md)
+
+
+
+Now edit the action code at `actions/generic/index.js` to simplify it. We will make it print the current execution time to logs, and return it in the result:
+
+```javascript
+const { Core } = require('@adobe/aio-sdk')
+
+async function main (params) {
+ const logger = Core.Logger('main', { level: 'info' })
+
+ try {
+ logger.info('Calling the main action')
+ const currentTime = new Date()
+ logger.info(`Current time is ${currentTime.toLocaleString()}.`)
+
+ return {
+ timeInMilliseconds: currentTime.getTime(),
+ timeInString: currentTime.toLocaleString()
+ }
+ } catch (error) {
+ logger.error(error)
+ return { error }
+ }
+}
+
+exports.main = main
+```
+
+Because the action is invoked only by internal alarms, it does not need to be exposed as a web action. This prevents the action from being accessed by unprivileged users. Your manifest file should look like this:
+
+```yaml
+application:
+ actions: actions
+ web: web-src
+ runtimeManifest:
+ packages:
+ my-app:
+ license: Apache-2.0
+ actions:
+ generic:
+ function: actions/generic/index.js
+ web: 'yes'
+ runtime: 'nodejs:14'
+```
+
+To test the action, you could execute `aio app deploy` in the VSCode terminal. Once the deployment is finished, run `aio rt action invoke your-app-name/generic` and verify its result and logs using `aio rt activation get ID` and `aio rt activation logs ID` (`ID` is available in the output of the invoke command earlier). This is an extract of the result from the activation information:
+
+
diff --git a/src/pages/hackathon-new-files/lessons/lessons3.md b/src/pages/hackathon-new-files/lessons/lessons3.md
new file mode 100644
index 000000000..e3446e15e
--- /dev/null
+++ b/src/pages/hackathon-new-files/lessons/lessons3.md
@@ -0,0 +1,35 @@
+# Lesson 3: Types of Alarm Feed
+
+In addition to the `/whisk.system/alarms/interval` feed in Lesson 2, the alarms provider in Adobe I/O Runtime supports other types of feeds.
+
+## Firing a trigger once
+
+The `/whisk.system/alarms/once` feed allows you to [fire an event once at a specific time](https://github.com/apache/openwhisk-package-alarms#firing-a-trigger-event-once). The only required parameter is `date`, indicating when to fire the trigger. Optional parameters are `trigger_payload` and `deleteAfterFire`.
+
+```yaml
+triggers:
+ runMeOnce:
+ feed: /whisk.system/alarms/once
+ inputs:
+ date: YYYY-MM-DDTHH:mm:ss.sssZ
+ deleteAfterFire: true
+```
+
+Note that `YYYY-MM-DDTHH:mm:ss.sssZ` is just a format for this field; you are free to update it with the date and time you want.
+
+## Firing a trigger on a time-based schedule using cron
+
+The `/whisk.system/alarms/alarm` feed allows you to [fire an event on a time-based schedule using cron](https://github.com/apache/openwhisk-package-alarms#firing-a-trigger-on-a-time-based-schedule-using-cron). This is more generic than the `interval` and `once` feeds, because you can write crontab to configure the alarm service to trigger at the exact time and interval you want. The only required parameter is `cron`, a string based on the [UNIX crontab syntax](http://crontab.org) that indicates when to fire the trigger in UTC. Optional params are `trigger_payload`, `timezone`, `startDate` and `stopDate`.
+
+The following example shows a cron schedule at 2:00 am on Sundays in the Central Europe Timezone (CET):
+
+```yaml
+triggers:
+ sunday2am:
+ feed: /whisk.system/alarms/alarm
+ inputs:
+ cron: 0 2 * * 7
+ timezone: CET
+ startDate: 1601918992704
+ stopDate: 1651918992704
+```
diff --git a/src/pages/hackathon-new-files/random.json b/src/pages/hackathon-new-files/random.json
new file mode 100644
index 000000000..6652ac9b2
--- /dev/null
+++ b/src/pages/hackathon-new-files/random.json
@@ -0,0 +1,1512 @@
+{
+ "total": 376,
+ "offset": 0,
+ "limit": 376,
+ "data": [
+ {
+ "Source": "/app-builder/docs/resources",
+ "Destination": "/app-builder/docs/resources/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/index",
+ "Destination": "/app-builder/docs/resources/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/blog-articles/",
+ "Destination": "/app-builder/docs/resources/blog-articles"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos",
+ "Destination": "/app-builder/docs/resources/videos/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/index",
+ "Destination": "/app-builder/docs/resources/videos/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/overview/security/",
+ "Destination": "/app-builder/docs/resources/videos/overview/security"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/overview/introduction/",
+ "Destination": "/app-builder/docs/resources/videos/overview/introduction"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/overview/getting-started/",
+ "Destination": "/app-builder/docs/resources/videos/overview/getting-started"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/overview/e2-e-user-journey/",
+ "Destination": "/app-builder/docs/resources/videos/overview/e2-e-user-journey"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/overview/architecture/",
+ "Destination": "/app-builder/docs/resources/videos/overview/architecture"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/softcrylic-showcase/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/softcrylic-showcase"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/react-spectrum/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/react-spectrum"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/projects-and-workspaces/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/projects-and-workspaces"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/ode-case-study/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/ode-case-study"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/live-wired-sneak/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/live-wired-sneak"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/learning-resources/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/learning-resources"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/deep-dive-use-cases/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/deep-dive-use-cases"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/debugging/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/debugging"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/dashboard-case-study/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/dashboard-case-study"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/custom-events/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/custom-events"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/ci-cd/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/ci-cd"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/developers-live/extend-experience-cloud/",
+ "Destination": "/app-builder/docs/resources/videos/developers-live/extend-experience-cloud"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/developers-live/deep-dive/",
+ "Destination": "/app-builder/docs/resources/videos/developers-live/deep-dive"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/developers-live/asset-compute-service-extensibility/",
+ "Destination": "/app-builder/docs/resources/videos/developers-live/asset-compute-service-extensibility"
+ },
+ {
+ "Source": "/app-builder/docs/resources/transclusions/requirements/",
+ "Destination": "/app-builder/docs/resources/transclusions/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app/welldone/",
+ "Destination": "/app-builder/docs/resources/todo-app/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app/requirements/",
+ "Destination": "/app-builder/docs/resources/todo-app/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app/lesson6/",
+ "Destination": "/app-builder/docs/resources/todo-app/lesson6"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app/lesson5/",
+ "Destination": "/app-builder/docs/resources/todo-app/lesson5"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app/lesson4/",
+ "Destination": "/app-builder/docs/resources/todo-app/lesson4"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app/lesson3/",
+ "Destination": "/app-builder/docs/resources/todo-app/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app/lesson2/",
+ "Destination": "/app-builder/docs/resources/todo-app/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app/lesson1/",
+ "Destination": "/app-builder/docs/resources/todo-app/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app",
+ "Destination": "/app-builder/docs/resources/todo-app/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/todo-app/index",
+ "Destination": "/app-builder/docs/resources/todo-app/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/spectrum-intro/welldone/",
+ "Destination": "/app-builder/docs/resources/spectrum-intro/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/spectrum-intro/requirements/",
+ "Destination": "/app-builder/docs/resources/spectrum-intro/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/spectrum-intro/lesson4/",
+ "Destination": "/app-builder/docs/resources/spectrum-intro/lesson4"
+ },
+ {
+ "Source": "/app-builder/docs/resources/spectrum-intro/lesson3/",
+ "Destination": "/app-builder/docs/resources/spectrum-intro/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/spectrum-intro/lesson2/",
+ "Destination": "/app-builder/docs/resources/spectrum-intro/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/spectrum-intro/lesson1/",
+ "Destination": "/app-builder/docs/resources/spectrum-intro/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/spectrum-intro",
+ "Destination": "/app-builder/docs/resources/spectrum-intro/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/spectrum-intro/index",
+ "Destination": "/app-builder/docs/resources/spectrum-intro/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/sample_apps",
+ "Destination": "/app-builder/docs/resources/sample_apps/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/sample_apps/index",
+ "Destination": "/app-builder/docs/resources/sample_apps/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/sample_apps/demo/",
+ "Destination": "/app-builder/docs/resources/sample_apps/demo"
+ },
+ {
+ "Source": "/app-builder/docs/resources/sample_apps/code_snippets/state/",
+ "Destination": "/app-builder/docs/resources/sample_apps/code_snippets/state"
+ },
+ {
+ "Source": "/app-builder/docs/resources/sample_apps/code_snippets",
+ "Destination": "/app-builder/docs/resources/sample_apps/code_snippets/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/sample_apps/code_snippets/index",
+ "Destination": "/app-builder/docs/resources/sample_apps/code_snippets/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/sample_apps/code_snippets/files/",
+ "Destination": "/app-builder/docs/resources/sample_apps/code_snippets/files"
+ },
+ {
+ "Source": "/app-builder/docs/resources/sample_apps/code_snippets/events/",
+ "Destination": "/app-builder/docs/resources/sample_apps/code_snippets/events"
+ },
+ {
+ "Source": "/app-builder/docs/resources/sample_apps/code_snippets/analytics/",
+ "Destination": "/app-builder/docs/resources/sample_apps/code_snippets/analytics"
+ },
+ {
+ "Source": "/app-builder/docs/resources/journaling-events/welldone/",
+ "Destination": "/app-builder/docs/resources/journaling-events/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/journaling-events/requirements/",
+ "Destination": "/app-builder/docs/resources/journaling-events/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/journaling-events/lesson3/",
+ "Destination": "/app-builder/docs/resources/journaling-events/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/journaling-events/lesson2/",
+ "Destination": "/app-builder/docs/resources/journaling-events/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/journaling-events/lesson1/",
+ "Destination": "/app-builder/docs/resources/journaling-events/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/journaling-events",
+ "Destination": "/app-builder/docs/resources/journaling-events/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/journaling-events/index",
+ "Destination": "/app-builder/docs/resources/journaling-events/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/events-runtime/welldone/",
+ "Destination": "/app-builder/docs/resources/events-runtime/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/events-runtime/requirements/",
+ "Destination": "/app-builder/docs/resources/events-runtime/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/events-runtime/lesson2/",
+ "Destination": "/app-builder/docs/resources/events-runtime/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/events-runtime/lesson1/",
+ "Destination": "/app-builder/docs/resources/events-runtime/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/events-runtime",
+ "Destination": "/app-builder/docs/resources/events-runtime/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/events-runtime/index",
+ "Destination": "/app-builder/docs/resources/events-runtime/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/event-driven/welldone/",
+ "Destination": "/app-builder/docs/resources/event-driven/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/event-driven/requirements/",
+ "Destination": "/app-builder/docs/resources/event-driven/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/event-driven/lesson4/",
+ "Destination": "/app-builder/docs/resources/event-driven/lesson4"
+ },
+ {
+ "Source": "/app-builder/docs/resources/event-driven/lesson3/",
+ "Destination": "/app-builder/docs/resources/event-driven/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/event-driven/lesson2/",
+ "Destination": "/app-builder/docs/resources/event-driven/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/event-driven/lesson1/",
+ "Destination": "/app-builder/docs/resources/event-driven/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/event-driven",
+ "Destination": "/app-builder/docs/resources/event-driven/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/event-driven/index",
+ "Destination": "/app-builder/docs/resources/event-driven/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/debugging/welldone/",
+ "Destination": "/app-builder/docs/resources/debugging/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/debugging/requirements/",
+ "Destination": "/app-builder/docs/resources/debugging/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/debugging/lesson3/",
+ "Destination": "/app-builder/docs/resources/debugging/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/debugging/lesson2/",
+ "Destination": "/app-builder/docs/resources/debugging/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/debugging/lesson1/",
+ "Destination": "/app-builder/docs/resources/debugging/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/debugging",
+ "Destination": "/app-builder/docs/resources/debugging/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/debugging/index",
+ "Destination": "/app-builder/docs/resources/debugging/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/customer-dashboard/welldone/",
+ "Destination": "/app-builder/docs/resources/customer-dashboard/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/customer-dashboard/requirements/",
+ "Destination": "/app-builder/docs/resources/customer-dashboard/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/customer-dashboard/lesson5/",
+ "Destination": "/app-builder/docs/resources/customer-dashboard/lesson5"
+ },
+ {
+ "Source": "/app-builder/docs/resources/customer-dashboard/lesson4/",
+ "Destination": "/app-builder/docs/resources/customer-dashboard/lesson4"
+ },
+ {
+ "Source": "/app-builder/docs/resources/customer-dashboard/lesson3/",
+ "Destination": "/app-builder/docs/resources/customer-dashboard/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/customer-dashboard/lesson2/",
+ "Destination": "/app-builder/docs/resources/customer-dashboard/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/customer-dashboard/lesson1/",
+ "Destination": "/app-builder/docs/resources/customer-dashboard/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/customer-dashboard",
+ "Destination": "/app-builder/docs/resources/customer-dashboard/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/customer-dashboard/index",
+ "Destination": "/app-builder/docs/resources/customer-dashboard/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/welldone/",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/requirements/",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/our-worker/",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/our-worker"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/lesson5/",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/lesson5"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/lesson4/",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/lesson4"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/lesson3/",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/lesson2/",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/lesson1/",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/index",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/custom-asset-compute-worker/aem-cloud-assets/",
+ "Destination": "/app-builder/docs/resources/custom-asset-compute-worker/aem-cloud-assets"
+ },
+ {
+ "Source": "/app-builder/docs/resources/cron-jobs/welldone/",
+ "Destination": "/app-builder/docs/resources/cron-jobs/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/cron-jobs/requirements/",
+ "Destination": "/app-builder/docs/resources/cron-jobs/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/cron-jobs/lesson3/",
+ "Destination": "/app-builder/docs/resources/cron-jobs/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/cron-jobs/lesson2/",
+ "Destination": "/app-builder/docs/resources/cron-jobs/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/cron-jobs/lesson1/",
+ "Destination": "/app-builder/docs/resources/cron-jobs/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/cron-jobs",
+ "Destination": "/app-builder/docs/resources/cron-jobs/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/cron-jobs/index",
+ "Destination": "/app-builder/docs/resources/cron-jobs/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/ci-cd/welldone/",
+ "Destination": "/app-builder/docs/resources/ci-cd/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/ci-cd/requirements/",
+ "Destination": "/app-builder/docs/resources/ci-cd/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/ci-cd/lesson3/",
+ "Destination": "/app-builder/docs/resources/ci-cd/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/ci-cd/lesson2/",
+ "Destination": "/app-builder/docs/resources/ci-cd/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/ci-cd/lesson1/",
+ "Destination": "/app-builder/docs/resources/ci-cd/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/ci-cd",
+ "Destination": "/app-builder/docs/resources/ci-cd/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/ci-cd/index",
+ "Destination": "/app-builder/docs/resources/ci-cd/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/barcode-reader/welldone/",
+ "Destination": "/app-builder/docs/resources/barcode-reader/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/barcode-reader/test/",
+ "Destination": "/app-builder/docs/resources/barcode-reader/test"
+ },
+ {
+ "Source": "/app-builder/docs/resources/barcode-reader/requirements/",
+ "Destination": "/app-builder/docs/resources/barcode-reader/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/barcode-reader",
+ "Destination": "/app-builder/docs/resources/barcode-reader/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/barcode-reader/index",
+ "Destination": "/app-builder/docs/resources/barcode-reader/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/barcode-reader/bootstrap/",
+ "Destination": "/app-builder/docs/resources/barcode-reader/bootstrap"
+ },
+ {
+ "Source": "/app-builder/docs/resources/barcode-reader/barcode/",
+ "Destination": "/app-builder/docs/resources/barcode-reader/barcode"
+ },
+ {
+ "Source": "/app-builder/docs/resources/asset-compute-worker-ps-api/welldone/",
+ "Destination": "/app-builder/docs/resources/asset-compute-worker-ps-api/welldone"
+ },
+ {
+ "Source": "/app-builder/docs/resources/asset-compute-worker-ps-api/requirements/",
+ "Destination": "/app-builder/docs/resources/asset-compute-worker-ps-api/requirements"
+ },
+ {
+ "Source": "/app-builder/docs/resources/asset-compute-worker-ps-api/lesson4/",
+ "Destination": "/app-builder/docs/resources/asset-compute-worker-ps-api/lesson4"
+ },
+ {
+ "Source": "/app-builder/docs/resources/asset-compute-worker-ps-api/lesson3/",
+ "Destination": "/app-builder/docs/resources/asset-compute-worker-ps-api/lesson3"
+ },
+ {
+ "Source": "/app-builder/docs/resources/asset-compute-worker-ps-api/lesson2/",
+ "Destination": "/app-builder/docs/resources/asset-compute-worker-ps-api/lesson2"
+ },
+ {
+ "Source": "/app-builder/docs/resources/asset-compute-worker-ps-api/lesson1/",
+ "Destination": "/app-builder/docs/resources/asset-compute-worker-ps-api/lesson1"
+ },
+ {
+ "Source": "/app-builder/docs/resources/asset-compute-worker-ps-api",
+ "Destination": "/app-builder/docs/resources/asset-compute-worker-ps-api/"
+ },
+ {
+ "Source": "/app-builder/docs/resources/asset-compute-worker-ps-api/index",
+ "Destination": "/app-builder/docs/resources/asset-compute-worker-ps-api/"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview/what-is-app-builder/",
+ "Destination": "/app-builder/docs/intro_and_overview/what-is-app-builder"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview",
+ "Destination": "/app-builder/docs/intro_and_overview/"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview/index",
+ "Destination": "/app-builder/docs/intro_and_overview/"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview/faq/",
+ "Destination": "/app-builder/docs/intro_and_overview/faq"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview/community/",
+ "Destination": "/app-builder/docs/intro_and_overview/community"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview/business-case/",
+ "Destination": "/app-builder/docs/intro_and_overview/business-case"
+ },
+ {
+ "Source": "/app-builder/docs/guides/references/",
+ "Destination": "/app-builder/docs/guides/references"
+ },
+ {
+ "Source": "/app-builder/docs/guides",
+ "Destination": "/app-builder/docs/guides/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/index",
+ "Destination": "/app-builder/docs/guides/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/contribution-guide/",
+ "Destination": "/app-builder/docs/guides/contribution-guide"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/using-runtime/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/using-runtime"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/using-packages/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/using-packages"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/troubleshooting/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/troubleshooting"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/throughput-tuning/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/throughput-tuning"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/system-settings/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/system-settings"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/security-general/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/security-general"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/securing-web-actions/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/securing-web-actions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/logging-monitoring/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/logging-monitoring"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides",
+ "Destination": "/app-builder/docs/guides/runtime_guides/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/index",
+ "Destination": "/app-builder/docs/guides/runtime_guides/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/debugging/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/debugging"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/creating-rest-apis/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/creating-rest-apis"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/creating-actions/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/creating-actions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/ci-cd-pipeline/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/ci-cd-pipeline"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/asynchronous-calls/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/asynchronous-calls"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/tools",
+ "Destination": "/app-builder/docs/guides/runtime_guides/tools/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/tools/index",
+ "Destination": "/app-builder/docs/guides/runtime_guides/tools/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/tools/cli-install/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/tools/cli-install"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/wsk-use/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/wsk-use"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/triggersrules/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/triggersrules"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/sequences-compositions/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/sequences-compositions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/runtimes/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/runtimes"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/prepackages/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/prepackages"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/packages/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/packages"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/multiple-regions/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/multiple-regions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/index",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/feeds/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/feeds"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/environment-variables/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/environment-variables"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/configuringproxy/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/configuringproxy"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/cli-use/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/cli-use"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/api-ref/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/api-ref"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/telemetry/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/telemetry"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/optimization/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/optimization"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/index",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/distribution/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/distribution"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/development/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/development"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application-state/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application-state"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/security/understanding-authentication/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/security/understanding-authentication"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/security",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/security/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/security/index",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/security/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/extensions/extensions/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/extensions/extensions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/extensions/extension-migration-guide/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/extensions/extension-migration-guide"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/aec-integration/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/aec-integration"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/modules/user/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/modules/user"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/modules/topbar/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/modules/topbar"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/modules/page/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/modules/page"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/modules",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/modules/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/modules/index",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/modules/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-solution/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-solution"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-callback/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-callback"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/runtime/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/runtime"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapi/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/modules/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/modules"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/index",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/events/webhooks/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/events/webhooks"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/events/custom-events/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/events/custom-events"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/setting-response-headers/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/setting-response-headers"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/deployment/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/deployment"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/credential-rotation/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/credential-rotation"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/cicd-for-app-builder-apps/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/cicd-for-app-builder-apps"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/configuration/webpack-configuration/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/configuration/webpack-configuration"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/configuration/configuration/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/configuration/configuration"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/using-sdks/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/using-sdks"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture-overview/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture-overview"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/app-hooks/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/app-hooks"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk-enterprise/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk-enterprise"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk-cloud/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk-cloud"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/new-relic/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/new-relic"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/logging/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/logging"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/azure-log-analytics/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/azure-log-analytics"
+ },
+ {
+ "Source": "/app-builder/docs/getting_started/first-app/",
+ "Destination": "/app-builder/docs/getting_started/first-app"
+ },
+ {
+ "Source": "/app-builder/docs/get_started",
+ "Destination": "/app-builder/docs/get_started/"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/index",
+ "Destination": "/app-builder/docs/get_started/"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/understanding-runtime/",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/understanding-runtime"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/setup/",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/setup"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/resources/",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/resources"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/index",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/how-runtime-works/",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/how-runtime-works"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/entities/",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/entities"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/deploy/",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/deploy"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/activations/",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/activations"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/troubleshoot/",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/troubleshoot"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/set-up/",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/set-up"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/publish-app/",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/publish-app"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/index",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/first-app/",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/first-app"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/app-builder-intro/",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/app-builder-intro"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview/what_is_app_builder",
+ "Destination": "/app-builder/docs/intro_and_overview/what-is-app-builder"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview/what_is_app_builder/",
+ "Destination": "/app-builder/docs/intro_and_overview/what-is-app-builder"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview/business_case",
+ "Destination": "/app-builder/docs/intro_and_overview/business-case"
+ },
+ {
+ "Source": "/app-builder/docs/intro_and_overview/business_case/",
+ "Destination": "/app-builder/docs/intro_and_overview/business-case"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/set_up/",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/set-up"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/set_up",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/set-up"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/publish_app/",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/publish-app"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/publish_app",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/publish-app"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/first_app/",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/first-app"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/first_app",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/first-app"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/app_builder_intro/",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/app-builder-intro"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/app_builder_get_started/app_builder_intro",
+ "Destination": "/app-builder/docs/get_started/app_builder_get_started/app-builder-intro"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/understanding_runtime/",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/understanding-runtime"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/understanding_runtime",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/understanding-runtime"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/how_runtime_works/",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/how-runtime-works"
+ },
+ {
+ "Source": "/app-builder/docs/get_started/runtime_getting_started/how_runtime_works",
+ "Destination": "/app-builder/docs/get_started/runtime_getting_started/how-runtime-works"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/using_sdks/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/using-sdks"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/using_sdks",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/using-sdks"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction_to_react_spectrum/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction_to_react_spectrum",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture_overview/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture-overview"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture_overview",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture-overview"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/app_hooks/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/app-hooks"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/architecture_overview/app_hooks",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/architecture_overview/app-hooks"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_state/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application-state"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_state",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application-state"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk_enterprise/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk-enterprise"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk_enterprise",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk-enterprise"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk_cloud/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk-cloud"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk_cloud",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/splunk-cloud"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/new_relic/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/new-relic"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/new_relic",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/new-relic"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/azure_log_analytics/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/azure-log-analytics"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/application_logging/azure_log_analytics",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/application_logging/azure-log-analytics"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/setting_response_headers/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/setting-response-headers"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/setting_response_headers",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/setting-response-headers"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/credential_rotation/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/credential-rotation"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/credential_rotation",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/credential-rotation"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/cicd_for_app_builder_apps/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/cicd-for-app-builder-apps"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/deployment/cicd_for_app_builder_apps",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/deployment/cicd-for-app-builder-apps"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/configuration/webpack_configuration/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/configuration/webpack-configuration"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/configuration/webpack_configuration",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/configuration/webpack-configuration"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/aec_integration/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/aec-integration"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/aec_integration",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/aec-integration"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/events/custom_events/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/events/custom-events"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/events/custom_events",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/events/custom-events"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userinfo/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userinfo",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userapi/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userapi",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.topbarapiproperties/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.topbarapiproperties",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.topbarapi/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.topbarapi",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.solution/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-solution"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.solution",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-solution"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.externalfeedbackconfig/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.externalfeedbackconfig",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.customsearchconfig/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.customsearchconfig",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.customfeedbackconfig/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.customfeedbackconfig",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.callback/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-callback"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.callback",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-callback"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.pageapiproperties/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.pageapiproperties",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.pageapi/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.pageapi",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.objectwithpath/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.objectwithpath",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.objectwithhref/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.objectwithhref",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userinfo/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userinfo",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userapi/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userapi",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/security/understanding_authentication/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/security/understanding-authentication"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/security/understanding_authentication",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/security/understanding-authentication"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/extensions/extension_migration_guide/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/extensions/extension-migration-guide"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/extensions/extension_migration_guide",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/extensions/extension-migration-guide"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/migrate_app_to_exp_cloud_spa/",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa"
+ },
+ {
+ "Source": "/app-builder/docs/guides/app_builder_guides/exc_app/migrate_app_to_exp_cloud_spa",
+ "Destination": "/app-builder/docs/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa"
+ },
+ {
+ "Source": "/app-builder/docs/guides/contribution_guide/",
+ "Destination": "/app-builder/docs/guides/contribution-guide"
+ },
+ {
+ "Source": "/app-builder/docs/guides/contribution_guide",
+ "Destination": "/app-builder/docs/guides/contribution-guide"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/logging_monitoring/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/logging-monitoring"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/logging_monitoring",
+ "Destination": "/app-builder/docs/guides/runtime_guides/logging-monitoring"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/creating_rest_apis/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/creating-rest-apis"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/creating_rest_apis",
+ "Destination": "/app-builder/docs/guides/runtime_guides/creating-rest-apis"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/creating_actions/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/creating-actions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/creating_actions",
+ "Destination": "/app-builder/docs/guides/runtime_guides/creating-actions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/ci-cd_pipeline/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/ci-cd-pipeline"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/ci-cd_pipeline",
+ "Destination": "/app-builder/docs/guides/runtime_guides/ci-cd-pipeline"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/asynchronous_calls/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/asynchronous-calls"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/asynchronous_calls",
+ "Destination": "/app-builder/docs/guides/runtime_guides/asynchronous-calls"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/api_ref/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/api-ref"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/api_ref",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/api-ref"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/wsk_use/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/wsk-use"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/wsk_use",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/wsk-use"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/sequences_compositions/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/sequences-compositions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/sequences_compositions",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/sequences-compositions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/multiple_regions/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/multiple-regions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/multiple_regions",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/multiple-regions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/environment_variables/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/environment-variables"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/environment_variables",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/environment-variables"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/cli_use/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/cli-use"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/reference_docs/cli_use",
+ "Destination": "/app-builder/docs/guides/runtime_guides/reference_docs/cli-use"
+ },
+ {
+ "Source": "/app-builder/docs/guides/contribution_guide/",
+ "Destination": "/app-builder/docs/guides/contribution-guide"
+ },
+ {
+ "Source": "/app-builder/docs/guides/contribution_guide",
+ "Destination": "/app-builder/docs/guides/contribution-guide"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/using_runtime/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/using-runtime"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/using_runtime",
+ "Destination": "/app-builder/docs/guides/runtime_guides/using-runtime"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/using_packages/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/using-packages"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/using_packages",
+ "Destination": "/app-builder/docs/guides/runtime_guides/using-packages"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/throughput_tuning/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/throughput-tuning"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/throughput_tuning",
+ "Destination": "/app-builder/docs/guides/runtime_guides/throughput-tuning"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/system_settings/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/system-settings"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/system_settings",
+ "Destination": "/app-builder/docs/guides/runtime_guides/system-settings"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/security_general/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/security-general"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/security_general",
+ "Destination": "/app-builder/docs/guides/runtime_guides/security-general"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/securing_web_actions/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/securing-web-actions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/securing_web_actions",
+ "Destination": "/app-builder/docs/guides/runtime_guides/securing-web-actions"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/tools/cli_install/",
+ "Destination": "/app-builder/docs/guides/runtime_guides/tools/cli-install"
+ },
+ {
+ "Source": "/app-builder/docs/guides/runtime_guides/tools/cli_install",
+ "Destination": "/app-builder/docs/guides/runtime_guides/tools/cli-install"
+ },
+ {
+ "Source": "/app-builder/docs/resources/blog_articles/",
+ "Destination": "/app-builder/docs/resources/blog-articles"
+ },
+ {
+ "Source": "/app-builder/docs/resources/blog_articles",
+ "Destination": "/app-builder/docs/resources/blog-articles"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/overview/e2e_user_journey/",
+ "Destination": "/app-builder/docs/resources/videos/overview/e2-e-user-journey"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/overview/e2e_user_journey",
+ "Destination": "/app-builder/docs/resources/videos/overview/e2-e-user-journey"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/react_spectrum/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/react-spectrum"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/react_spectrum",
+ "Destination": "/app-builder/docs/resources/videos/exploring/react-spectrum"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/projects_and_workspaces/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/projects-and-workspaces"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/projects_and_workspaces",
+ "Destination": "/app-builder/docs/resources/videos/exploring/projects-and-workspaces"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/custom_events/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/custom-events"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/custom_events",
+ "Destination": "/app-builder/docs/resources/videos/exploring/custom-events"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/ci_cd/",
+ "Destination": "/app-builder/docs/resources/videos/exploring/ci-cd"
+ },
+ {
+ "Source": "/app-builder/docs/resources/videos/exploring/ci_cd",
+ "Destination": "/app-builder/docs/resources/videos/exploring/ci-cd"
+ }
+ ],
+ ":type": "sheet"
+}
diff --git a/src/pages/hackathon-new-files/troubleshoot.md b/src/pages/hackathon-new-files/troubleshoot.md
new file mode 100644
index 000000000..d594807d2
--- /dev/null
+++ b/src/pages/hackathon-new-files/troubleshoot.md
@@ -0,0 +1,77 @@
+# Troubleshooting Common Issues
+
+This is a guide for troubleshooting some of the most common issues you may encounter when developing App Builder apps.
+
+## Before you proceed
+
+- Check your Node and tool versions to make sure they are supported by App Builder and up to date. We recommend [nvm](https://github.com/nvm-sh/nvm/blob/master/README.md) for version management.
+- If your application is on Dropbox or OneDrive, consider moving it: file watchers there sometimes cause unexpected errors.
+
+## General debugging
+
+When your action code doesn't work as expected, you may want to check the logs to investigate what went wrong. App Builder provides the [Logging SDK](https://github.com/adobe/aio-lib-core-logging) for this; please check out [App Builder's Application Logging](../guides/application_logging.md) for more details.
+
+To see the latest activations of your project, run this command:
+
+```bash
+aio runtime activation list
+```
+
+It lists the most recent activations and a summary with ID, start and end times, duration, status, and so on. The four most common status conditions of finished activations are:
+
+* `success`: the action executed successfully; you can obtain its result with `aio runtime activation result activationID`
+
+* `developer error`: the most likely reasons for this are:
+
+ * compilation errors such as missing variables or modules not found
+ * action time outs due to issues internal issues within the action or time outs of the back-end services to which the action connects
+
+ You can get activation details to see the underlying error by running the command `aio runtime activation get activationID`
+
+* `application error`, usually due to runtime issues such as thrown exceptions or attempts to get the value of an `undefined` variable. With appropriate try-catch blocks and logging, you can see what goes wrong from the logs through the command, `aio runtime activation logs activationID`
+
+* `internal error`caused by external factors unrelated to the action itself, for example not enough resources to run the action. Since I/O Runtime is a scalable platform, you should never see this error with the default action settings. If you do, please let us know by [email](mailto:iodev@adobe.com) so we can help you troubleshoot its cause.
+
+You could also try running your actions locally with the `aio app dev` command. This is very similar to `aio app run` except it runs your action code on localhost in a node process. Not all API calls work in this context because of cors restrictions, but it is still useful for catching syntax and logic errors, and it allows step debugging of your actions without timeouts.
+
+## Action logs
+
+[Web actions](../../guides/runtime_guides/creating-actions.md#invoking-web-actions) in your app are blocking requests; their activation results are not recorded if they are invoked successfully. To enforce persistence of activation results. pass the `x-ow-extra-logging: on` flag in the request headers. In the development mode of an SPA, you can add this flag directly to the "invoking action" function so you will have the activation results and logs recorded for all requests. They could then be retrieved as shown in the [General debugging](#general-debugging) section above.
+
+```javascript
+headers['x-ow-extra-logging'] = 'on'
+```
+
+## Action authentication errors
+
+When you make requests to an action with Adobe authentication and authorization checks enabled with the `require-adobe-auth` annotation set to `true`, you may see the following errors:
+
+1. `request is invalid, failed authorization. Please use a valid user token for this SPA.`
+2. `request is invalid, failed authorization. Please use a valid JWT or user access token for this headless application.`
+
+SPAs are applications with web UI components, located in the `web-src/` folder; headless app are back-end microservices without web UI.
+For authentication and authorization checks, the back-end actions of SPAs are validated against valid user tokens passed directly from tje Adobe Experience Cloud (ExC) Shell.
+
+Actions of a headless app can also be validated against a valid user token from ExC Shell or generated from the [JWT (Service Account) Authentication](https://developer.adobe.com/developer-console/docs/guides/authentication/ServerToServerAuthentication/#service-account-jwt-credential-deprecated). Please review the [App Builder Security Overview](../../guides/app_builder_guides/security/index.md) for more details about SPA vs. headless app authentication.
+
+If you are developing a headless app but accidentally have the `web-src/` folder added during the app initialization process, you could remove it by executing the command `aio app delete web-assets` at the root of your application source code folder. This will also assure that your actions are validated against the appropriate JWT auth.
+
+## Debugging errors with State and Files SDK
+
+If your code uses App Builder [State](https://github.com/adobe/aio-lib-state) or [Files](https://github.com/adobe/aio-lib-files) SDKs, you cannot use `aio app dev` to debug it. The reason is that State and Files services have additional security which limits calls from outside of Adobe Runtime actions. Your action code is run on localhost, which is not authorized to access the out-of-the-box cloud storage behind State and Files SDKs.
+
+Note: This is not a problem if you configure the State or Files SDKs to connect to your own cloud storage, for example [Azure Cosmos DB](https://azure.microsoft.com/en-us/products/cosmos-db/).
+
+## NodeJS with Mac M1 chip
+
+There are no precompiled NodeJS binaries for versions prior to 15.x of Apple's new M1 chip with ARM64 architecture. One solution to this is to change the architecture of your shell from arm64 to x86.
+
+We recommend using [Node Version Manager (nvm)](https://github.com/nvm-sh/nvm) over [Homebrew](https://brew.sh/) and following their [troubleshooting guides for macOS](https://github.com/nvm-sh/nvm#macos-troubleshooting), section "Macs with M1 chip."
+
+## Next steps
+
+This completes the "Getting Started" tutorial series for App Builder.
+
+To learn how to extend App Builder capabilities using the Adobe I/O Runtime platform, proceed to the [Get Started with Adobe I/O Runtime](../runtime_getting_started/index.md) tutorial.
+
+For in-depth review of App Builder architecture, development, deployment, integration, and security, visit the [Guides Index](../../guides/index.md) and select your topic of interest.