# Example 2. v1 app with GUI

## Introduction

In this section we'll explain app config for [`Convert Class Shape`](https://ecosystem.supervisely.com/apps/convert-class-shape) app. This app converts labeled objects from one geometry to another and creates a new project from original with converted class shapes.

[supervisely-ecosystem/convert-class-shape/config.json](https://github.com/supervisely-ecosystem/convert-class-shape/blob/master/config.json)

```json
{
  "name": "Convert Class Shape",
  "type": "app",
  "categories": [
    "images",
    "annotation transformation",
    "data operations"
  ],
  "description": "Converts shapes of classes (e.g. polygon to bitmap) and all corresponding objects",
  "docker_image": "supervisely/base-py-sdk:6.35.0",
  "instance_version": "6.4.57",
  "main_script": "src/convert_class_shape.py",
  "gui_template": "src/gui.html",
  "modal_template": "src/modal.html",
  "task_location": "workspace_tasks",
  "isolate": true,
  "icon": "https://i.imgur.com/TxR0dfX.png",
  "icon_background": "#FFFFFF",
  "context_menu": {
    "target": [
      "images_project"
    ],
    "context_category": "Transform"
  },
  "poster": "https://user-images.githubusercontent.com/106374579/186599439-6b6848e6-48cb-4fdc-912e-1a4493c79f41.png"
}
```

<figure><img src="/files/UZw8bdcSkv8pbDmDGPXn" alt=""><figcaption></figcaption></figure>

## Properties

### **`name`**

Name of the app in Supervisely

```json
"name": "Convert Class Shape"
```

### **`type`**

Entity type in Supervisely Ecosystem

```json
"type": "app"
```

### **`categories`**

Сategories under which the app will be displayed in Ecosystem

```json
"categories": [
    "images",
    "annotation transformation",
    "data operations"
  ]
```

### **`description`**

Description of the app in Supervisely

```json
"description": "Converts shapes of classes (e.g. polygon to bitmap) and all corresponding objects"
```

### **`docker_image`**

Docker image used to launch the app with all pre-installed requirements

```json
"docker_image": "supervisely/base-py-sdk:6.4.57"
```

### **`instance_version`**

Minimum instance version to launch app. Same as **`min_instance_version`.** Current instance version can be found at the bottom right corner of the Supervisely page.

![](/files/D0qs3ZM9lWRJusA3oYcL)

```json
"instance_version": "6.4.57"
```

### **`main_script`**

Relative path to the main script of the application from the root of the project

<pre class="language-json"><code class="lang-json"><strong>"main_script": "src/convert_class_shape.py"
</strong></code></pre>

### **`gui_template`**

Relative path to the GUI template from the root of the project

```json
"gui_template": "src/gui.html"
```

### **`modal_template`**

Relative path to the modal window template from the root of the project. GUI apps can use modal window functionality too. In case of this app modal window only contain text information hence **`modal_template_state`** is not needed

```json
"modal_template": "src/modal.html"
```

### **`task_location`**

Specifies where to display task

<figure><img src="/files/AoHn7YoQNJTjDnEcReiK" alt=""><figcaption><p>workspace task</p></figcaption></figure>

```json
"task_location": "workspace_tasks"
```

### `isolate`

Runs app in isolated container

```json
"isolate": true
```

### **`icon`**

Link to the app icon

```json
"icon": "https://i.imgur.com/TxR0dfX.png"
```

### **`icon_background`**

Background of app icon in hex color code

```json
"icon_background": "#FFFFFF"
```

### **`context_menu`**

App context menu configuration

<figure><img src="/files/puXqoicuPOaR2OpOvyyo" alt=""><figcaption></figcaption></figure>

```json
"context_menu": {
    "target": ["images_project"],
    "context_category": "Transform"
  }
```

### **`poster`**

Link to app poster

```json
"poster": "https://github.com/supervisely-ecosystem/import-images/releases/download/v1.0.0/poster.png"
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.supervisely.com/app-development/basics/app-json-config/v1-legacy/example-2.-v1-app-with-gui.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
