# 웨이브온 소개

### Waveon이란?

Waveon은 코딩 없이 **AI와 대화하며** 업무용 웹 애플리케이션을 만드는 플랫폼입니다.

원하는 기능을 자연어로 설명하면, AI가 즉시 React 기반 앱을 생성합니다. 데이터베이스 설정, 서버 구축 없이 바로 사용할 수 있습니다.

***

### 핵심 기능

#### 1. AI 대화로 앱 생성

채팅창에 원하는 앱을 설명하면 AI가 만들어줍니다.

```
"직원 정보를 관리하는 대시보드를 만들어줘.
이름, 부서, 입사일을 입력하고 목록으로 볼 수 있게 해줘."
```

#### 2. 실시간 미리보기

AI가 코드를 생성하는 동안 오른쪽 Preview 패널에서 결과를 바로 확인할 수 있습니다.

#### 3. 비주얼 편집 모드

화면에서 요소를 직접 클릭하여 선택하고, AI에게 해당 요소만 수정하도록 요청할 수 있습니다.

#### 4. 파일 업로드

이미지, PDF, Excel 파일을 업로드하여 AI에게 참고 자료로 제공할 수 있습니다.

***

### 도움이 필요하신가요?

* **이메일**: <support@waveon.io>
* 또는 웹사이트 접속하셔서 **문의하기** 를 통해 문의 주시면 빠르게 답변 드리도록 하겠습니다.


# 빠르게 시작하기

{% hint style="success" %}
**예상 소요 시간**: 5분\
**목표**: 첫 번째 앱을 만들고 미리보기까지 완료
{% endhint %}

### 준비물

* [ ] Waveon 계정 ([회원가입](https://waveon.io/signup))
* [ ] Chrome 브라우저 (권장)

***

### Step 1: 새 앱 만들기

#### 방법 A: 템플릿으로 시작 (권장, AI로 수정 가능)

1. [www.waveon.io/templates](https://www.waveon.io/templates) 접속
2. 원하는 템플릿을 선택
3. 미리보기를 통해 확인
4. 시작하기 클릭 하여 진행

{% hint style="info" %}
템플릿으로 시작하기를 권장합니다.

* AI 크레딧 절약 : 템플릿을 이용하면 직접 만드는것 대비 AI크레딧을 절약할수 있습니다.
* 미리 세팅된 로직 : 템플릿에는 필요한 동작들이 대부분 구현되어 있어서 직접 제작보다 빠릅니다.
* 안정된 시스템 : 템플릿은 버그나, 예외처리등이 되어 있어서 직접 구현 대비 버그가 적습니다.
  {% endhint %}

#### 방법 B: AI로 처음부터 시작

1. [www.waveon.io/templates](https://www.waveon.io/templates) 접속
2. **\[AI로 제작하기]** 클릭
3. 입력창에 원하는 시스템에 대한 설명을 입력

***

### Step 2: 에디터 살펴보기

앱이 생성되면 **에디터**가 열립니다. 3개의 패널로 구성되어 있습니다.

<table><thead><tr><th width="159.59375">패널</th><th width="154.19921875">위치</th><th>역할</th></tr></thead><tbody><tr><td><strong>Chat</strong></td><td>왼쪽</td><td>AI와 대화하며 앱 생성/수정</td></tr><tr><td><strong>Code</strong></td><td>중앙</td><td>생성된 React 코드 확인 (Pro 전용)</td></tr><tr><td><strong>Preview</strong></td><td>오른쪽</td><td>실시간 앱 미리보기</td></tr></tbody></table>

{% hint style="info" %}
**Code 패널**은 Pro 플랜 이상에서 편집 가능합니다. Free 플랜에서는 읽기 전용입니다.
{% endhint %}

***

### Step 3: AI에게 요청하기

Chat 패널에 원하는 기능을 자연어로 설명하세요.

#### 좋은 프롬프트 예시 - 구체적인 설명과 지시를 포함

{% tabs %}
{% tab title="직원 관리" %}

```
직원 관리 기능을 추가해줘.

필요한 기능:
- 직원 추가 폼 (이름, 부서, 이메일, 입사일)
- 직원 목록 테이블
- 검색 기능

디자인은 심플하고 깔끔하게
```

{% endtab %}

{% tab title="재고 관리" %}

```
입고 관리에서 입고 조회 메뉴 페이지에서 "단위" 컬럼을 제거해줘.
```

{% endtab %}

{% tab title="고객 관리" %}

```
고객 관리 CRM을 만들어줘.

필요한 기능:
- 고객 정보 입력 (회사명, 담당자, 연락처, 상태)
- 고객 목록 (상태별 필터)
- 상담 메모 기록
```

{% endtab %}
{% endtabs %}

***

### Step 4: 결과 확인하기

AI가 앱을 생성하는 동안 **Preview 패널**에서 실시간으로 결과를 확인할 수 있습니다.

#### PC / Mobile 전환

에디터 상단의 토글로 PC와 Mobile 뷰를 전환할 수 있습니다.

***

### Step 5: 수정 요청하기

결과가 마음에 들지 않으면 추가 요청을 보내세요.

#### 기능 추가

```
테이블에 수정/삭제 버튼을 추가해줘
```

#### 디자인 변경

```
전체 색상을 파란색 계열로 바꿔줘
헤더에 회사 로고 자리를 만들어줘
```

#### 레이아웃 수정

```
폼을 왼쪽에, 테이블을 오른쪽에 나란히 배치해줘
```

***

### Step 6: Visual Edit 모드 (선택)

특정 요소만 수정하고 싶을 때 사용합니다.

1. Chat 패널 하단의 **Visual Edit** 버튼(🎯) 클릭
2. Preview에서 수정할 요소 클릭
3. 선택된 요소 정보가 Chat에 표시됨
4. 해당 요소에 대한 수정 요청

```
이 버튼 색상을 빨간색으로 바꿔줘
```

***

### Step 7: 파일 업로드 (선택)

이미지나 문서를 AI에게 참고 자료로 제공할 수 있습니다.

#### 지원 파일 형식

* **이미지**: PNG, JPG, GIF
* **문서**: PDF, Word, Excel, CSV, TXT

#### 사용 예시

```
[이미지 업로드 후]
이 디자인을 참고해서 비슷한 스타일로 만들어줘
```

```
[Excel 업로드 후]
이 데이터 구조를 기반으로 입력 폼을 만들어줘
```

***

### 완료!

{% hint style="success" %}
**축하합니다!** 첫 번째 앱을 만들었습니다.\
Preview에서 실제로 폼을 입력하고 동작을 테스트해보세요.
{% endhint %}

***

### 다음 단계

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Core Concepts</strong></td><td>에디터 구조와 핵심 개념 이해하기</td><td><a href="/pages/OnqpFvFaltuMHbYnvj2Z">/pages/OnqpFvFaltuMHbYnvj2Z</a></td></tr><tr><td><strong>Your First App</strong></td><td>완전한 CRUD 앱 만들기 튜토리얼</td><td><a href="/pages/ld0PCthPw4bzkIlen6Q9">/pages/ld0PCthPw4bzkIlen6Q9</a></td></tr></tbody></table>

***

### 자주 묻는 질문

<details>

<summary>AI가 잘못된 코드를 생성했어요</summary>

다시 요청하거나, 더 구체적으로 설명해주세요.

```
방금 만든 테이블에서 에러가 나. 데이터가 없을 때 "데이터가 없습니다" 메시지를 보여줘
```

</details>

<details>

<summary>생성이 중간에 멈췄어요</summary>

**Stop** 버튼을 누르고 다시 요청하거나, 페이지를 새로고침해주세요.

</details>

<details>

<summary>Code 패널이 비활성화되어 있어요</summary>

Code 편집은 Pro 플랜 이상에서 가능합니다. Free 플랜에서는 읽기만 가능합니다.

</details>


# 핵심 개념 소개

{% hint style="success" %}
**예상 소요 시간**: 5분\
**목표**: 웨이브온 구조와 핵심 개념 이해하기
{% endhint %}

#### 앱 (App)

Waveon에서 만드는 하나의 웹 애플리케이션입니다.

* 고유한 URL을 가짐
* 여러 페이지를 포함할 수 있음
* React 기반으로 동작

***

#### 워크스페이스(Workspace)

다른 사용자를 초대하여 함께 협업이 가능한 공간 입니다.

* 다른 사용자를 초대 가능
* 사용자의 권한 관리가 가능
* 워크스페이스에서 만든 앱은 다른 사용자와 공유 및 공동작업
* 기본적으로 개인 워크스페이스 생성

***

#### 데이터(Data)

앱을 통해 저장된 데이터를 조회할수 있는 페이지 입니다.

* 앱에서 데이터 베이스 연동해줘, 또는 데이터베이스에 입력해줘 와 같은 방식으로 AI에게 지시
* 해당 데이터는 "데이터" 페이지에서 조회 가능
* 워크스페이스에서는 다른 사용자, 다른 앱 간에 데이터를 공유

***

#### 설정 ( 앱 설정, 워크스페이스 설정 )

앱 또는 워크스페이스를 설정하고 관리할수 있습니다.

* 개인 워크스페이스 상태에서 설정 버튼 클릭시 개인 설정이 가능
* 팀 워크스페이스 상태에서 설정 버튼 클릭시 팀 워크스페이스 설정이 가능
* 앱 에디터에서 설정 버튼 클릭시 앱의 설정 가능

***

#### 게시하기 (Publish)

만든 앱을 인터넷에 공개하는 것입니다. 에디터에서 우측 상단 **게시하기** 버튼을 눌러 게시를 진행할수 있습니다.

**배포 후 제공되는 것**

* **앱 URL**: `https://your-app.waveon.me`
* **버전 관리**: 이전 버전으로 롤백 가능
* **도메인 설정**: 보유한 도메인으로 접속 설정 가능

***

### 워크플로우 요약

```
1. 프롬프트 입력 → 2. AI가 코드 생성 → 3. Preview 확인
       ↑                                      ↓
       ←←←←←←←← 4. 수정 요청 ←←←←←←←←←←←←←←←←
                                              ↓
                               5. 만족하면 배포
```

***

### 다음 단계


# 첫 앱 만들기

{% hint style="success" %}
**예상 소요 시간**: 15분\
**목표**: 데이터 저장이 가능한 직원 관리 앱 완성
{% endhint %}

### 만들 앱 소개

이 튜토리얼에서는 **직원 관리 앱**을 처음부터 끝까지 만들어봅니다.

#### 완성 기능

* ✅ 직원 추가 폼
* ✅ 직원 목록 테이블
* ✅ 검색 기능
* ✅ 수정 기능
* ✅ 삭제 기능
* ✅ 부서별 필터

***

### Part 1: 기본 앱 생성

{% stepper %}
{% step %}

#### 새 앱 시작

[waveon.io](https://waveon.io) 접속 후 다음 프롬프트를 입력합니다:

```
직원 관리 앱을 만들어줘.

필요한 기능:
1. 직원 추가 폼 (이름, 부서, 이메일, 입사일)
2. 직원 목록 테이블
3. 검색 기능

디자인은 심플하고 깔끔하게 해줘.
```

{% endstep %}

{% step %}

#### 결과 확인

AI가 앱을 생성하면 Preview 패널에서 결과를 확인합니다.

* 폼이 제대로 표시되는지
* 테이블이 있는지
* 검색창이 있는지
  {% endstep %}

{% step %}

#### 테스트

Preview에서 직접 테스트해봅니다:

1. 폼에 테스트 데이터 입력
2. 추가/등록 버튼 클릭
3. 테이블에 데이터가 표시되는지 확인

{% hint style="info" %}
이 단계에서는 데이터가 **메모리에만** 저장됩니다. 페이지를 새로고침하면 사라집니다.
{% endhint %}
{% endstep %}
{% endstepper %}

***

### Part 2: 데이터 저장 기능

현재는 새로고침하면 데이터가 사라집니다. 영구 저장 기능을 추가합니다.

{% stepper %}
{% step %}

#### 데이터 저장 요청

```
직원 데이터를 서버에 저장할 수 있게 해줘.
폼을 제출하면 데이터베이스에 저장되고,
테이블에서 저장된 데이터를 불러와서 보여줘.
```

{% endstep %}

{% step %}

#### 테스트

1. 폼에 데이터 입력 후 제출
2. **페이지 새로고침**
3. 데이터가 유지되는지 확인
   {% endstep %}
   {% endstepper %}

{% hint style="info" %}
**데이터는 어디에 저장되나요?**\
Waveon이 제공하는 클라우드 데이터베이스에 자동으로 저장됩니다. 별도의 서버 설정이 필요 없습니다.
{% endhint %}

***

### Part 3: 수정 기능 추가

{% stepper %}
{% step %}

#### 수정 기능 요청

```
테이블에서 직원을 클릭하면 수정할 수 있게 해줘.
수정 폼은 모달(팝업)로 띄워줘.
```

{% endstep %}

{% step %}

#### 테스트

1. 테이블에서 아무 행 클릭
2. 수정 모달이 열리는지 확인
3. 데이터 수정 후 저장
4. 테이블에 반영되는지 확인
   {% endstep %}
   {% endstepper %}

***

### Part 4: 삭제 기능 추가

{% stepper %}
{% step %}

#### 삭제 기능 요청

```
각 행에 삭제 버튼을 추가해줘.
삭제 버튼 클릭 시 "정말 삭제하시겠습니까?" 확인 팝업을 띄워줘.
확인하면 삭제하고, 취소하면 아무 일도 안 일어나게.
```

{% endstep %}

{% step %}

#### 테스트

1. 삭제 버튼 클릭
2. 확인 팝업 표시 확인
3. "확인" 클릭 시 데이터 삭제
4. "취소" 클릭 시 팝업만 닫힘
   {% endstep %}
   {% endstepper %}

***

### Part 5: 필터 기능 추가

{% stepper %}
{% step %}

#### 필터 기능 요청

```
부서별로 필터링할 수 있는 드롭다운을 추가해줘.
옵션: 전체, 개발팀, 마케팅팀, 영업팀, 인사팀
"전체"를 선택하면 모든 직원을 보여주고,
특정 부서를 선택하면 해당 부서 직원만 보여줘.
```

{% endstep %}

{% step %}

#### 테스트

1. 여러 부서의 직원 데이터 추가
2. 드롭다운에서 부서 선택
3. 해당 부서 직원만 표시되는지 확인
   {% endstep %}
   {% endstepper %}

***

### Part 6: 디자인 다듬기 (선택)

기능이 완성되었으면 디자인을 개선합니다.

{% tabs %}
{% tab title="색상 변경" %}

```
전체 테마 색상을 파란색 계열로 바꿔줘.
- 주요 버튼: 진한 파란색 (#2563eb)
- 배경: 연한 회색 (#f8fafc)
- 테이블 헤더: 밝은 파란색 배경
```

{% endtab %}

{% tab title="레이아웃" %}

```
PC에서는 폼을 왼쪽(40%), 테이블을 오른쪽(60%)에 나란히 배치해줘.
모바일에서는 폼이 위, 테이블이 아래로 쌓이게 해줘.
```

{% endtab %}

{% tab title="카드 스타일" %}

```
폼과 테이블을 각각 카드 형태로 감싸줘.
- 흰색 배경
- 둥근 모서리 (8px)
- 살짝 그림자 효과
```

{% endtab %}
{% endtabs %}

***

### Part 7: 게시하기

앱이 완성되었으면 배포하여 다른 사람과 공유합니다.

{% stepper %}
{% step %}

#### 게시하기 버튼 클릭

에디터 상단 오른쪽의 **\[게시]** 버튼을 클릭합니다.
{% endstep %}

{% step %}

#### 배포 완료

배포가 완료되면 앱 URL이 생성됩니다:

```
https://your-app-name.waveon.me
```

이 URL을 팀원에게 공유하면 됩니다.
{% endstep %}

{% step %}

#### 접근 권한 설정 (선택)

앱 설정에서 접근 권한을 설정할 수 있습니다:

| 옵션               | 설명             |
| ---------------- | -------------- |
| **공개**           | 누구나 접근 가능      |
| **링크 공유**        | URL을 아는 사람만 접근 |
| **비공개**          | 로그인한 특정 사용자만   |
| {% endstep %}    |                |
| {% endstepper %} |                |

***

### Part 8: 함께 사용하기

앱을 단독으로 사용할수도 있지만, 업무 앱의 경우 함께 공동으로 이용 해야합니다. 그런 경우 워크스페이스를 이용하면 접근 권한 관리, 사용자 제어 등이 가능합니다.&#x20;

{% stepper %}
{% step %}

#### 워크스페이스 생성

웨이브온 접속 이후 왼쪽 상단 워크스페이스 스위처를 클릭하여 새로운 워크스페이스를 생성 합니다.
{% endstep %}

{% step %}

#### 앱 생성 또는 이전

**\[신규 생성]**

* 워크스페이스 스위처에서 워크스페이스로 진입한 이후 우측 상단 **앱 생성**을 클릭
* 일반 앱과 동일하게 생성하면 워크스페이스에서 앱 생성
* 이 앱은 워크스페이스 내 사용자들과 함께 공유

**\[앱 이전]**

* 프로젝트 메뉴에서 기존에 만든 앱의 더보기 (점 3개 아이콘) 를 클릭
* 이동 클릭
* 이동할 워크스페이스를 선택
* 앱 이동 완료
  {% endstep %}

{% step %}

#### 멤버 초대

설정메뉴에서 멤버를 클릭 후 워크스페이스를 함께 이용할 사용자를 초대합니다.
{% endstep %}

{% step %}

#### 멤버 승인

초대받은 사용자가 수락하면 워크스페이스를 공동으로 이용 할 수 있습니다.
{% endstep %}
{% endstepper %}

### 완료!

{% hint style="success" %}
**축하합니다!** 완전한 CRUD(생성, 조회, 수정, 삭제) 기능을 갖춘 직원 관리 앱을 만들었습니다.
{% endhint %}

***

### 전체 프롬프트 요약

| Part | 목적     | 핵심 프롬프트                |
| ---- | ------ | ---------------------- |
| 1    | 기본 구조  | "직원 관리 앱을 만들어줘..."     |
| 2    | 데이터 저장 | "데이터를 서버에 저장할 수 있게..." |
| 3    | 수정 기능  | "클릭하면 수정할 수 있게..."     |
| 4    | 삭제 기능  | "삭제 버튼을 추가하고 확인 팝업..." |
| 5    | 필터 기능  | "부서별로 필터링할 수 있게..."    |
| 6    | 디자인    | "색상을 파란색 계열로..."       |
| 7    | 배포     | 배포 버튼 클릭               |
| 8    | 워크스페이스 | 공동작업 진행                |

***

### 다음 단계

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>여러 페이지 만들기</strong></td><td>다중 페이지 앱 구성하기</td><td></td></tr><tr><td><strong>외부 API 연동</strong></td><td>Slack, Google Sheets 등 연동</td><td></td></tr><tr><td><strong>워크스페이스 활용</strong></td><td>팀원과 함께 앱 관리하기</td><td></td></tr><tr><td><strong>템플릿 둘러보기</strong></td><td>미리 만들어진 앱 활용</td><td></td></tr></tbody></table>

***

### 문제가 있나요?

<details>

<summary>데이터가 저장되지 않아요</summary>

"데이터를 서버에 저장할 수 있게 해줘"라고 다시 요청해보세요. AI가 API 연동 코드를 추가합니다.

</details>

<details>

<summary>수정 모달이 안 열려요</summary>

1. Visual Edit 모드로 테이블 행을 선택
2. "이 행을 클릭하면 수정 모달이 열리게 해줘"라고 요청

</details>

<details>

<summary>필터가 작동하지 않아요</summary>

드롭다운 값과 데이터의 부서명이 정확히 일치하는지 확인하세요.

```
필터 드롭다운의 옵션과 직원 데이터의 부서 필드 값이
정확히 일치하도록 수정해줘.
```

</details>


# 에디터 설명

에디터는 AI와 대화하며 React 기반 웹 앱을 만드는 Waveon의 핵심 도구입니다.

***

### 에디터 접근 방법

#### 새 앱 생성 시

1. [waveon.io](https://waveon.io) 메인 화면에서 프롬프트 입력
2. 자동으로 에디터가 열림

#### 기존 앱 편집 시

1. 대시보드에서 앱 선택
2. **\[편집]** 버튼 클릭

***

### 에디터 구조

#### 전체 레이아웃

```
┌─────────────────────────────────────────────────────────────┐
│                        Header                                │
├─────────────┬─────────────────┬─────────────────────────────┤
│             │                 │                             │
│    Chat     │      Code       │         Preview             │
│   Panel     │     Panel       │          Panel              │
│             │   (Pro 전용)     │                             │
│             │                 │                             │
├─────────────┴─────────────────┴─────────────────────────────┤
│                    Right Panel (Visual Edit 시)              │
└─────────────────────────────────────────────────────────────┘
```

***

### 구성 요소

#### 1. Header

| 요소               | 설명            |
| ---------------- | ------------- |
| **앱 이름**         | 클릭하여 변경 가능    |
| **PC/Mobile 토글** | Preview 뷰 전환  |
| **Code 토글**      | Code 패널 표시/숨김 |
| **Tips 버튼**      | 에디터 사용 팁 모달   |
| **배포 버튼**        | 앱 배포          |

#### 2. Chat Panel

AI와 대화하는 공간입니다.

* 프롬프트 입력
* 대화 내역 확인
* 파일 업로드
* Visual Edit 토글

| 기능                 | 설명              |
| ------------------ | --------------- |
| **대화 내역**          | 이전 요청과 AI 응답 확인 |
| **프롬프트 입력**        | 새로운 요청 입력       |
| **파일 업로드**         | 이미지, PDF 등 첨부   |
| **Visual Edit 토글** | 요소 선택 모드 활성화    |
| **현재 페이지 표시**      | 작업 중인 페이지 경로    |

**프롬프트 입력 팁**

{% hint style="info" %}
**구체적으로 설명할수록** AI가 원하는 결과를 만들어냅니다.
{% endhint %}

```
❌ 나쁜 예: "폼 만들어줘"

✅ 좋은 예: "직원 등록 폼을 만들어줘.
이름(필수), 이메일(필수), 부서(드롭다운), 입사일(날짜선택) 필드가 필요해.
제출 버튼은 파란색으로."
```

#### 3. Code Panel

생성된 React 코드를 확인하고 편집합니다.

* 파일 트리
* 코드 에디터
* 파일 관리 (생성, 삭제, 이동)

→ Code Panel 상세

{% hint style="warning" %}
Code 패널 편집은 **Pro 플랜 이상**에서 가능합니다.
{% endhint %}

#### 4. Preview Panel

실시간으로 앱을 미리봅니다.

* 실시간 렌더링
* PC/Mobile 뷰 전환
* 상호작용 테스트
* Visual Edit 요소 선택

→ Preview Panel 상세

#### 5. Right Panel

Visual Edit 모드에서 선택한 요소의 정보를 표시합니다.

→ Visual Edit Mode 상세

***

### 기본 워크플로우

```
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  프롬프트    │ ──→ │  AI 코드    │ ──→ │  Preview    │
│    입력     │     │    생성     │     │    확인     │
└─────────────┘     └─────────────┘     └─────────────┘
       ↑                                       │
       │                                       │
       └──────────── 수정 요청 ←───────────────┘
```

1. **Chat 패널**에서 원하는 기능 설명
2. AI가 코드를 생성하면 **Preview 패널**에서 확인
3. 수정이 필요하면 **추가 요청** 또는 **Visual Edit**으로 특정 요소 선택
4. 만족하면 **배포**

***

### 플랜별 기능

| 기능          | Free      | Pro |
| ----------- | --------- | --- |
| Chat 패널     | ✅         | ✅   |
| Preview 패널  | ✅         | ✅   |
| Visual Edit | ✅         | ✅   |
| 파일 업로드      | ✅         | ✅   |
| Code 패널 보기  | ✅ (읽기 전용) | ✅   |
| Code 패널 편집  | ❌         | ✅   |
| 파일 생성/삭제    | ❌         | ✅   |

***

### 다음 단계

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Chat Panel</strong></td><td>AI와 효과적으로 대화하기</td><td></td></tr><tr><td><strong>Visual Edit Mode</strong></td><td>요소 선택하여 수정하기</td><td></td></tr><tr><td><strong>Code Panel</strong></td><td>코드 직접 편집하기</td><td></td></tr></tbody></table>


# AI 채팅 패널

AI 채팅은 AI와 대화하며 앱을 만드는 핵심 공간입니다.

***

### 구성 요소

| 요소           | 설명                    |
| ------------ | --------------------- |
| **대화 내역**    | 이전 요청과 AI 응답          |
| **프롬프트 입력창** | 새로운 요청 입력             |
| **전송 버튼**    | 프롬프트 전송 (Enter 또는 클릭) |
| **+ 버튼**     | 파일 업로드 메뉴             |
| **🎯 버튼**    | Visual Edit 모드 토글     |
| **페이지 칩**    | 현재 작업 중인 페이지 경로       |

***

### 프롬프트 작성 가이드

#### 좋은 프롬프트의 특징

{% hint style="success" %}
**구체적**이고 **명확**할수록 원하는 결과를 얻습니다.
{% endhint %}

#### 예시 비교

{% tabs %}
{% tab title="❌ 나쁜 예" %}

```
폼 만들어줘
```

**문제점**: 어떤 폼인지, 어떤 필드가 필요한지 불명확
{% endtab %}

{% tab title="✅ 좋은 예" %}

```
직원 등록 폼을 만들어줘.

필드:
- 이름 (필수, 텍스트)
- 이메일 (필수, 이메일 형식 검증)
- 부서 (드롭다운: 개발팀, 마케팅팀, 영업팀)
- 입사일 (날짜 선택)

제출 버튼은 파란색으로,
필수 필드 미입력 시 에러 메시지 표시
```

**장점**: 필드, 타입, 검증, 디자인까지 명확
{% endtab %}
{% endtabs %}

#### 프롬프트 구조 템플릿

```
[무엇을] 만들어줘/수정해줘/추가해줘

필요한 기능:
- 기능 1
- 기능 2
- 기능 3

디자인/스타일:
- 색상, 레이아웃 등

동작:
- 버튼 클릭 시 어떤 일이 일어나는지
- 에러 처리 방법
```

***

### 대화 내역

#### 메시지 유형

| 유형        | 설명          |
| --------- | ----------- |
| User      | 내가 보낸 요청    |
| Assistant | AI 응답       |
| Tool Call | 파일 생성/수정 작업 |
| Error     | 오류 발생       |
| Aborted   | 중단된 요청      |

#### Tool Call 메시지

AI가 파일을 수정할 때 표시됩니다.

* **파일 경로**: 수정된 파일 위치
* **수정 라인**: 변경된 코드 라인 수
* **미리보기**: 변경된 코드 일부

#### 후속 제안 (Follow-up Suggestions)

AI 응답 후 관련 후속 작업을 제안합니다.

```
🔹 "테이블에 페이지네이션 추가"
🔹 "검색 필터 기능 추가"
🔹 "모바일 반응형 적용"
```

클릭하면 해당 프롬프트가 자동 입력됩니다.

***

### 파일 업로드

#### 업로드 방법

1. **+ 버튼** 클릭 → 파일 선택
2. **드래그 앤 드롭**: 파일을 입력창에 드롭
3. **붙여넣기**: 클립보드 이미지 Ctrl+V

#### 지원 파일 형식

| 유형      | 형식                               |
| ------- | -------------------------------- |
| **이미지** | PNG, JPG, GIF, WebP              |
| **문서**  | PDF, Word (.docx), Excel (.xlsx) |
| **텍스트** | TXT, CSV                         |

#### 활용 예시

{% tabs %}
{% tab title="디자인 참고" %}

```
[이미지 업로드]
이 디자인을 참고해서 비슷한 스타일로 만들어줘.
색상과 레이아웃을 최대한 따라해줘.
```

{% endtab %}

{% tab title="데이터 구조 참고" %}

```
[Excel 업로드]
이 엑셀 파일의 컬럼 구조를 기반으로
입력 폼과 테이블을 만들어줘.
```

{% endtab %}

{% tab title="기획서 참고" %}

```
[PDF 업로드]
이 기획서에 있는 화면을 구현해줘.
2페이지의 대시보드 화면부터 시작하자.
```

{% endtab %}
{% endtabs %}

***

### Visual Edit 토글

🎯 버튼을 클릭하면 Visual Edit 모드가 활성화됩니다.

#### 활성화 시 변화

* Preview에서 요소 클릭 가능
* 선택한 요소 정보가 Chat에 표시
* 해당 요소에 대한 수정 요청 가능

#### 선택된 요소 칩

```
🎯 <button> | src/App.js:42
```

* **태그명**: 선택된 HTML 요소
* **파일 위치**: 해당 코드의 파일과 라인 번호

→ Visual Edit Mode 상세

***

### 페이지 칩

현재 Preview에서 보고 있는 페이지 경로를 표시합니다.

```
📄 /employees
```

다중 페이지 앱에서 AI가 어떤 페이지를 수정해야 하는지 알 수 있습니다.

***

### 생성 중단

AI가 응답을 생성하는 중에 **Stop 버튼**을 클릭하면 중단됩니다.

* 생성 중이던 내용은 일부만 적용될 수 있음
* 중단 후 새로운 요청 가능

***

### 팁

{% hint style="info" %}
**프롬프트 히스토리**

대화 내역을 스크롤하면 이전 요청을 확인할 수 있습니다. 비슷한 요청을 다시 할 때 참고하세요.
{% endhint %}


# 코드 패널

Code 패널에서는 AI가 생성한 React 코드를 확인하고 직접 편집할 수 있습니다.

{% hint style="warning" %}
**Pro 플랜 이상**에서 코드 편집이 가능합니다. Free 플랜에서는 읽기 전용입니다.
{% endhint %}

***

### Code 패널 열기

1. Header의 **Code 토글** 버튼 클릭
2. 또는 키보드 단축키 사용

***

### 구성 요소

#### 1. 파일 트리

프로젝트의 모든 파일과 폴더를 표시합니다.

```
/
├── src/
│   ├── App.js           # 메인 컴포넌트
│   ├── App.css          # 전역 스타일
│   └── components/      # 컴포넌트 폴더
│       ├── Header.js
│       ├── Form.js
│       └── Table.js
├── public/
│   └── index.html
└── package.json
```

#### 2. 코드 에디터

선택한 파일의 내용을 표시하고 편집합니다.

* **문법 강조**: JavaScript, JSX, CSS 지원
* **라인 번호**: 코드 위치 확인
* **자동 완성**: 기본 코드 완성 지원

#### 3. 파일 관리 메뉴

파일 트리에서 우클릭하면 메뉴가 표시됩니다.

| 메뉴         | 설명          |
| ---------- | ----------- |
| **새 파일**   | 파일 생성       |
| **새 폴더**   | 폴더 생성       |
| **이름 변경**  | 파일/폴더 이름 변경 |
| **삭제**     | 파일/폴더 삭제    |
| **파일 업로드** | 로컬 파일 업로드   |

***

### 주요 파일 설명

#### App.js

앱의 메인 컴포넌트입니다. 모든 UI가 여기서 시작됩니다.

```jsx
import React from 'react';
import './App.css';

function App() {
  return (
    <div className="App">
      {/* 앱 내용 */}
    </div>
  );
}

export default App;
```

#### App.css

전역 스타일을 정의합니다.

```css
.App {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  padding: 20px;
}

.button-primary {
  background-color: #2563eb;
  color: white;
  /* ... */
}
```

#### package.json

프로젝트 의존성을 정의합니다. AI가 자동으로 관리합니다.

```json
{
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  }
}
```

***

### 코드 편집 (Pro)

#### 직접 편집

1. 파일 트리에서 파일 선택
2. 에디터에서 코드 수정
3. 변경 사항이 자동으로 Preview에 반영

#### 주의사항

{% hint style="warning" %}
직접 편집한 코드는 AI가 이후 요청에서 덮어쓸 수 있습니다. 중요한 변경은 AI에게 명시적으로 알려주세요.
{% endhint %}

```
"App.js의 Header 컴포넌트는 수정하지 말고,
Table 컴포넌트만 수정해줘"
```

***

### 파일 생성

#### 새 파일 만들기

1. 파일 트리에서 **우클릭** → **새 파일**
2. 파일 이름 입력 (예: `components/Modal.js`)
3. Enter

#### 새 폴더 만들기

1. 파일 트리에서 **우클릭** → **새 폴더**
2. 폴더 이름 입력
3. Enter

***

### 파일 업로드

로컬 파일을 프로젝트에 추가합니다.

#### 지원 파일

* 이미지: PNG, JPG, GIF, SVG
* 폰트: TTF, WOFF, WOFF2
* 기타: JSON, TXT

#### 업로드 방법

1. 파일 트리에서 **우클릭** → **파일 업로드**
2. 파일 선택
3. 업로드 완료 후 코드에서 참조

```jsx
// 업로드한 이미지 사용
<img src="/images/logo.png" alt="Logo" />
```

***

### Read-only 모드 (Free)

Free 플랜에서는 Code 패널이 읽기 전용입니다.

#### 할 수 있는 것

* ✅ 코드 보기
* ✅ 파일 구조 확인
* ✅ 코드 복사

#### 할 수 없는 것

* ❌ 코드 편집
* ❌ 파일 생성/삭제
* ❌ 파일 업로드

→ Pro 플랜 업그레이드

***

### Preview 패널과 연동

Code에서 수정한 내용은 **실시간으로** Preview에 반영됩니다.

#### 에러 발생 시

코드에 문법 오류가 있으면 Preview에 에러가 표시됩니다.

```
Error: Unexpected token
  at App.js:15:8
```

* 에러 메시지에서 파일과 라인 번호 확인
* 해당 위치의 코드 수정

***

### 팁

{% hint style="info" %}
**AI에게 코드 수정 요청**

직접 편집보다 AI에게 요청하는 것이 더 안전합니다. AI는 전체 컨텍스트를 이해하고 수정합니다.

```
"App.js 42번 라인의 버튼 색상을 빨간색으로 바꿔줘"
```

{% endhint %}

{% hint style="info" %}
**파일 구조 참고**

새로운 기능을 요청할 때 기존 파일 구조를 참고하면 일관성 있는 코드가 생성됩니다.
{% endhint %}


# 프리뷰 패널

Preview 패널에서는 만들고 있는 앱을 실시간으로 확인하고 테스트할 수 있습니다.

***

### 주요 특징

#### 1. 실시간 렌더링

AI가 코드를 생성/수정하면 **즉시** Preview에 반영됩니다.

* 코드 변경 → 자동 새로고침
* 별도의 빌드 과정 없음
* 실제 앱과 동일한 동작

#### 2. 상호작용 가능

Preview에서 실제 앱처럼 동작합니다.

* 버튼 클릭
* 폼 입력
* 모달 열기/닫기
* 페이지 이동

#### 3. 반응형 확인

PC와 Mobile 뷰를 전환하여 반응형 디자인을 확인합니다.

***

### PC / Mobile 전환

Header의 토글 버튼으로 전환합니다.

| 모드         | 화면 크기    | 용도           |
| ---------- | -------- | ------------ |
| **PC**     | 전체 너비    | 데스크톱 레이아웃 확인 |
| **Mobile** | 375px 너비 | 모바일 레이아웃 확인  |

{% hint style="info" %}
Mobile 뷰에서 레이아웃이 깨지면 AI에게 반응형 수정을 요청하세요.

```
"모바일에서 레이아웃이 깨져.
작은 화면에서도 잘 보이게 반응형으로 수정해줘."
```

{% endhint %}

***

### Visual Edit 모드

Visual Edit 모드가 활성화되면 Preview에서 요소를 선택할 수 있습니다.

#### 활성화 방법

Chat 패널의 🎯 버튼 클릭

#### 선택 방법

1. Preview에서 수정할 요소 위에 마우스 오버
2. 요소가 하이라이트됨
3. 클릭하여 선택

#### 선택 후

* Chat에 선택된 요소 정보 표시
* Right 패널에 상세 정보 표시
* 해당 요소에 대한 수정 요청 가능

→ Visual Edit Mode 상세

***

### 데이터 테스트

Preview에서 입력한 데이터는 **임시 데이터**입니다.

#### 임시 데이터 특징

* 새로고침하면 사라짐 (데이터 저장 기능 추가 전)
* 에디터 내에서만 유지
* 테스트 목적으로 사용

#### 실제 데이터 저장

데이터를 영구 저장하려면 AI에게 요청하세요.

```
"데이터를 서버에 저장할 수 있게 해줘"
```

저장 기능 추가 후에는:

* 입력한 데이터가 서버에 저장
* 새로고침해도 유지
* 배포 후에도 동일하게 동작

***

### 페이지 네비게이션

다중 페이지 앱에서는 Preview 내에서 페이지를 이동할 수 있습니다.

#### 페이지 이동 방법

* 앱 내 링크/버튼 클릭
* URL 직접 입력 (Header의 URL 입력창)

#### 현재 페이지 확인

Chat 패널 하단의 페이지 칩에서 현재 경로를 확인합니다.

```
📄 /employees/detail
```

***

### 로딩 상태

AI가 코드를 생성하는 동안 로딩 오버레이가 표시됩니다.

* 스피너 애니메이션
* "Loading preview\..." 메시지
* 코드 생성 완료 시 자동으로 사라짐

***

### 에러 표시

코드에 오류가 있으면 Preview에 에러 메시지가 표시됩니다.

#### 에러 메시지 예시

```
Error: Cannot read property 'map' of undefined
  at EmployeeTable (src/components/EmployeeTable.js:15:23)
```

#### 에러 해결 방법

1. **AI에게 요청**: "Preview에서 에러가 나. 수정해줘"
2. **직접 수정** (Pro): Code 패널에서 해당 라인 수정

{% hint style="info" %}
에러 메시지를 그대로 복사해서 AI에게 전달하면 더 정확한 수정이 가능합니다.
{% endhint %}

***

### 새로고침

Preview를 수동으로 새로고침하려면:

* Header의 **새로고침 버튼** 클릭
* 키보드 단축키 사용

#### 새로고침이 필요한 경우

* Preview가 멈춘 것 같을 때
* 상태가 꼬인 것 같을 때
* 초기 상태로 돌아가고 싶을 때

***

### Preview 확대/축소

Code 패널이 열려 있을 때 Preview 패널 크기를 조절할 수 있습니다.

* **접기 버튼** (◀): Preview 숨김
* **펼치기 버튼** (▶): Preview 표시

***

### 팁

{% hint style="info" %}
**실제 사용 시나리오로 테스트**

Preview에서 실제 사용자처럼 앱을 사용해보세요. 예상치 못한 문제를 미리 발견할 수 있습니다.
{% endhint %}

{% hint style="info" %}
**Mobile 뷰 체크**

배포 전에 반드시 Mobile 뷰에서 레이아웃을 확인하세요. 실제 사용자의 절반 이상이 모바일로 접속합니다.
{% endhint %}


# 비주얼 편집 모드

Visual Edit 모드는 화면에서 요소를 직접 선택하여 AI에게 수정을 요청하는 기능입니다.

***

### 왜 사용하나요?

#### 문제 상황

```
"버튼 색상을 바꿔줘"
```

→ AI: "어떤 버튼인가요? 여러 개의 버튼이 있습니다."

#### Visual Edit로 해결

1. Visual Edit 모드 활성화
2. 수정할 버튼 클릭
3. "이 버튼 색상을 빨간색으로 바꿔줘"

→ AI가 정확히 어떤 버튼인지 알고 수정

***

### 사용 방법

#### Step 1: Visual Edit 모드 활성화

Chat 패널 하단의 🎯 버튼을 클릭합니다.

버튼이 파란색으로 변하면 활성화된 상태입니다.

#### Step 2: 요소 선택

Preview에서 수정할 요소를 클릭합니다.

* 마우스를 올리면 요소가 하이라이트됨
* 클릭하면 선택됨

#### Step 3: 선택 정보 확인

선택된 요소의 정보가 Chat 패널에 표시됩니다.

```
🎯 <button> | src/App.js:42
```

| 정보        | 설명                                |
| --------- | --------------------------------- |
| **태그명**   | HTML 요소 종류 (button, input, div 등) |
| **파일 경로** | 해당 코드가 있는 파일                      |
| **라인 번호** | 코드의 정확한 위치                        |

#### Step 4: 수정 요청

선택된 요소에 대한 수정을 요청합니다.

```
이 버튼의 텍스트를 "저장하기"로 바꾸고 색상은 초록색으로 해줘
```

AI는 선택된 요소의 정확한 위치를 알고 있으므로 해당 부분만 수정합니다.

***

### Right 패널

요소를 선택하면 오른쪽에 상세 정보 패널이 열립니다.

#### 표시 정보

| 항목         | 설명                                 |
| ---------- | ---------------------------------- |
| **태그명**    | `<button>`, `<input>`, `<table>` 등 |
| **파일 위치**  | `src/components/Form.js:28`        |
| **ID**     | 요소의 id 속성 (있는 경우)                  |
| **Class**  | 요소의 class 속성                       |
| **현재 스타일** | 적용된 CSS 스타일                        |

#### 닫기

Right 패널의 X 버튼 또는 다른 곳 클릭으로 닫습니다.

***

### 선택 해제

#### 방법 1: X 버튼

Chat 패널의 요소 칩에서 X 버튼 클릭

```
🎯 <button> | src/App.js:42  [X]
```

#### 방법 2: 빈 영역 클릭

Preview에서 요소가 아닌 빈 영역 클릭

#### 방법 3: 모드 비활성화

🎯 버튼을 다시 클릭하여 Visual Edit 모드 비활성화

***

### 활용 예시

#### 특정 버튼 수정

```
1. 버튼 선택
2. "이 버튼을 더 크게 만들고, 아이콘을 추가해줘"
```

#### 테이블 열 추가

```
1. 테이블 선택
2. "이 테이블에 '상태' 열을 추가해줘"
```

#### 입력 필드 수정

```
1. 입력 필드 선택
2. "이 입력 필드에 placeholder를 '이메일을 입력하세요'로 해줘"
```

#### 레이아웃 수정

```
1. 컨테이너/div 선택
2. "이 영역의 배경색을 연한 회색으로 바꾸고 패딩을 추가해줘"
```

#### 모달 수정

```
1. 모달 내부 요소 선택
2. "이 모달의 너비를 더 넓게 하고 제목을 '직원 정보 수정'으로 바꿔줘"
```

***

### 선택 팁

#### 중첩된 요소

요소가 중첩되어 있을 때는 원하는 요소가 선택될 때까지 클릭 위치를 조정합니다.

{% hint style="info" %}
더 구체적인 위치를 클릭하면 더 내부의 요소가 선택됩니다.

* 버튼 가장자리 클릭 → 버튼 자체 선택
* 버튼 텍스트 클릭 → 텍스트 span 선택
  {% endhint %}

#### 보이지 않는 요소

숨겨진 요소(모달, 드롭다운 등)는 먼저 표시 상태로 만든 후 선택합니다.

1. 모달을 여는 버튼 클릭 → 모달 열림
2. Visual Edit 모드에서 모달 내부 요소 선택

#### 동적 요소

리스트 항목처럼 반복되는 요소는 하나를 선택하면 해당 컴포넌트 전체에 적용됩니다.

***

### 제한사항

#### 선택 불가능한 경우

* 아직 렌더링되지 않은 요소
* CSS로 완전히 숨겨진 요소 (`display: none`)
* iframe 내부 요소

#### 수정 불가능한 경우

* 외부 라이브러리의 내부 구조
* package.json에 정의된 의존성

***

### Visual Edit vs 프롬프트만 사용

| 상황                 | 권장 방법       |
| ------------------ | ----------- |
| 특정 요소 1개 수정        | Visual Edit |
| 여러 요소 일괄 수정        | 프롬프트        |
| 새 기능 추가            | 프롬프트        |
| 전체 디자인 변경          | 프롬프트        |
| "이 버튼"처럼 지칭하고 싶을 때 | Visual Edit |

***

### 팁

{% hint style="success" %}
**Visual Edit + 구체적 설명 조합**

요소를 선택한 후 구체적으로 설명하면 최상의 결과를 얻습니다.

```
[버튼 선택 후]
"이 버튼을:
- 너비 100%로
- 높이 48px로
- 배경색 #2563eb로
- 텍스트 '저장하기'로
- 호버 시 약간 어둡게"
```

{% endhint %}

{% hint style="info" %}
**빠른 선택 해제**

실수로 잘못된 요소를 선택했다면 요소 칩의 X 버튼으로 빠르게 해제할 수 있습니다.
{% endhint %}


# 파일 업로드

Chat 패널에서 파일을 업로드하여 AI에게 참고 자료로 제공할 수 있습니다.

***

### 지원 파일 형식

#### 이미지

| 형식   | 확장자         | 용도           |
| ---- | ----------- | ------------ |
| PNG  | .png        | 스크린샷, 디자인 시안 |
| JPEG | .jpg, .jpeg | 사진, 이미지      |
| GIF  | .gif        | 애니메이션 참고     |
| WebP | .webp       | 웹 최적화 이미지    |

#### 문서

| 형식    | 확장자   | 용도           |
| ----- | ----- | ------------ |
| PDF   | .pdf  | 기획서, 디자인 가이드 |
| Word  | .docx | 요구사항 문서      |
| Excel | .xlsx | 데이터 구조, 목록   |
| CSV   | .csv  | 데이터 샘플       |
| Text  | .txt  | 텍스트 내용       |

***

### 업로드 방법

#### 방법 1: + 버튼

1. Chat 입력창 왼쪽의 **+** 버튼 클릭
2. **"이미지/파일 추가"** 선택
3. 파일 선택

#### 방법 2: 드래그 앤 드롭

파일을 Chat 입력창 영역으로 드래그합니다.

#### 방법 3: 붙여넣기

클립보드에 복사된 이미지를 **Ctrl+V** (Mac: Cmd+V)로 붙여넣습니다.

* 스크린샷 캡처 후 바로 붙여넣기
* 다른 앱에서 이미지 복사 후 붙여넣기

***

### 업로드 후 표시

업로드된 파일은 입력창 위에 칩 형태로 표시됩니다.

#### 이미지 파일

* 썸네일 미리보기 표시
* X 버튼으로 제거 가능

#### 문서 파일

* 파일 아이콘 + 파일명 표시
* X 버튼으로 제거 가능

***

### 활용 예시

#### 디자인 참고

```
[디자인 이미지 업로드]

이 디자인을 참고해서 만들어줘.
- 색상은 최대한 비슷하게
- 레이아웃 구조 따라해줘
- 폰트는 기본 폰트 사용해도 돼
```

#### 데이터 구조 참고

```
[Excel 파일 업로드]

이 엑셀 파일의 컬럼 구조를 기반으로
입력 폼과 테이블을 만들어줘.
각 컬럼에 맞는 입력 타입을 사용해줘.
```

#### 기획서 기반 개발

```
[PDF 기획서 업로드]

이 기획서의 3페이지에 있는 화면을 구현해줘.
기능 명세는 4페이지를 참고해.
```

#### 기존 앱 참고

```
[스크린샷 업로드]

이 앱의 테이블 디자인을 참고해서
우리 직원 목록 테이블도 비슷하게 만들어줘.
```

#### 로고/이미지 추가

```
[로고 이미지 업로드]

이 로고를 헤더 왼쪽에 추가해줘.
크기는 높이 40px로 맞춰줘.
```

***

### 여러 파일 업로드

한 번에 여러 파일을 업로드할 수 있습니다.

1. * 버튼 → 파일 선택 시 여러 파일 선택 (Ctrl/Cmd 클릭)
2. 또는 여러 파일을 한 번에 드래그 앤 드롭

```
[이미지 3장 업로드]

이 3개 화면을 순서대로 만들어줘.
1번 이미지: 로그인 화면
2번 이미지: 대시보드
3번 이미지: 설정 화면
```

***

### 파일 크기 제한

| 파일 유형 | 최대 크기 |
| ----- | ----- |
| 이미지   | 10MB  |
| 문서    | 20MB  |

{% hint style="warning" %}
파일이 너무 크면 업로드가 실패할 수 있습니다. 이미지는 압축하거나, 문서는 필요한 페이지만 추출하세요.
{% endhint %}

***

### AI가 파일을 이해하는 방식

#### 이미지

* 시각적 요소 인식 (레이아웃, 색상, 컴포넌트)
* 텍스트 인식 (이미지 내 텍스트)
* 디자인 패턴 파악

#### 문서

* 텍스트 내용 추출
* 표/데이터 구조 인식
* 문서 구조 파악 (제목, 본문, 목록 등)

***

### 팁

{% hint style="success" %}
**구체적인 지시와 함께**

파일만 업로드하지 말고, 어떤 부분을 참고해야 하는지 구체적으로 설명하세요.

```
❌ [이미지 업로드] "이거 만들어줘"

✅ [이미지 업로드] "이 이미지의 카드 디자인을 참고해서
   직원 정보 카드를 만들어줘. 그림자 효과와 둥근 모서리 적용해줘."
```

{% endhint %}

{% hint style="info" %}
**고해상도 이미지 권장**

디자인 참고용 이미지는 고해상도일수록 AI가 더 정확하게 인식합니다.
{% endhint %}

{% hint style="info" %}
**필요한 부분만 캡처**

전체 화면보다 필요한 부분만 캡처하면 AI가 더 집중해서 분석합니다.
{% endhint %}


# 워크스페이스 기본

워크스페이스는 팀이 함께 앱을 관리하고 운영하는 공간입니다.

***

### 워크스페이스란?

#### 개념

**워크스페이스**는 앱과 데이터를 팀 단위로 관리하는 공간입니다.

```
Workspace (워크스페이스)
├── Apps (앱들)
│   ├── 직원 관리 앱
│   ├── 재고 관리 앱
│   └── 고객 관리 앱
├── Data (데이터)
└── Members (멤버)
    ├── Owner
    ├── Admin
    └── Members
```

#### 사용 예시

| 워크스페이스 이름 | 포함 앱              | 멤버       |
| --------- | ----------------- | -------- |
| ABC 회사    | 인사관리, 재고관리, CRM   | 전 직원     |
| 마케팅팀      | 캠페인 관리, 리드 수집     | 마케팅팀원    |
| 프로젝트 A    | 프로젝트 대시보드, 이슈 트래커 | 프로젝트 참여자 |

***

### 워크스페이스 생성

#### Step 1: 생성 페이지 이동

1. 대시보드 상단의 워크스페이스 드롭다운 클릭
2. **\[+ 새 워크스페이스]** 선택

#### Step 2: 정보 입력

| 필드          | 설명                    |
| ----------- | --------------------- |
| **이름**      | 워크스페이스 이름 (예: ABC 회사) |
| **설명** (선택) | 워크스페이스 용도 설명          |

#### Step 3: 생성 완료

**\[생성]** 버튼을 클릭하면 워크스페이스가 생성됩니다.

***

### 워크스페이스 구조

#### 사이드바

| 메뉴       | 설명           |
| -------- | ------------ |
| **앱**    | 워크스페이스의 앱 목록 |
| **데이터**  | 데이터 관리       |
| **프로젝트** | 프로젝트 목록      |
| **설정**   | 워크스페이스 설정    |

#### 메인 영역

선택한 앱이 실행되는 공간입니다.

***

### 앱 추가하기

#### 기존 앱 추가

1. 워크스페이스 앱 목록에서 **\[+ 앱 추가]** 클릭
2. 기존에 만든 앱 선택
3. **\[추가]** 클릭

#### 새 앱 만들기

1. **\[+ 새 앱 만들기]** 클릭
2. v3 에디터에서 앱 생성
3. 자동으로 워크스페이스에 추가됨

***

### 멤버 역할

#### 역할 종류

| 역할         | 권한                 |
| ---------- | ------------------ |
| **Owner**  | 모든 권한 + 워크스페이스 삭제  |
| **Admin**  | 앱 관리, 멤버 초대, 설정 변경 |
| **Member** | 앱 사용, 데이터 조회/입력    |

#### 역할별 상세 권한

| 권한        | Owner | Admin | Member |
| --------- | ----- | ----- | ------ |
| 앱 사용      | ✅     | ✅     | ✅      |
| 데이터 입력    | ✅     | ✅     | ✅      |
| 앱 편집      | ✅     | ✅     | ❌      |
| 앱 추가/삭제   | ✅     | ✅     | ❌      |
| 멤버 초대     | ✅     | ✅     | ❌      |
| 멤버 역할 변경  | ✅     | ✅     | ❌      |
| 설정 변경     | ✅     | ✅     | ❌      |
| 워크스페이스 삭제 | ✅     | ❌     | ❌      |

***

### 멤버 초대

#### Step 1: 초대 페이지

1. 워크스페이스 설정 → **멤버** 탭
2. **\[멤버 초대]** 클릭

#### Step 2: 초대 정보 입력

| 필드      | 설명              |
| ------- | --------------- |
| **이메일** | 초대할 사람의 이메일     |
| **역할**  | Admin 또는 Member |

#### Step 3: 초대 발송

**\[초대]** 버튼을 클릭하면 초대 이메일이 발송됩니다.

#### 초대 수락

초대받은 사람이 이메일의 링크를 클릭하면 워크스페이스에 참여합니다.

***

### 워크스페이스 전환

여러 워크스페이스에 참여하고 있다면 쉽게 전환할 수 있습니다.

1. 상단의 워크스페이스 드롭다운 클릭
2. 이동할 워크스페이스 선택

***

### 워크스페이스 vs 개인 대시보드

| 항목         | 개인 대시보드  | 워크스페이스 |
| ---------- | -------- | ------ |
| **용도**     | 개인 앱 관리  | 팀 협업   |
| **앱 공유**   | 링크 공유    | 자동 공유  |
| **데이터 공유** | 별도 설정 필요 | 자동 공유  |
| **멤버 관리**  | 없음       | 있음     |
| **권한 관리**  | 없음       | 역할 기반  |

***

### 다음 단계

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>앱 실행하기</strong></td><td>워크스페이스에서 앱 사용</td><td></td></tr><tr><td><strong>팀 협업</strong></td><td>멤버 관리와 권한 설정</td><td></td></tr><tr><td><strong>설정</strong></td><td>워크스페이스 설정 관리</td><td></td></tr></tbody></table>


# 앱 실행하기

워크스페이스에서 앱을 실행하고 실제 업무에 활용하는 방법입니다.

***

### 앱 실행하기

#### Step 1: 앱 선택

워크스페이스 사이드바에서 실행할 앱을 클릭합니다.

#### Step 2: 앱 사용

선택한 앱이 메인 영역에서 실행됩니다.

* **전체 화면**으로 앱 사용
* 에디터가 아닌 **실제 운영 환경**
* 입력한 데이터가 **실제로 저장**됨

***

### 에디터 vs 워크스페이스

| 항목        | 에디터 (v3)              | 워크스페이스    |
| --------- | --------------------- | --------- |
| **목적**    | 앱 개발/수정               | 앱 사용/운영   |
| **화면 구성** | Chat + Code + Preview | 앱 전체 화면   |
| **데이터**   | 개발용 데이터               | 실제 운영 데이터 |
| **접근 권한** | 앱 소유자/편집자             | 워크스페이스 멤버 |

***

### 앱 URL 구조

#### 워크스페이스 내 앱 URL

```
https://waveon.io/workspaces/{workspaceId}/apps/{appId}
```

#### 독립 앱 URL (배포된 앱)

```
https://{app-name}.waveon.io
```

***

### 데이터 저장

워크스페이스에서 입력한 데이터는 **실제 데이터베이스**에 저장됩니다.

#### 에디터 Preview와의 차이

| 환경          | 데이터 저장 위치      |
| ----------- | -------------- |
| 에디터 Preview | 개발용 (배포 전 테스트) |
| 워크스페이스 앱    | 운영용 (실제 데이터)   |
| 배포된 앱       | 운영용 (실제 데이터)   |

{% hint style="warning" %}
워크스페이스에서 입력한 데이터는 실제 데이터입니다. 테스트용 데이터를 입력할 때 주의하세요.
{% endhint %}

***

### 앱 편집하기

워크스페이스에서 앱을 수정하려면:

#### 방법 1: 편집 버튼

앱 실행 화면에서 **\[편집]** 버튼 클릭 (Admin 이상)

#### 방법 2: 사이드바 메뉴

1. 앱 이름 옆 **⋯** 버튼 클릭
2. **\[편집]** 선택

편집 버튼을 클릭하면 v3 에디터가 열립니다.

***

### 앱 공유

#### 워크스페이스 멤버에게

워크스페이스에 초대된 멤버는 자동으로 모든 앱에 접근할 수 있습니다.

→ 멤버 초대하기

#### 외부 사용자에게

앱을 배포하고 URL을 공유합니다.

1. 앱 편집 → **\[배포]**
2. 생성된 URL 공유

***

### 여러 앱 사용하기

#### 앱 간 전환

사이드바에서 다른 앱을 클릭하면 바로 전환됩니다.

* 현재 앱의 데이터는 저장됨
* 새 앱이 로드됨

#### 새 탭에서 열기

앱을 새 탭에서 열어 여러 앱을 동시에 사용할 수 있습니다.

1. 앱 이름 우클릭
2. **"새 탭에서 열기"** 선택

***

### 모바일에서 사용

워크스페이스 앱은 모바일 브라우저에서도 사용할 수 있습니다.

#### 접속 방법

1. 모바일 브라우저에서 워크스페이스 URL 접속
2. 로그인
3. 앱 선택 후 사용

#### 모바일 최적화

앱이 모바일에서 잘 보이려면 반응형으로 개발해야 합니다.

```
모바일에서도 잘 보이게 반응형으로 수정해줘.
작은 화면에서 테이블은 가로 스크롤이 되게 하고,
폼 필드는 세로로 쌓이게 해줘.
```

***

### 문제 해결

#### 앱이 로딩되지 않아요

1. 페이지 새로고침
2. 브라우저 캐시 삭제
3. 다른 브라우저에서 시도

#### 데이터가 저장되지 않아요

1. 네트워크 연결 확인
2. 필수 필드 입력 확인
3. 에디터에서 데이터 저장 기능 확인

#### 접근 권한이 없다고 나와요

1. 워크스페이스 멤버인지 확인
2. Admin에게 권한 요청

***

### 다음 단계

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>팀 협업</strong></td><td>멤버 관리와 권한 설정</td><td></td></tr><tr><td><strong>설정</strong></td><td>워크스페이스 설정 관리</td><td></td></tr></tbody></table>


# 워크스페이스 생성 및 기존앱 이동

앱을 만들다가 보면 공동작업이 필요하시거나 만든 앱을 회사, 부서, 팀 단위별로 공용으로 사용하셔야될 일이 있으시죠?

이러한요청을많은사용자님들께서 하셔서 저희 웨이브온에서 특별한 기능을 준비하였습니다

\
특별한 기능은 워크스페이스 라는 기능인데요\
\
워크스페이스란 회사단위로, 부서단위로, 팀단위로여러명의\
사용자들이 여러명 같이모여서 사용하는 공간이라고 보시면 됩니다.

### 1. 워크스페이스 생성

&#x20; \- 개인 워크스페이스를 클릭 후 "+워크스페이스 생성하기"를 클릭합니다

<figure><img src="/files/6yHd2opJMIqeg7viCT6g" alt=""><figcaption></figcaption></figure>

&#x20; \- 회사용, 부서용, 팀용 으로 워크스페이스 생성

#### &#x20;     ![](/files/Y0aMV5lDcVg1hOkmMr0v)

\
&#x20; \- 생성 후 워크스페이스 콤보박스를 클릭하여 제대로 생성되었나 확인 (안보일 시 F5를 눌러서 새로고침)

#### &#x20;    ![](/files/aqG415SsB4cAT2c6pVjr)

### 2. 기존 개인 프로젝트를 워크스페이스 공간으로 이동

&#x20; \- 콤보박스를 다시 눌러서 개인 워크스페이스로 이동

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

\
&#x20; \- 아래의 프로젝트를 클릭, 현재 사용하거나 작업하는 프로젝트의 가장 오른쪽을 클릭

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

&#x20; \- 4번째 칸의 "이동" 클릭 후 방금 생성한 워크스페이스를 선택 후 "이동" 버튼 클릭

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

#### 3. 생성한  워크스페이스로 이동 후 사용 멤버 추가 진행

&#x20; \- 콤보박스 안에서 생성한 워크스페이스의 톱니바퀴를 클릭

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

&#x20; \- 설정 화면에서 "멤버"를 클릭

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

&#x20; \- 해당 워크스페이스를 공유하고 싶은 인원에게 이메일 발송

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

&#x20; \- 메일 수신 후 초대 수락을 하면 기존 웨이브온 가입자는 즉시 워크스페이스에 가입\
&#x20;    웨이브온 미가입자는 가입 완료 후 워크스페이스에 가입

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


# 앱 만들기 개요

Waveon에서 다양한 앱을 만드는 방법을 알아봅니다.

***

### 이 섹션에서 다루는 내용

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Multi-page Apps</strong></td><td>여러 페이지로 구성된 앱 만들기</td><td></td></tr><tr><td><strong>Forms &#x26; Inputs</strong></td><td>입력 폼 만들기와 유효성 검사</td><td></td></tr><tr><td><strong>Tables &#x26; Lists</strong></td><td>데이터 테이블과 목록 표시</td><td></td></tr><tr><td><strong>Modals &#x26; Popups</strong></td><td>모달, 팝업, 알림 만들기</td><td></td></tr><tr><td><strong>Styling &#x26; Design</strong></td><td>디자인과 스타일링 적용</td><td></td></tr></tbody></table>

***

### 앱 개발 기본 원칙

#### 1. 작게 시작하기

한 번에 모든 기능을 요청하지 말고, 기본 기능부터 시작합니다.

```
❌ 나쁜 예:
"직원 관리, 재고 관리, 고객 관리, 대시보드, 리포트가 있는
종합 관리 시스템을 만들어줘"

✅ 좋은 예:
"직원 목록을 보여주는 테이블을 만들어줘"
→ (완성 후) "직원 추가 폼을 추가해줘"
→ (완성 후) "수정/삭제 기능을 추가해줘"
```

#### 2. 점진적으로 기능 추가

기본 기능이 동작하면 하나씩 기능을 추가합니다.

```
1단계: 기본 UI
2단계: 데이터 저장
3단계: 검색/필터
4단계: 수정/삭제
5단계: 디자인 개선
```

#### 3. 자주 테스트하기

각 단계마다 Preview에서 테스트합니다.

* 의도한 대로 동작하는지 확인
* 에러가 없는지 확인
* 사용성에 문제가 없는지 확인

***

### 자주 만드는 앱 유형

#### 관리 시스템

* 직원 관리
* 재고 관리
* 고객 관리 (CRM)
* 주문 관리

→ 핵심: CRUD(생성, 조회, 수정, 삭제) + 검색/필터

#### 대시보드

* 매출 대시보드
* KPI 모니터링
* 프로젝트 현황

→ 핵심: 데이터 시각화 + 요약 정보

#### 입력 폼

* 신청서
* 설문조사
* 예약 폼

→ 핵심: 폼 유효성 검사 + 제출 처리

#### 목록/카탈로그

* 상품 목록
* 포트폴리오
* 갤러리

→ 핵심: 카드 레이아웃 + 필터/정렬

***

### 앱 구조 설계 팁

#### 단일 페이지 앱

간단한 앱은 하나의 페이지로 충분합니다.

```
/ (메인)
├── 입력 폼
├── 데이터 테이블
└── 필터/검색
```

#### 다중 페이지 앱

복잡한 앱은 여러 페이지로 나눕니다.

```
/                   → 대시보드 (요약)
/employees          → 직원 목록
/employees/:id      → 직원 상세
/employees/new      → 직원 등록
/settings           → 설정
```

→ Multi-page Apps 상세

***

### 프롬프트 작성 팁

#### 명확한 요구사항

```
직원 관리 테이블을 만들어줘.

컬럼:
- 이름 (텍스트)
- 부서 (텍스트)
- 이메일 (텍스트)
- 입사일 (날짜)
- 상태 (재직중/휴직/퇴사)

기능:
- 행 클릭 시 상세 모달
- 상태별 필터 드롭다운
- 이름 검색
```

#### 디자인 요구사항

```
디자인 요구사항:
- 전체 배경: 연한 회색 (#f5f5f5)
- 카드 배경: 흰색, 둥근 모서리 (8px)
- 주요 버튼: 파란색 (#2563eb)
- 테이블 헤더: 회색 배경
```

#### 동작 요구사항

```
삭제 버튼 클릭 시:
1. "정말 삭제하시겠습니까?" 확인 팝업
2. 확인 클릭 → 데이터 삭제 → 테이블 새로고침
3. 취소 클릭 → 팝업만 닫기
```

***

### 다음 단계

기본 앱 만들기에 익숙해졌다면 다음 가이드를 참고하세요:


# 데이터 다루기 개요

Waveon에서 데이터를 저장하고 관리하는 방법입니다.

***

### 이 섹션에서 다루는 내용

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Data Storage Basics</strong></td><td>데이터 저장 기본 개념</td><td></td></tr><tr><td><strong>CRUD Operations</strong></td><td>생성, 조회, 수정, 삭제</td><td></td></tr><tr><td><strong>Filtering &#x26; Sorting</strong></td><td>데이터 검색, 필터, 정렬</td><td></td></tr></tbody></table>

***

### 데이터 저장 방식

#### 기본 (메모리 저장)

AI가 처음 앱을 생성하면 데이터는 **메모리에만** 저장됩니다.

* 새로고침하면 데이터 사라짐
* 테스트용으로만 사용

#### 서버 저장

데이터를 영구 저장하려면 AI에게 요청합니다.

```
데이터를 서버에 저장할 수 있게 해줘
```

저장 기능 추가 후:

* 새로고침해도 데이터 유지
* 배포 후에도 동일하게 동작
* Waveon 클라우드 DB에 저장

***

### 데이터 저장 요청 예시

#### 기본 저장

```
직원 데이터를 저장할 수 있게 해줘.
폼 제출 시 데이터베이스에 저장하고,
테이블에서 저장된 데이터를 불러와서 보여줘.
```

#### 저장 + 수정 + 삭제

```
데이터를 저장, 수정, 삭제할 수 있게 해줘.

- 폼 제출 → 새 데이터 저장
- 테이블 행 클릭 → 수정 모달
- 삭제 버튼 → 확인 후 삭제
```

#### 특정 조건 조회

```
저장된 직원 중에서 개발팀 직원만 조회해서 보여줘.
부서 필터를 선택하면 해당 부서만 표시되게.
```

***

### 데이터 구조

AI가 자동으로 데이터 구조를 생성합니다.

#### 예시: 직원 데이터

폼 필드 기준으로 데이터 구조가 결정됩니다.

```javascript
// 폼 필드
- 이름 (텍스트)
- 부서 (드롭다운)
- 이메일 (이메일)
- 입사일 (날짜)

// 생성되는 데이터 구조
{
  id: "자동 생성",
  name: "홍길동",
  department: "개발팀",
  email: "hong@company.com",
  joinDate: "2024-01-15",
  createdAt: "자동 생성"
}
```

***

### 에디터 vs 배포 환경 데이터

#### 분리된 환경

| 환경          | 데이터 위치 | 용도    |
| ----------- | ------ | ----- |
| 에디터 Preview | 개발 DB  | 테스트   |
| 배포된 앱       | 운영 DB  | 실제 사용 |

#### 주의사항

* 에디터에서 입력한 테스트 데이터는 배포 앱에 없음
* 배포 후 실제 데이터를 새로 입력해야 함

{% hint style="info" %}
**데이터 마이그레이션**

개발 데이터를 운영 환경으로 이동하려면 Admin에게 문의하세요.
{% endhint %}

***

### 외부 데이터 연동

#### REST API

외부 서비스의 API를 호출할 수 있습니다.

```
외부 API에서 상품 목록을 가져와서 테이블에 표시해줘.
API URL: https://api.example.com/products
```

→ REST API 연동

#### 파일 데이터

Excel, CSV 파일을 업로드하여 데이터를 가져올 수 있습니다.

```
[Excel 파일 업로드]
이 엑셀 파일의 데이터를 테이블에 표시하고,
수정할 수 있게 해줘.
```

***

### 데이터 관련 팁

#### 1. 명확한 필드 정의

```
직원 데이터 필드:
- id: 자동 생성 (수정 불가)
- name: 필수, 텍스트
- email: 필수, 이메일 형식
- department: 필수, 드롭다운 (개발팀/마케팅팀/영업팀)
- joinDate: 필수, 날짜
- status: 기본값 "재직중"
```

#### 2. 유효성 검사 추가

```
폼 제출 시 유효성 검사 추가해줘:
- 이름: 2글자 이상
- 이메일: 올바른 이메일 형식
- 입사일: 오늘 이전 날짜만 가능
```

#### 3. 중복 데이터 방지

```
이메일이 중복되면 저장하지 않고
"이미 등록된 이메일입니다" 에러를 보여줘.
```

***

### 다음 단계


# 프롬프트 예시 모음

자주 사용하는 프롬프트 예시 모음입니다. 복사하여 사용하세요.

***

### 앱 생성

#### 직원 관리 앱

```
직원 관리 앱을 만들어줘.

필요한 기능:
1. 직원 추가 폼 (이름, 부서, 이메일, 입사일)
2. 직원 목록 테이블
3. 검색 기능
4. 부서별 필터

디자인은 심플하고 깔끔하게 해줘.
```

#### 재고 관리 앱

```
재고 관리 시스템을 만들어줘.

필요한 기능:
1. 상품 등록 폼 (상품명, 카테고리, 수량, 단가, 최소 재고)
2. 재고 현황 테이블
3. 카테고리별 필터
4. 재고 부족 알림 (최소 재고 이하일 때 빨간색 표시)

디자인:
- 재고 부족 상품은 빨간색 배경
- 테이블에 총 재고 금액 합계 표시
```

#### 고객 관리 (CRM)

```
고객 관리 CRM을 만들어줘.

필요한 기능:
1. 고객 정보 입력 (회사명, 담당자명, 연락처, 이메일, 상태)
2. 고객 목록 (카드 형태)
3. 상태별 필터 (잠재/미팅/제안/협상/계약)
4. 상담 메모 기록

상태에 따라 카드 테두리 색상 다르게:
- 잠재: 회색
- 미팅: 파랑
- 제안: 노랑
- 협상: 주황
- 계약: 초록
```

#### 예약 시스템

```
회의실 예약 시스템을 만들어줘.

필요한 기능:
1. 캘린더 뷰로 예약 현황 표시
2. 예약 폼 (회의실, 날짜, 시작시간, 종료시간, 예약자, 목적)
3. 내 예약 목록
4. 예약 취소 기능

제약 조건:
- 같은 회의실 같은 시간 중복 예약 불가
- 과거 날짜 예약 불가
```

***

### 데이터 관련

#### 데이터 저장 추가

```
데이터를 서버에 저장할 수 있게 해줘.
폼을 제출하면 데이터베이스에 저장되고,
테이블에서 저장된 데이터를 불러와서 보여줘.
```

#### CRUD 전체 추가

```
데이터를 저장, 수정, 삭제할 수 있게 해줘.

- 폼 제출 → 새 데이터 저장
- 테이블 행 클릭 → 수정 모달 띄우기
- 삭제 버튼 → "정말 삭제하시겠습니까?" 확인 후 삭제
```

#### 검색 기능

```
검색 기능을 추가해줘.
검색어를 입력하면 이름, 이메일, 부서에서 검색해서
일치하는 항목만 테이블에 표시해줘.
```

#### 필터 기능

```
필터 기능을 추가해줘.

필터 옵션:
- 부서: 전체, 개발팀, 마케팅팀, 영업팀, 인사팀
- 상태: 전체, 재직중, 휴직, 퇴사

여러 필터를 동시에 적용할 수 있게 해줘.
```

#### 정렬 기능

```
테이블 헤더를 클릭하면 정렬되게 해줘.
- 한 번 클릭: 오름차순
- 다시 클릭: 내림차순
- 현재 정렬 기준 헤더에 화살표 표시
```

#### 페이지네이션

```
테이블에 페이지네이션을 추가해줘.
- 한 페이지에 10개씩 표시
- 이전/다음 버튼
- 페이지 번호 표시
- 전체 개수 표시 (총 45건)
```

***

### UI 컴포넌트

#### 모달 추가

```
수정 모달을 추가해줘.

- 테이블 행 클릭 시 모달 열림
- 모달에 현재 데이터가 채워진 폼 표시
- 저장 버튼 → 데이터 수정 후 모달 닫기
- 취소 버튼 → 모달만 닫기
- 모달 바깥 클릭 → 모달 닫기
```

#### 확인 팝업

```
삭제 전 확인 팝업을 추가해줘.

메시지: "정말 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다."
버튼: 삭제 (빨간색), 취소 (회색)
```

#### 탭 UI

```
탭 UI를 추가해줘.

탭 목록:
- 전체 (기본 선택)
- 진행중
- 완료

탭 선택 시 해당 상태의 데이터만 표시
```

#### 사이드바

```
왼쪽에 사이드바 네비게이션을 추가해줘.

메뉴:
- 대시보드 (아이콘: 차트)
- 직원 관리 (아이콘: 사람)
- 설정 (아이콘: 톱니바퀴)

선택된 메뉴는 배경색 표시
```

***

### 디자인/스타일

#### 색상 변경

```
전체 테마 색상을 파란색 계열로 바꿔줘.
- 주요 버튼: #2563eb
- 호버: #1d4ed8
- 배경: #f8fafc
- 카드: 흰색, 그림자
```

#### 카드 스타일

```
데이터를 카드 형태로 보여줘.
- 흰색 배경
- 둥근 모서리 (8px)
- 살짝 그림자
- 호버 시 그림자 진해짐
- 3열 그리드 (모바일에서 1열)
```

#### 반응형

```
모바일에서도 잘 보이게 반응형으로 수정해줘.
- PC: 폼 왼쪽, 테이블 오른쪽
- 모바일: 폼 위, 테이블 아래 (세로 스택)
- 모바일에서 테이블은 가로 스크롤
```

#### 다크 모드

```
다크 모드를 추가해줘.
- 토글 버튼으로 라이트/다크 전환
- 다크 모드 배경: #1a1a2e
- 다크 모드 텍스트: #e5e7eb
- 다크 모드 카드: #16213e
```

***

### 폼 관련

#### 유효성 검사

```
폼에 유효성 검사를 추가해줘.

검사 규칙:
- 이름: 필수, 2글자 이상
- 이메일: 필수, 올바른 이메일 형식
- 전화번호: 010-0000-0000 형식
- 비밀번호: 8자 이상, 영문+숫자 포함

에러 시 필드 아래에 빨간색 에러 메시지 표시
```

#### 날짜 선택

```
날짜 선택 필드를 추가해줘.
- 캘린더 팝업으로 선택
- 오늘 이전 날짜 선택 불가
- 형식: YYYY-MM-DD
```

#### 파일 업로드

```
프로필 이미지 업로드 기능을 추가해줘.
- 이미지 파일만 허용 (jpg, png)
- 최대 5MB
- 미리보기 표시
- 드래그 앤 드롭 지원
```

#### 동적 폼

```
부서를 선택하면 해당 부서의 팀 목록이
동적으로 표시되게 해줘.

부서별 팀:
- 개발팀: 프론트엔드, 백엔드, 인프라
- 마케팅팀: 브랜드, 퍼포먼스, 콘텐츠
- 영업팀: 국내, 해외
```

***

### 차트/시각화

#### 기본 차트

```
월별 매출 막대 차트를 추가해줘.
- X축: 월 (1월~12월)
- Y축: 매출액
- 막대에 금액 표시
```

#### 원형 차트

```
부서별 인원 비율을 원형 차트로 보여줘.
- 각 부서별 색상 다르게
- 비율(%) 표시
- 범례 표시
```

#### 대시보드 통계

```
상단에 통계 카드를 추가해줘.

표시할 수치:
- 총 직원 수
- 이번 달 입사자
- 이번 달 퇴사자
- 평균 근속 기간

각 카드에 아이콘과 전월 대비 증감 표시
```

***

### 수정 요청

#### 특정 요소 수정

```
[Visual Edit로 선택 후]
이 버튼의 텍스트를 "저장하기"로 바꾸고
크기를 더 크게 해줘.
```

#### 에러 수정

```
Preview에서 에러가 나.
"Cannot read property 'map' of undefined"

데이터가 없을 때도 에러 없이 동작하게 수정해줘.
데이터 없으면 "데이터가 없습니다" 메시지 표시.
```

#### 성능 개선

```
테이블 로딩이 느려.
데이터가 많을 때 성능을 개선해줘.
- 가상 스크롤 적용
- 또는 페이지네이션으로 분할
```

***

### 복사하여 사용하세요

위 프롬프트들을 상황에 맞게 수정하여 사용하세요.

{% hint style="success" %}
**팁**: 프롬프트가 길수록 AI가 더 정확하게 이해합니다. 요구사항을 최대한 구체적으로 작성하세요.
{% endhint %}


# 자주 묻는 질문

자주 묻는 질문과 답변입니다.

***

### 일반

<details>

<summary><strong>Waveon은 무료인가요?</strong></summary>

Waveon은 **Free 플랜**을 제공합니다.

| 플랜   | 가격 | 주요 기능                    |
| ---- | -- | ------------------------ |
| Free | 무료 | AI 앱 생성, 기본 기능           |
| Pro  | 유료 | 코드 편집, 고급 기능, 더 많은 AI 요청 |

→ 플랜 상세

</details>

<details>

<summary><strong>코딩을 몰라도 사용할 수 있나요?</strong></summary>

**네, 가능합니다.**

Waveon은 AI와 자연어로 대화하며 앱을 만듭니다. 코딩 지식 없이도 원하는 앱을 만들 수 있습니다.

```
"직원 관리 앱을 만들어줘.
이름, 부서, 이메일을 입력하는 폼과
목록을 보여주는 테이블이 필요해."
```

이렇게 말로 설명하면 AI가 코드를 생성합니다.

</details>

<details>

<summary><strong>어떤 종류의 앱을 만들 수 있나요?</strong></summary>

**다양한 업무용 웹 앱**을 만들 수 있습니다.

* 관리 시스템 (직원, 재고, 고객, 프로젝트)
* 대시보드 (매출, KPI, 현황)
* 입력 폼 (신청서, 설문, 예약)
* 데이터 관리 도구

단, 다음은 아직 지원하지 않습니다:

* 네이티브 모바일 앱 (iOS/Android)
* 게임
* 실시간 채팅/영상통화

</details>

<details>

<summary><strong>만든 앱은 어디에 저장되나요?</strong></summary>

만든 앱은 **Waveon 클라우드**에 저장됩니다.

* 어느 기기에서든 접속 가능
* 자동 저장
* 버전 히스토리 제공

</details>

***

### 에디터

<details>

<summary><strong>AI가 원하는 결과를 만들지 못해요</strong></summary>

**더 구체적으로 설명**해보세요.

```
❌ 나쁜 예: "폼 만들어줘"

✅ 좋은 예: "직원 등록 폼을 만들어줘.
이름(필수), 이메일(필수), 부서(드롭다운) 필드가 필요해.
제출 버튼은 파란색으로."
```

**Visual Edit 모드** 활용도 좋습니다:

1. 수정할 요소 클릭으로 선택
2. "이 버튼 색상을 빨간색으로 바꿔줘"

</details>

<details>

<summary><strong>생성이 중간에 멈췄어요</strong></summary>

다음을 시도해보세요:

1. **Stop 버튼** → 새로운 요청
2. **페이지 새로고침** → 다시 시도
3. 요청을 **더 작은 단위**로 나누어 요청

</details>

<details>

<summary><strong>Code 패널이 편집이 안 돼요</strong></summary>

**Free 플랜**에서는 Code 패널이 읽기 전용입니다.

코드를 직접 편집하려면 **Pro 플랜**으로 업그레이드하세요.

단, 코드 편집 없이도 Chat에서 AI에게 요청하면 대부분의 수정이 가능합니다.

</details>

<details>

<summary><strong>Preview에서 에러가 나요</strong></summary>

AI에게 에러 수정을 요청하세요:

```
Preview에서 에러가 나.
[에러 메시지 복사해서 붙여넣기]
수정해줘.
```

또는 구체적인 상황을 설명:

```
데이터가 없을 때 에러가 나.
데이터 없으면 "데이터가 없습니다" 메시지를 보여주게 수정해줘.
```

</details>

<details>

<summary><strong>이전에 만든 결과로 되돌리고 싶어요</strong></summary>

**버전 히스토리** 기능을 사용하세요.

1. Header의 버전 드롭다운 클릭
2. 이전 버전 선택
3. 해당 버전으로 복원

</details>

***

### 데이터

<details>

<summary><strong>데이터가 저장되지 않아요</strong></summary>

기본적으로 앱은 **메모리에만** 데이터를 저장합니다.

영구 저장을 원하면 AI에게 요청하세요:

```
데이터를 서버에 저장할 수 있게 해줘.
```

</details>

<details>

<summary><strong>에디터에서 입력한 데이터가 배포 후 안 보여요</strong></summary>

**에디터와 배포 환경의 데이터는 분리**되어 있습니다.

| 환경          | 데이터     |
| ----------- | ------- |
| 에디터 Preview | 개발/테스트용 |
| 배포된 앱       | 운영용     |

배포 후 새로 데이터를 입력하거나, 데이터 마이그레이션이 필요합니다.

</details>

<details>

<summary><strong>데이터를 내보내거나 백업할 수 있나요?</strong></summary>

AI에게 **데이터 내보내기 기능**을 요청하세요:

```
테이블 데이터를 CSV로 다운로드하는 버튼을 추가해줘.
```

</details>

***

### 배포

<details>

<summary><strong>배포된 앱 URL은 어떻게 되나요?</strong></summary>

배포 시 URL 형식:

```
https://[앱이름].waveon.io
```

커스텀 도메인도 설정 가능합니다 (Pro).

</details>

<details>

<summary><strong>배포 후 수정하면 바로 반영되나요?</strong></summary>

**아니요**, 수정 후 다시 **배포 버튼**을 눌러야 합니다.

수정 → 테스트 → 배포 순서로 진행하세요.

</details>

<details>

<summary><strong>배포된 앱의 접근 권한을 제한할 수 있나요?</strong></summary>

앱 설정에서 접근 권한을 설정할 수 있습니다:

* **공개**: 누구나 접근
* **링크 공유**: URL 아는 사람만
* **비공개**: 로그인한 특정 사용자만

</details>

***

### 워크스페이스

<details>

<summary><strong>워크스페이스와 개인 대시보드의 차이는?</strong></summary>

| 항목    | 개인 대시보드 | 워크스페이스 |
| ----- | ------- | ------ |
| 용도    | 개인 앱 관리 | 팀 협업   |
| 멤버    | 본인만     | 여러 명   |
| 권한 관리 | 없음      | 역할 기반  |

팀과 함께 앱을 관리하려면 워크스페이스를 사용하세요.

</details>

<details>

<summary><strong>워크스페이스에 몇 명까지 초대할 수 있나요?</strong></summary>

플랜에 따라 다릅니다.

| 플랜   | 멤버 수 |
| ---- | ---- |
| Free | 3명   |
| Pro  | 무제한  |

</details>

<details>

<summary><strong>워크스페이스에서 특정 앱만 공유할 수 있나요?</strong></summary>

현재는 워크스페이스에 추가된 **모든 앱이 멤버에게 공유**됩니다.

특정 앱만 공유하려면:

* 별도의 워크스페이스 생성
* 또는 앱 자체의 접근 권한 설정 활용

</details>

***

### 요금/플랜

<details>

<summary><strong>AI 요청 횟수가 제한되어 있나요?</strong></summary>

**네**, 플랜에 따라 월별 AI 요청 횟수가 제한됩니다.

요청 횟수가 부족하면:

* 다음 달까지 대기
* 크레딧 추가 구매
* 플랜 업그레이드

</details>

<details>

<summary><strong>플랜을 변경하면 기존 앱은 어떻게 되나요?</strong></summary>

기존 앱은 **그대로 유지**됩니다.

단, 다운그레이드 시 일부 Pro 기능은 사용할 수 없게 됩니다.

</details>

<details>

<summary><strong>환불이 가능한가요?</strong></summary>

결제 후 7일 이내, 실질적인 사용이 없는 경우 환불 가능합니다.

자세한 내용은 <support@waveon.io>로 문의하세요.

</details>

***

### 기타

<details>

<summary><strong>모바일에서도 사용할 수 있나요?</strong></summary>

* **만든 앱**: 모바일 브라우저에서 사용 가능 (반응형 필요)
* **에디터**: 데스크톱 브라우저 권장 (모바일에서 제한적)

</details>

<details>

<summary><strong>오프라인에서 사용할 수 있나요?</strong></summary>

**아니요**, Waveon은 클라우드 기반이므로 인터넷 연결이 필요합니다.

</details>

<details>

<summary><strong>데이터 보안은 어떻게 되나요?</strong></summary>

* HTTPS 암호화 통신
* 클라우드 보안 적용
* 정기적인 보안 점검

엔터프라이즈 보안 요구사항이 있으면 문의하세요.

</details>

***

### 더 많은 질문

찾는 답변이 없나요?

* **이메일**: <support@waveon.io>


# 용어집

Waveon에서 사용하는 주요 용어를 정리한 문서입니다.

***

### A

#### App (앱)

Waveon에서 만드는 웹 애플리케이션입니다.

| 항목    | 내용                    |
| ----- | --------------------- |
| 관련 개념 | Project, Page         |
| 예시    | 직원 관리 앱, 재고 관리 앱, CRM |

***

#### Action (액션)

사용자 상호작용이나 이벤트에 대한 응답으로 실행되는 동작입니다.

| 항목    | 내용                     |
| ----- | ---------------------- |
| 관련 개념 | Event, Logic           |
| 예시    | 데이터 저장, API 호출, 페이지 이동 |

***

### C

#### Collection (컬렉션)

데이터를 저장하는 테이블입니다. 스프레드시트의 시트와 유사합니다.

| 항목    | 내용                                |
| ----- | --------------------------------- |
| 관련 개념 | Field, Record                     |
| 예시    | `employees`, `products`, `orders` |

{% hint style="info" %}
다른 플랫폼에서는 "Table", "Entity", "Model"로 불리기도 합니다.
{% endhint %}

***

#### Component (컴포넌트)

앱을 구성하는 UI 요소입니다.

| 항목    | 내용                           |
| ----- | ---------------------------- |
| 종류    | Button, Input, Table, Form 등 |
| 관련 개념 | Page, Props                  |

***

### D

#### Deploy (배포)

만든 앱을 인터넷에 공개하여 다른 사람이 사용할 수 있게 하는 것입니다.

| 항목    | 내용                                   |
| ----- | ------------------------------------ |
| 관련 개념 | Preview, Publish                     |
| 결과물   | `https://your-app.waveon.io` 형태의 URL |

***

### E

#### Editor (에디터)

앱을 만들고 수정하는 도구입니다.

| 버전        | 설명                |
| --------- | ----------------- |
| v3 Editor | 최신 AI 기반 에디터 (권장) |
| v2 Editor | 이전 버전             |

***

#### Event (이벤트)

사용자의 행동이나 시스템에서 발생하는 특정 상황입니다.

| 항목    | 내용                  |
| ----- | ------------------- |
| 관련 개념 | Action, Logic       |
| 예시    | 버튼 클릭, 폼 제출, 페이지 로드 |

***

### F

#### Field (필드)

Collection의 열(컬럼)입니다. 데이터의 속성을 정의합니다.

| 항목    | 내용                                      |
| ----- | --------------------------------------- |
| 관련 개념 | Collection, Record                      |
| 타입    | Text, Number, Date, Boolean, Relation 등 |
| 예시    | `name`, `email`, `createdAt`            |

***

### L

#### Logic (로직)

앱의 동작을 정의하는 규칙입니다.

| 항목    | 내용                       |
| ----- | ------------------------ |
| 관련 개념 | Event, Action, Condition |
| 예시    | "버튼 클릭 시 데이터 저장"         |

***

### P

#### Page (페이지)

앱 내의 개별 화면입니다. 하나의 앱은 여러 페이지를 가질 수 있습니다.

| 항목    | 내용                    |
| ----- | --------------------- |
| 관련 개념 | App, Component        |
| 예시    | 홈 페이지, 상세 페이지, 설정 페이지 |

***

#### Preview (미리보기)

배포 전에 앱의 동작을 확인하는 기능입니다.

| 항목    | 내용             |
| ----- | -------------- |
| 관련 개념 | Editor, Deploy |
| 위치    | Editor의 오른쪽 패널 |

***

#### Project (프로젝트)

관련된 앱들을 묶는 폴더입니다.

| 항목    | 내용                     |
| ----- | ---------------------- |
| 관련 개념 | Workspace, App         |
| 예시    | "인사관리", "영업관리", "운영관리" |

***

#### Props (속성)

컴포넌트의 설정값입니다. 컴포넌트의 모양과 동작을 결정합니다.

| 항목    | 내용                        |
| ----- | ------------------------- |
| 관련 개념 | Component                 |
| 예시    | 버튼의 텍스트, 입력창의 placeholder |

***

### R

#### Record (레코드)

Collection의 행입니다. 실제 데이터 한 건을 의미합니다.

| 항목    | 내용                   |
| ----- | -------------------- |
| 관련 개념 | Collection, Field    |
| 예시    | 직원 1명의 정보, 상품 1개의 정보 |

***

#### Relation (관계)

두 Collection 간의 연결입니다.

| 항목    | 내용                                    |
| ----- | ------------------------------------- |
| 관련 개념 | Collection, Field                     |
| 타입    | One-to-One, One-to-Many, Many-to-Many |
| 예시    | 직원 ↔ 부서, 주문 ↔ 상품                      |

***

### S

#### Sandpack

Waveon에서 앱 미리보기에 사용하는 기술입니다. 브라우저에서 React 코드를 실시간으로 실행합니다.

| 항목 | 내용                 |
| -- | ------------------ |
| 제공 | CodeSandbox        |
| 용도 | Editor의 Preview 패널 |

***

### W

#### Workspace (워크스페이스)

팀이 함께 작업하는 공간입니다.

| 항목 | 내용                      |
| -- | ----------------------- |
| 포함 | Projects, Apps, Members |
| 권한 | Owner, Admin, Member    |
| 예시 | "ABC 회사", "마케팅팀"        |

{% hint style="info" %}
하나의 계정으로 여러 워크스페이스에 참여할 수 있습니다.
{% endhint %}

***

### 비교 용어

다른 서비스에서 사용하는 용어와 Waveon 용어를 비교합니다.

| Waveon     | Airtable  | Notion    | Retool       | 일반 용어  |
| ---------- | --------- | --------- | ------------ | ------ |
| Workspace  | Workspace | Workspace | Organization | 작업 공간  |
| Project    | Base      | -         | Folder       | 프로젝트   |
| App        | -         | Page      | App          | 애플리케이션 |
| Collection | Table     | Database  | Resource     | 테이블    |
| Field      | Field     | Property  | Column       | 열/컬럼   |
| Record     | Record    | Row       | Row          | 행/레코드  |


# 템플릿으로 시작하기

템플릿은 클릭만 하면 바로 사용할 수 있도록 세팅된 워크스페이스, 또는 프로젝트 입니다. 처음부터 직접 만들기 보다는 이미 만들어진 템플릿으로 시작하면 더 빠르게 원하는 시스템을 제작할 수 있습니다.

### 1. 템플릿 페이지 이동

웨이브온에 로그인 하신 후 템플릿 탭을 클릭하여 템플릿 페이지로 이동해 주세요.

<figure><img src="/files/lARGX9MLT282wo4pNz4H" alt="웨이브온 템플릿 페이지"><figcaption></figcaption></figure>

### 2. 템플릿 미리보기, 템플릿으로 시작하기

템플릿 카드에 마우스를 올리면 미리보기, 이 템플릿으로 시작하기 버튼이 표기 됩니다. 미리보기를 한 후  템플릿으로 시작할 수 있으며, 또는 바로 템플릿으로 시작 할 수도 있습니다.

<figure><img src="/files/IZTiJnSPMf1Yaw32fvHX" alt="2. 템플릿 미리보기, 템플릿으로 시작하기"><figcaption></figcaption></figure>

### 3. \[프로젝트] 템플릿 사용하기

프로젝트 템플릿은 랜딩페이지, 심리테스트 처럼 개별적으로 동작 가능한 앱을 만드는 템플릿 입니다.&#x20;

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

프로젝트 템플릿을 복제하면 아래 이미지처럼 에디터 화면으로 진입하게 됩니다.  에디터에서 자유롭게 수정하신 후 우측 상단 "게시하기" 버튼을 눌러 게시하기를 진행해 주세요.&#x20;

게시하기를 진행한 후 서브 도메인, 또는 커스텀 도메인을 클릭 하시면 (설정한 경우) 프로젝트를 이용할 수 있습니다.

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


# 프로젝트 시작하기


# 프로젝트 편집


# 페이지 목록


# 엘리먼트 트리


# 엘리먼트 목록


# 데이터베이스


# 프로젝트 설정


# 로직 시작하기

{% hint style="info" %}
에디터 화면 우측에 보이는 Logic 탭에 대해 설명해 드려요!
{% endhint %}

### ❓ Logic이 뭔가요?

* 어떤 조건이 발생했을 때 수행할 동작을 설정하는 작업이에요!

  예를 들면 ‘이 버튼을 클릭’이란 조건이 만족되면 ‘페이지를 이동’이라는 동작을 실행하게 할 수 있어요.
* 테스트를 진행시키기 위한 기본적인 Logic은 데이터 설정을 통해 미리 입력되어 있으니 안심!

### 🙆‍♀️ Logic의 구성요소? 어렵지 않아요!

* **Condition (조건)**\
  \[행동 → 결과] 에서 어떤 결과를 발생시키는 조건인 **\[행동]**&#xC5D0; 해당하는 부분이에요!\
  ex. 이 버튼을 클릭했을 때, 데이터가 입력되었을 때 등
* **Result (결과)**\
  \[행동 → 결과] 에서 행동 조건이 만족되면 발생하는 **\[결과]**&#xC5D0; 해당하는 부분이에요!\
  ex. 페이지를 이동한다, 특정 값을 변경한다, 스프레드시트에 값을 넣는다 등
* **When (조건 집합)**\
  Condition들을 모은 집합이에요!\
  첫번째 조건(Condition)부터 다음으로 하나씩 순차적으로 처리해요.
* **Then (결과 집합)**\
  Result들을 모은 집합이에요!

### 🤔 Logic, 그래서 어떻게 쓰나요?

1. Logic을 적용하고 싶은 페이지나 Element를 누르고 우측의 로직 탭에 들어가주세요.
2. Add Logic - Add Condition - Add Result 를 눌러 조건과 결과를 생성해주세요.![guide-quick-setting](https://static.waveon.io/img/apps/1/pages/1652958440139/1653710860679.png)
3. Condition에서 어떤 조건을 선택할지 골라주세요.
4. 아무 조건도 설정하지 않으면 곧바로 Result가 실시돼요!
5. Result에서 어떤 결과를 발생시킬지 골라주세요.


# 버튼 클릭 시 페이지 이동

### 버튼 눌렀을 때 테스트의 다른 페이지로 이동시키려면?

* 버튼을 선택하고 Logic 탭에 들어가요.
* Condition: “클릭 시” 선택!
* Result: “페이지 이동” 선택! - 이동할 페이지를 설정해주세요.

{% embed url="<https://youtu.be/qryF-H4agsg?si=j0Di_cem1Ibja0nk>" %}


# 버튼 클릭시 URL 이동

### 1️⃣ 버튼 눌렀을 때 테스트 외부 URL로 이동시키려면?

* 버튼을 선택하고 Logic 탭에 들어가요.
* Condition: “클릭 시” 선택!
* 모든 질문에 대한 테스트를 마치면 가장 높은 점수를 얻은 결과가 표시돼요.
* Result: “URL 이동” 선택! - 이동할 URL을 입력해주세요.

### 2️⃣ 클릭 시 URL로 이동하게 할 때 새 탭으로 이동하게 할 수 있어요!

* 고객님의 사이트나 SNS로 테스터를 유도할 때 “URL 이동”이란 Result를 사용하게 되죠. 이때 현재 탭에서 이동하는 게 기본이랍니다.
* 그렇지만 URL 입력 창 위의 \[New Tap]에 체크를 하면 새 탭으로 이동하게 할 수 있어요!


# 팝업 만들기

{% hint style="info" %}
사용자에게 메시지를 표시할 수 있는 팝업이에요!
{% endhint %}

### 1️⃣ 팝업창 생성하기

* 앱을 하나 생성해 주세요.
* Popup을 선택해 팝업창을 생성해 주세요.
* 팝업 창은 기본적으로 \[숨김 상태]이기 때문에 미리보기를 해도 팝업이 보이지 않습니다.

### 2️⃣ 팝업창 열기 버튼 생성하기

* 버튼을 하나 생성하고 선택한후 우측 "로직" 탭으로 이동해 주세요.
* "로직 추가"를 선택해 아래와 같은 로직을 추가해 주세요.
  * "Condition 추가" 버튼을 눌러 추가한 후 "클릭시" 를 선택해 주세요
  * "Result 추가" 버튼을 눌러 추가한 후 "엘리먼트 함수 실행" 을 선택해 주세요
    * 두번째 셀렉트에서 이미 생성한 AppPopup 을 선택해 주세요
    * 세번째 셀렉트에서 "보기" 를 선택해 주세요
* "미리보기" 를 통해 확인해 보세요. 버튼을 클릭하면 팝업창이 나타납니다.

### 3️⃣ 팝업창 닫기 버튼 설정하기(옵션)

* 팝업 생성시 기본적으로 X 버튼이 있습니다.
* X 버튼을 선택하고 우측 "로직" 탭으로 이동합니다.
* 이미 기본적으로 X 버튼 클릭시 숨기기 로직이 설정 되어 있습니다.
* 버튼을 새로 만들고 해당 로직을 동일하게 적용하면 나만의 닫기 버튼을 설정 하실 수 있습니다.

### 4️⃣ 팝업창에 내용 넣기

* 팝업창에 내용을 넣을때에는 팝업 창의 자식 엘리먼트로 설정 하셔야 합니다. 2가지 방법중 하나로 넣어주세요.

1. 엘리먼트를 생성시 클릭하지 말고 마우스를 클릭한채로 드래그 하여 팝업창 위에 놓습니다.
2. 엘리먼트 트리에서 엘리먼트를 이동하여 팝업의 자식 요소로 설정합니다.

### 🧐 팝업이 계속 보여서 수정시 불편하다면

* 팝업을 클릭하고 왼쪽 엘리먼트 트리 에서 팝업 위에 마우스를 이동 시킵니다.
* 마우스 오버시 보이는 보기 옵션 (👁) 을 클릭하여 숨기거나 다시 보이게 설정할 수 있습니다.


# 애니메이션 추가하기

{% hint style="info" %}
엘리먼트에 애니메이션 효과를 추가할 수 있어요!
{% endhint %}

### 1️⃣ 엘리먼트 추가하기

먼저 애니메이션 효과를 적용할 엘리먼트를 추가해 주세요.

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

### 2️⃣ 엘리먼트 Condition(조건) 설정하기

해당 엘리먼트를 클릭하고, 우측 에디터에서 \[로직]을 확인해 주세요. Condition은 엘리먼트가 애니메이션이 언제 적용될 건지 정하는 조건이에요. 예시에서는 '화면 로드 직후에 엘리먼트가 나타나면'이라는 조건을 가지고 있네요.

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

### 3️⃣ 엘리먼트 Result(결과) 설정하기

이번엔 Result를 설정할 거예요. Result는 조건을 행했을 때 나타나는 결과를 뜻합니다. 애니메이션 실행하기를 클릭 후, 어떤 형식의 애니메이션을 추가할 지 선택해 주시면 돼요.

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

### 4️⃣ 애니메이션 확인하기

마지막으로 미리보기로 애니메이션이 잘 적용이 되었는지 확인해 보세요!

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


# 입력 사용 방법

### 1️⃣ 입력 생성 및 로직 설정하기

1. Input을 선택해 입력을 생성해 주세요.
2. 생성된 입력창을 클릭하고 우측 로직 탭에서 아래와 같이 로직을 설정해 주세요.

* Condition : 입력값이 변할 시
* Result : 입력된 데이터 저장, 키 값은 적절히 입력(예제에서는 name 으로 입력)

<figure><img src="https://static.waveon.io/img/guide/input-logic-setting.png" alt=""><figcaption></figcaption></figure>

이렇게 설정하면, 입력에 데이터가 입력될 때마다 설정한 키에 데이터가 저장 됩니다.

### 2️⃣ 저장된 입력 데이터 활용

1. 새로운 페이지에서 텍스트를 생성해 주세요
2. 텍스트에 ${설정한 키} 를 입력해 주세요. 예제에서는 name 이라는 키를 설정 하였으므로, ${name} 이라고 입력 하였습니다.&#x20;

   <figure><img src="https://static.waveon.io/img/guide/input-text-setting.png" alt=""><figcaption></figcaption></figure>
3. 테스트를 위해 입력창이 있는 페이지에 버튼을 만들고 [페이지 이동 로직](https://www.waveon.io/guides/logic/go-to-page)을 이용해 버튼 클릭시 새로 생성한 페이지로 이동하도록 설정해 주세요.&#x20;

<figure><img src="https://static.waveon.io/img/guide/input-button-setting.png" alt=""><figcaption></figcaption></figure>

4. 이제 테스트 해 봅시다!. 입력 값을 넣고 버튼을 클릭하면 새로운 페이지에 입력된 데이터가 표시 됩니다.


# 입력값 검사하기

### 1️⃣ 입력 생성 및 설정하기

* Input을 선택해 입력을 생성해 주세요.
* 생성된 입력창을 클릭하고 우측 디자인 탭의 Input Type 에서 원하는 입력형태(email, phone 등)를 설정해 주세요
* ![Choose input type of input element](https://static.waveon.io/img/guide/input-validation-input-type.png)
* (옵션) 엘리먼트 트리에서 생성한 입력창 AppInput 을 더블클릭해 알아보기 쉽게 적당히 이름을 설정 합니다.

### 2️⃣ 버튼 생성 및 유효성 검사 설정

* 버튼을 하나 생성하고 선택한후 우측 "로직" 탭으로 이동해 주세요.
* "로직 추가"를 선택해 아래와 같은 로직을 추가해 주세요.

  * "Condition 추가" 버튼을 눌러 추가한 후 "클릭시" 를 선택해 주세요
  * "Condition 추가" 버튼을 눌러 추가한 후 "엘리먼트 데이터 조건" 을 선택해 주세요
    * 두번째 셀렉트에서 이미 생성한 AppInput 을 선택해 주세요
    * 세번째 셀렉트에서 "Valid" 를 선택해 주세요
    * 네번째 셀렉트에서 "is true" 를 선택해 주세요
  * "Result 추가" 버튼을 눌러 "페이지로 이동" 클릭 후 적절한 페이지를 선택해 주세요

  ![Choose input type of input element](https://static.waveon.io/img/guide/input-validation-button-logic.png)
* 이렇게 설정하면 입력값이 유효한 경우(Valid) 에만 페이지로 이동을 하게 됩니다.


# API 호출하기 ( HTTP 요청 로직 )

외부에서 제공하는 API 를 Http 요청 로직을 이용하면 호출 할 수 있습니다.&#x20;

이번 가이드에서는 웨이브온 폼에 문의 입력시 [Make.com](https://make.com/) 에서 제공하는 API 를 이용하여 슬랙 메세지를 보내는 방법을 알아 보겠습니다. 이를 응용하면 외부 시스템이 제공하는 다양한 기능(이메일, 문자 등등)을 활용하실 수 있습니다.&#x20;

### 1. 외부에서 제공하는 API 확인

외부에서 제공하는 API 명세 확인이 필요합니다. 이번 예제에서는 [make.com](https://make.com/) 이라는 자동화 솔루션을 이용하며, 만약 다른 시스템을 이용 희망하신다면 해당  외부 시스템이 제공하는 API 명세서를 확인이 필요합니다.

API 명세는 아래와 같이 구성되어 있습니다.

* 호출 URL ( 예를들어 <https://api.waveon.io/v1/test-api> )
* 호출 메서드 ( GET, POST )
* 전송 데이터 ( 예를들어 message : "입력 되었습니다." )

[make.com](https://make.com/) 에서는 WebHook 이라는 형태로 API 를 제공합니다.  웹훅을 만드는 상세 과정은 가이드를 참고하시면 되시며 여기에서는 간략하게 소개합니다.

#### 1) make.com 에서 + 버튼을 눌러 Webhooks 를 선택 하여 웹훅을 만듭니다.

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

#### 2) Copy address to clipboard 를 눌러 웹훅의 호출 URL 을 복사 합니다.

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

#### 3) 웨이브온 에서 필요한 곳에 "HTTP 요청" 로직을 추가 합니다. 이번 가이드에서는 폼이 입력 되었을때 실행하려고, 폼을 클릭했을때 넣었습니다.

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

우측 Result 2 를 보시면 "HTTP 요청" 로직이 있습니다. URL 부분이 복사한 URL을 넣고, Query String 으로는 text, 문의 입력 발생 과 같이 넣습니다.&#x20;

또는 다른 엘리먼트의 값을 가져와서 넣을수도 있습니다. value 입력창을 마우스 클릭 해서 커서가 켜지면 아래 스크린샷 에서 보시는 것 처럼 왼쪽에 다른 엘리먼트 요소의 내용을 가져올수 있는 팝업창이 뜹니다.&#x20;

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

예를들어 입력 폼의 "문의사항" 에 입력된 내용을 가져오고 싶다면 차례대로 "입력 폼 선택 (AppForm)" -> "문의 사항 선택" -> "value 선택" 을 하면 자동으로 입력이 됩니다.

<div><figure><img src="/files/9yXjxyTpNDpXiw2bcUog" alt=""><figcaption></figcaption></figure> <figure><img src="/files/2I3VW9X1EHkavNyLT0mH" alt=""><figcaption></figcaption></figure> <figure><img src="/files/tEQ9G753BYbGvVDkJDS3" alt=""><figcaption></figcaption></figure></div>

이렇게 설정하시면 제작하신 페이지의 폼에 문의사항이 입력 되었을때 문의사항에 입력된 값이 HTTP 요청을 통해 전송됩니다.

#### 4) 다시 make.com 으로 이동하고 테스트를 진행합니다. "Redetermine data structure" 버튼을 누르고 웨이브온 랜딩페이지에 문의를 한번 입력해 주세요. 그러면  스스로 데이터를 파악 하기 때문에 따로 설정하실 필요가 없습니다.

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

#### 5) 이제 설정이 완료 되었습니다. 앞으로 로직이 실행될때마다 make.com 의 웹훅이 실행되며 여기서 자유롭게 다른 동작을 추가하실수 있습니다. 저희는 폼에 데이터가 입력 될 때마다 슬랙의 메세지가 전송되도록 설정 하였습니다. make.com 에서는 이메일, 문자 등등 다양한 연동을 지원하기 때문에 원하시는 대로 수정하여 사용 하실 수 있습니다.

<figure><img src="/files/9rPzWW3uzr3APrNN5swb" alt=""><figcaption></figcaption></figure>


# 웨이브온 고객 목록

{% hint style="info" %}
고객 데이터를 웨이브온의 "고객 목록"에 저장할 수 있어요!
{% endhint %}

### 웨이브온 고객 목록에 데이터 입력하기

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/waveondb-form-input.png" alt=""><figcaption></figcaption></figure>

Elements 중에서 Form(폼)을 화면에 추가하고, 우측 디자인 패널의 Inputs 부분에서 "이름"과 "이메일" 항목을 추가해 주세요. 텍스트는 원하는대로 변경하셔도 됩니다

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/waveondb-form-result-select.png" alt=""><figcaption></figcaption></figure>

로직 탭으로 이동한 이후 Result에서 “웨이브온 고객 목록에 추가”를 선택해주세요.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/waveondb-form-input-select.png" alt=""><figcaption></figcaption></figure>

이제 "폼 선택", "이름", "이메일" 항목을 선택해야 합니다. 폼 선택" 은 지금 생성한 폼을 선택해 주세요. 찾기 어렵다면 왼쪽 탭의 "엘리먼트 트리" 로 이동하고 폼을 선택하면 활성화된 요소가 보입니다. 해당 요소를 더블 클릭하여 이름을 수정할 수 있습니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/waveondb-form-name-change.png" alt=""><figcaption></figcaption></figure>

이름 항목에는 이름으로 입력될 항목(예제에서는 "성함") 이메일 항목에는 이메일로 입력될 항목(예제에서는 "이메일")을 선택해 주세요.

이제 폼에 데이터가 입력되면 [웨이브온의 고객목록 페이지](https://www.waveon.io/apps/user)에 데이터가 추가 됩니다!


# 구글 스프레드 시트

{% hint style="info" %}
사용자의 전화번호, 이메일 등의 리드를 수집하는 방법을 알려드려요!
{% endhint %}

### 구글 스프레드시트에 데이터 입력하기

Elements 중에서 Form(폼)을 화면에 추가하고, 화면 우측 Logic 탭에 들어가주세요.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/spreadsheet-form-result-select.png" alt=""><figcaption></figcaption></figure>

Result에서 “구글 시트로 폼 데이터 전송”을 선택해주세요.

<figure><img src="https://static.waveon.io/img/guide/spreadsheet-send-form-data.png" alt=""><figcaption></figcaption></figure>

Sign in to Google Sheets 버튼을 눌러서 구글 스프레드시트의 사용 권한을 설정해주세요.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/spreadsheet-form-sheet-select.png" alt=""><figcaption></figcaption></figure>

구글 스프레드 시트 계정을 선택한 다음 아래에서 데이터가 입력될 구글 스프레드 시트를 선택해 주세요.

이제 고객이 데이터를 입력하면 폼 내용이 해당 스프레드시트 1행의 각 셀에 나란하게 입력돼요.


# 구글 애널리틱스

{% hint style="warning" %}
Pro 이상 요금제부터 연동 가능해요!
{% endhint %}

### 🤔 구글 애널리틱스는 어떻게 설정하나요?

* 웨이브온 구독자만 이용할 수 있어요!
* [구글 애널리틱스](https://analytics.google.com/)에 접속 하셔서 Measurement Id 를 찾아주세요.

  <figure><img src="https://static.waveon.io/img/guide/ga-measurement-id.png" alt=""><figcaption></figcaption></figure>
* 원하는 앱의 설정 화면에 들어가서 \[Google Analytics ID]에 찾은 아이디를 입력하고 저장해요!

  <figure><img src="https://static.waveon.io/img/apps/1/pages/1652958440139/1653552232100.png" alt=""><figcaption></figcaption></figure>

### 📤 구글 애널리틱스에 이벤트를 전송하려면?

* 원하는 Element를 선택하고, Logic 창에서 Condition과 Result를 하나씩 만들어주세요.
* Condition에서 “클릭 시”를 선택해주세요.
  * 다른 Element나 다른 Condition을 사용하셔도 돼요!
* Result에서 “GA 이벤트 전송”를 선택하면 원하는 이벤트 명을 설정할 수 있어요!


# 구글 태그매니저

{% hint style="warning" %}
Pro 이상 요금제부터 연동 가능해요!
{% endhint %}

### 🤔 구글 태그매니저는 어떻게 설정하나요?

* 웨이브온 구독자만 이용할 수 있어요!
* 구글 태그매니저에 접속하여 어카운트를 생성해 주세요.
* 생성 이후 구글 태그매니저를 설치하는 자바스크립트 코드 안내 가이드를 확인하실 수 있습니다. 해당 가이드의 \<head> 코드와 \<body> 코드를 확인해 주세요.
* \<head> 에 들어가야 하는 코드를 복사하여 아래처럼 수정화면 -> 스크립트 설정 -> head 스크립트 부분에 붙여넣기 해 주세요.
* \<body> 에 들어가야 하는 코드를 복사하여 아래처럼 수정화면 -> 스크립트 설정 -> body 스크립트 부분에 붙여넣기 해 주세요.

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

* 이때 코드를 넣으신 후 반드시 아래 "저장하기" 버튼을 눌러 저장해주세요.
* 태그매니저가 제대로 설치 되었는지 확인해 주세요


# 페이스북 픽셀

{% hint style="warning" %}
Pro 이상 요금제부터 연동 가능해요!
{% endhint %}

### 🤔 페이스북 픽셀은 어떻게 설정하나요?

* 웨이브온 구독자만 이용할 수 있어요!
* 2가지 방법중 하나로 설정하실수 있어요

#### 1️⃣ 설정 화면 - 통계 설정 - 페이스북 픽셀 연동에 픽셀 아이디 입력 할 수 있습니다.

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

#### 2️⃣ 설정 화면 - 스크립트 설정 - head 스크립트 설정에서 픽셀을 설치하실 수 있습니다.

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

### 📤 페이스북 픽셀에 이벤트를 전송하려면?

* 원하는 Element를 선택하고, Logic 창에서 Condition과 Result를 하나씩 만들어주세요.
* Condition에서 “클릭 시”를 선택해주세요.
  * 다른 Element나 다른 Condition을 사용하셔도 돼요!
* Result에서 “FB 이벤트 전송”를 선택하면 원하는 이벤트 명을 설정할 수 있어요!


# 웨이브온 통계 & 클릭맵

{% hint style="warning" %}
클릭맵은 Pro 이상 요금제부터 확인 가능해요!
{% endhint %}

### 1️⃣ 통계 및 클릭맵 확인 방법

* 더보기 항목을 클릭하고 "통계"를 클릭 합니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/user-data-more.png" alt=""><figcaption></figcaption></figure>

* 통계 페이지에서 PC, MO 에서 접속하는 데이터를 확인 하실 수 있습니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/user-data-stats.png" alt=""><figcaption></figcaption></figure>

* "클릭맵"을 선택하면 각 버튼 또는 폼이 클릭된 횟수를 확인 하실 수 있습니다. 괄호의 %는 한 페이지 내에서의 비율 입니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/user-data-clickmap.png" alt=""><figcaption></figcaption></figure>


# 쿼리 파라미터 입력하기

{% hint style="info" %}
배포한 링크에 쿼리 파라미터를 추가하여, 수집된 리드를 작성한 경로를 알 수 있어요!
{% endhint %}

### 🤔 쿼리 파라미터란?

쿼리 파라미터(Query Parameters)는 URL에 추가 정보를 전달하기 위해 사용되는 문자열이에요. 보통 `?` 뒤에 `key=value` 형태로 추가되며, 여러 개의 파라미터는 `&`로 구분돼요.

예를 들어, `https://example.com/page?name=John&age=30`에서 `name`과 `age`는 쿼리 파라미터예요.

### 1️⃣ 폼 추가하기

고객의 리드를 수집하기 위한 폼을 만들어 주세요.

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

### 2️⃣ 쿼리 파라미터 추가하기

폼을 클릭한 후, 폼의 로직에서 '구글 시트로 폼 데이터 전송' 로직을 만들고, 쿼리 파라미터를 추가 버튼을 클릭해 주세요.

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

### 3️⃣ 배포하는 링크에 쿼리 파라미터 추가하기

웨이브온에서 만든 랜딩페이지나 심리테스트로 고객의 리드를 수집하신다면, 고객에게 배포 시에 사용되는 링크 뒤에 쿼리 파라미터를 추가해 주세요.

그러면 고객이 리드를 제출할 때마다 구글 폼에 쿼리 파라미터에 의한 경로가 함께 저장돼요!


# 랜딩페이지 만들기

{% hint style="info" %}
랜딩페이지를 만드는 방법은 두 가지예요!
{% endhint %}

### 1️⃣ 첫번째 방법 : 템플릿으로 시작하기

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

회원가입/로그인 후, \[대시보드] → \[템플릿]을 클릭하여 원하는 템플릿을 사용해 주세요.

### 2️⃣ 두번째 방법:  AI 자동 랜딩페이지 만들기

<figure><img src="/files/5LlLqFxnrGO7uLjuxEHX" alt=""><figcaption></figcaption></figure>

템플릿 사용과 마찬가지로 회원가입/로그인 후, \[대시보드] → \[템플릿]에서 AI 랜딩페이지를 생성해 주세요.

<figure><img src="/files/7fnVEXjZXBRtzi0QSsqj" alt=""><figcaption></figcaption></figure>

생성하고자 하는 사이트의 이름과 설명을 작성하여 자동으로 랜딩페이지를 만들어 보세요!


# A/B 테스트 하기

### 1️⃣ A/B 테스트란?

* A/B 테스트란 두 가지(A와 B)의 랜딩페이지를 동시에 운영하여, 둘 중 어떤 랜딩페이지가 더 나은 성과를 보이는지 알아내는 테스트예요.
* 예를들어 "버튼 색상을 빨간색으로 했을때 더 클릭을 많이 할 것 같다" 라고 생각한다면, 이를 A/B테스트를 수행하여 결과를 알 수 있어요.

### 2️⃣ A/B 테스트 사용 방법

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/blog/492/1716353235130.png" alt=""><figcaption></figcaption></figure>

\[템플릿]에서 랜딩페이지 A/B 테스트 버튼을 클릭합니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/blog/492/1716354728937.png" alt=""><figcaption></figcaption></figure>

테스트 목적(가설)에 맞게 테스트 이름을 설정해요.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/blog/492/1716355608160.png" alt=""><figcaption></figcaption></figure>

실험군, 대조군을 설정 합니다. 실험군은 원본 페이지, 대조군은 테스트 하려는 내용을 조금만 변경하여 설정합니다. 실험군을 만들고 복제한 후 대조군을 만들면 더 편하겠죠?

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/blog/492/1716356806228.png" alt=""><figcaption></figcaption></figure>

테스트 기간을 설정 합니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/blog/492/1716370421785.png" alt=""><figcaption></figcaption></figure>

통계 데이터를 확인 합니다. 여기서 그룹A 에 해당하는 URL (회색줄 처진 부분의 URL) 을 실제로 사용자에게 공유해 주세요.

{% hint style="info" %}
그룹A 로 접속하더라도 설정한 확률에 따라 그룹B 로 자동으로 분배 됩니다.
{% endhint %}


# 고객 리드 수집하기

### 1️⃣ 웨이브온 고객 목록으로 리드 수집

* 웨이브온 고객 목록으로 리드를 수집하려면 [웨이브온 고객 목록](/user-data/waveondb)을 참고해 주세요.

### 2️⃣ 구글 스프레드 시트로 리드 수집

* 구글 스프레드 시트를 통해 사용자의 리드를 수집 하려면 [구글 스프레드 시트](/user-data/spreadsheet)를 참고해 주세요.


# 채널톡 연동하기

### 1️⃣ 채널톡 가입하기

* [채널톡 서비스](https://channel.io/ko)에 가입해 주세요.

### 2️⃣ 스크립트 복사

* 채널톡 사이트에서 "사이트에 채널톡 버튼 설치" 및 "설치 가이드 보기"를 통해 가이드로 이동해 주세요.
* "Web에 설치하기" 에서 "기본 자바스크립트"를 클릭하시고 자바스크립트 코드를 모두 복사해 주세요

<figure><img src="https://static.waveon.io/img/guide/chatting-bubble-channeltalk-code-copy.png" alt=""><figcaption></figcaption></figure>

### 3️⃣ 스크립트 적용

* 웨이브온으로 이동하여 앱의 설정으로 이동해 주세요.
* "스크립트 설정" 부분을 확인하시고 2에서 복사한 코드를 입력해 주세요.&#x20;

<figure><img src="https://static.waveon.io/img/guide/chatting-bubble-channeltalk-waveon-setting.png" alt=""><figcaption></figcaption></figure>

* 상단의 "저장하기" 를 눌러 저장해 주세요.
* 이제 사이트 미리보기를 눌러 채팅 버블이 제대로 적용 되었는지 확인 하실 수 있습니다.&#x20;

  <figure><img src="https://static.waveon.io/img/guide/chatting-bubble-channeltalk-final.png" alt=""><figcaption></figcaption></figure>


# 타이머 적용하기

### 1️⃣ 타이머 생성 및 종료 시간 지정

* 엘리먼트 탭 에서 "Timer" 를 선택하여 화면에 입력 합니다.
* 우측 속성 탭 에서 "End Time" 을 지정 합니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/landing-timer-end-time.png" alt=""><figcaption></figcaption></figure>

* 우측 상단 "미리 보기" 를 눌러 확인하면 타이머가 줄어드는 것을 볼 수 있습니다.

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


# 동영상 삽입 & 배경 동영상 설정

### 1️⃣ 동영상 삽입 방법

1. 엘리먼트 탭 에서 "Video" 를 선택하여 화면에 입력 합니다.
2. 우측 속성 탭 에서 "Video or Youtube URL" 을 지정 합니다.
3. 동영상을 보유하고 있다면 직접 업로드 할 수 있으며, youtube url 을 입력 하실 수 있습니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/landing-video-add.png" alt=""><figcaption></figcaption></figure>

### 2️⃣ 배경 동영상 설정 방법

1. 화면에서 블록을 선택 합니다.
2. 우측 속성 탭 에서 "Background Video" 를 지정 합니다.
3. 배경 동영상은 동영상 업로드만 가능합니다.

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

미리보기를 누르면 동영상이 재생되는 모습을 확인 하실 수 있습니다.


# PC/모바일 설정

### 1️⃣ 반응형 설정

* 반응형은 PC에서 보일때와 모바일에서 보일때의 모습을 지정해 주는 방식 입니다.
* 반응형 엘리먼트는 PC, 모바일이 공유되며, 위치나 색상과 같은 속성은 다르게 설정 할 수 있습니다.
* 엘리먼트에서 아무 요소(예를들어 텍스트) 를 클릭하여 넣어주세요.
* 상단의 PC 아이콘을 클릭 하여 PC 모드로 변경해 주세요.
* 이때 엘리먼트의 위치나 폰트 크기와 같은 색상을 변경해 주세요. PC 모드에서 변경했기 때문에, 모바일에서는 변경되지 않습니다. 다만 이때 엘리먼트를 삭제하면 PC, 모바일 모두 삭제되니 주의해 주세요.
* 다시 상단의 모바일 아이콘을 클릭 하여 모바일 모드에서 확인하면 PC 와는 다른 모습을 볼 수 있습니다.

### 2️⃣ PC 버전 보이기 옵션

* 모바일 버전만 필요하고 PC 버전은 필요하지 않는 경우, PC로 보았을때 MO 처럼 보이도록 설정 할 수 있습니다.
* 기어 모양의 "설정"을 클릭 하신 후 "앱 구동 설정" 을 클릭해 주세요.
* "PC 버전 보이기" 옵션을 비활성화 해 주세요.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/landing-responsive-pc-option.png" alt=""><figcaption></figcaption></figure>

* 미리보기를 하면 PC 버전에서도 모바일처럼 가운데에 모여있는 형태로 표시 됩니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/landing-responsive-pc-option-preview.png" alt=""><figcaption></figcaption></figure>


# SNS 공유하기

### 🎒시작 전에..

* 앞에서 본 것처럼 Button(버튼)을 화면에 추가하고, Logic 창에서 Condition과 Result를 하나씩 만들어주세요.
* Condition에서 “클릭 시”를 선택해주세요.

### 💬 카카오톡으로 공유하려면

* Result에서 “카카오톡 공유”를 선택해주세요.
  * API Key와 제목, 내용, 이미지를 설정할 수 있는 란이 떠요!
* 카카오톡에서 공유했을 때 나오게 할 **제목, 내용, 이미지는 반드시 넣어주세요!**
* **서브도메인 또는 커스텀도메인**을 적용하신 경우에는 **반드시 카카오 API Key 를 발급하고 화이트리스트에 URL을 넣어주세요!**
  * 서브도메인 : <https://test.waveon.io> 와 같이 앞부분에 텍스트가 추가된 URL
  * 커스텀도메인 : <https://www.wavetoon.io> 와 같이 개인적으로 사용 하시는 도메인
* **카카오톡을 통해 특정 URL을 공유**시 화이트리스트에 URL 을 넣어야 합니다. ( 하단 💡API Key 발급 및 서브도메인, 커스텀도메인 적용 방법 의 4번 수행 )
* 서브도메인, 커스텀도메인을 쓰시더라도 기본 URL을 사용하시면 따로 API Key 를 설정하실 필요 없습니다.
  * 기본URL : <https://www.waveon.io/apps/숫자> 와 같은 형태의 URL

<details>

<summary>❓API Key가 무엇인가요?</summary>

* 기본적으로 웨이브온의 API Key가 입력되어 있어요.
* 각자 보유하고 있는 Key로 변경할 수 있어요.
* [https://developers.kakao.com](https://developers.kakao.com/) 에서 발급 받을수 있어요

#### 💡API Key 발급 및 서브도메인, 커스텀도메인 적용 방법

1. [https://developers.kakao.com](https://developers.kakao.com/) 에 접속 하셔서 상단의 **\[내 애플리케이션]** 을 클릭해 주세요.
2. 애플리케이션이 없다면 **\[애플리케이션 추가하기]** 를 통해 신규 애플리케이션을 생성해 주세요
3. **\[내 애플리케이션 > 앱 설정 > 플랫폼]** 으로 이동하셔서 가장 하단 **\[Web]** 섹션으로 이동해 주세요.&#x20;

   <figure><img src="https://static.waveon.io/img/guide/kakao-api-key-1.png" alt=""><figcaption></figcaption></figure>
4. **\[Web플랫폼 등록] 또는 \[수정]** 을 눌러 사이트 도메인에 **서브도메인** 또는 **커스텀 도메인**을 입력해 주세요. (커스텀 도메인 또는 서브도메인을 사용 하시는 경우, 또는 특정 URL 을 공유 하시는 경우)<br>

   <figure><img src="https://static.waveon.io/img/guide/kakao-api-key-2.png" alt=""><figcaption></figcaption></figure>
5. **\[내 애플리케이션 > 앱 설정 > 요약정보]** 로 이동하셔서 **\[앱 키]** 에서 **JavaScript 키**를 복사해 주세요!&#x20;

   <figure><img src="https://static.waveon.io/img/guide/kakao-api-key-3.png" alt=""><figcaption></figcaption></figure>
6. **웨이브온 사이트**로 이동해 주세요
7. 만드신 앱에서 카카오톡 공유를 적용하실 버튼을 클릭하고 우측의 **\[로직]** 패널에서 Result의 \[카카오톡 공유] 의 **API Key** 부분에 복사한 키를 입력해 주세요.&#x20;

   <figure><img src="https://static.waveon.io/img/guide/kakao-api-key-4.png" alt=""><figcaption></figcaption></figure>
8. (필요시) [https://developers.kakao.com](https://developers.kakao.com/) 에서 썸네일, 앱 이름 등을 변경해 주세요. 변경한 내용은 카카오톡 공유하기 시에 설정하신 대로 표기 됩니다.

</details>

### 📔페이스북으로 공유하려면

* Result에서 “페이스북 공유”를 선택해주세요.
* URL과 제목, 내용, 인용구를 설정할 수 있는 란이 떠요!
  * URL을 비워두시면 현재 페이지가 공유돼요.
  * 현재 페이지가 아닌 다른 페이지를 공유하게 하고 싶으면 따로 설정해주세요.

### 🐦트위터로 공유하려면

* Result에서 "트위터 공유”를 선택해주세요.
* URL과 내용, 해시태그를 설정할 수 있는 란이 떠요!
  * URL을 비워두시면 현재 페이지가 공유돼요.
  * 현재 페이지가 아닌 다른 페이지를 공유하게 하고 싶으면 따로 설정해주세요.
  * 해시태그는 #를 붙이지 말고 콤마(,) 를 넣어주세요. 예를들어 #태그1, #태그2 와 같이 트위터에 공유하고 싶다면 Hashtags 에 아래와 같이 넣어주세요.태그1,태그2

### ✏️현재 URL을 복사하게 하려면

* Result에서 “현재 URL 복사”를 선택해주세요.
  * Condition이 만족되면 현재 URL이 복사돼요!


# 네이버 서치어드바이저 등록

### 1️⃣ HTML 태그 확인

[네이버 서치어드바이저](https://searchadvisor.naver.com/) 에 웨이브온 사이트를 등록 하려면 HTML 태그 방식으로 등록 하셔야 합니다. 네이버 서치어드바이저 에 접속하셔서 사이트 소유 확인에 HTML 태그 부분을 확인해 주세요.

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

### 2️⃣ 웨이브온 에디터에서 HTML 태그 입력

에디터의 설정탭에서 스크립트 설정으로 이동하신 후 head script 부분에 네이버 서치어드바이저에서 제공하는 HTML 태그를 입력해 주세요. 반드시 아래 스크린샷 내용처럼 \<script> 등으로 감싸지 않고 넣으셔야 합니다. (만약 이미 다른 내용이 있다면 기존 내용 그 다음줄에 넣어주세요)&#x20;

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

입력하신 후 저장을 눌러 적용해 주세요. 그 이후 네이버 서치어드바이저에서 소유확인을 진행해 주세요.


# 사전결제 구성

1️⃣웨이브온에서 직접 결제 연결하여 1Depth 로 구성

* 웨이브온에서 직접 결제를 연결하면 사용자에게 즉시 결제를 받을 수 있습니다.
* 결제를 유도할 버튼을 클릭하고 "로직" 패널로 이동합니다.
* 로직을 아래 이미지처럼 구성합니다.
  * Condition 은 "클릭시"를 추가합니다.
  * Result 는 "아이템 구매" 를 추가합니다. 나머지 항목들을 적절하게 입력합니다.

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

* 앱의 설정 탭에서 Toss Payment 의 Client Key 와 Client Secret 을 입력 합니다.
* 만약 테스트라면 [토스 결제 테스트키 정보](https://docs.tosspayments.com/guides/using-api#%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%82%A4%EB%A1%9C-%EB%B0%94%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0)를 참고하여 입력해 주세요.
* 만약 실제 환경이라면, PG 심사 승인 이후 발급 받은 Client Key 와 Client Secret 을 입력해 주세요.

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

2️⃣링크페이 등을 사용하여 결제 구성

* 제품을 판매 가능한 기타 솔루션을 사용하여 결제를 받을 수 있습니다.
* 네이버 스마트스토어, 링크페이, Gumroad 중에서 적합한 솔루션을 선택해 주세요.
* 제공되는 기본 템플릿은 [링크페이 ](https://www.tosspayments.com/services/linkpay)를 사용 하였습니다.
* [클릭시 URL 이동](https://www.waveon.io/en/guides/logic/go-to-url) 로직을 사용하여 결제 버튼에 링크페이 페이지로 링크를 구성합니다.


# O/X 심리테스트 만들기

### 1️⃣ 정답인 경우 다음 문제로 이동하기

* 만약 사용자가 정답을 선택했다면 다음 문제로 이동합니다.
* 만약 템플릿 등을 써서 만드셨다면 이미 [버튼 클릭시 페이지 이동](https://www.waveon.io/guides/logic/go-to-page)이 적용 되었으므로 따로 처리할 내용이 없습니다.
* 만약 그렇지 않다면 정답 선택시, 다음 문제 페이지로 이동 하도록 가이드를 참고하여 설정해 주세요.

### 2️⃣ 오답인 경우 해설 보여주기

* 오답 버튼을 클릭하고 우측 "로직" 패널을 확인 합니다.
* 정답과 거의 유사하지만, [버튼 클릭시 페이지 이동](https://www.waveon.io/guides/logic/go-to-page)가이드를 참고 하여 오답을 해설 하는 페이지로 이동을 설정해 주세요.


# 질문 추가, 제거

### 1️⃣ 새로운 질문 페이지 추가 또는 제거

* 새로운 질문 페이지 추가
  * 이미 다른 질문 페이지가 있다면 해당 페이지를 복제하여 생성해 주세요.
  * 만약 없다면 새로 생성하고 적절하게 질문과 선택지 버튼을 포함한 페이지를 구성해 주세요.
* 기존 질문 제거
  * 왼쪽 페이지 목록에서 필요 없는 질문 페이지를 제거 해 주세요

### 2️⃣ 앞, 뒤 페이지 연결하기

* 질문을 추가 한 경우
  * 새로운 질문이 중간에 들어 갔으니, 전 후 페이지에서 이동 하도록 설정 해야 합니다.
  * 만약 첫번째 질문을 추가 했다면
    * 시작 페이지 -> 신규 질문 페이지 -> 다음 질문 페이지 순서대로 이동하도록 설정 해야 합니다.
    * 시작 페이지의 "시작하기" 버튼과, 생성한 질문 페이지의 각 선택지 버튼에 [클릭시 페이지 이동 로직](https://www.waveon.io/guides/logic/go-to-page)을 적용합니다.
  * 만약 중간 단게 질문이라면
    * 이전 질문 페이지 -> 신규 질문 페이지 -> 다음 질문 페이지 순서대로 이동하도록 설정 해야 합니다.
    * 마찬가지로 이전 질문 페이지의 선택지와 생성한 질문 페이지의 선택지에 [클릭시 페이지 이동 로직](https://www.waveon.io/guides/logic/go-to-page)을 적용합니다.
  * 만약 마지막 단게 질문이라면
    * 이전 질문 페이지 -> 생성한 질문 페이지 -> 로딩 페이지 순서대로 이동하도록 설정 해야 합니다.
    * 마찬가지로 이전 질문 페이지의 선택지와 생성한 질문 페이지의 선택지에 [클릭시 페이지 이동 로직](https://www.waveon.io/guides/logic/go-to-page)을 적용합니다.
* 질문을 제거 한 경우
  * 기존 질문을 제거 한 경우 제거된 페이지 이전, 이후 페이지를 연결해 주어야 합니다.
  * [클릭시 페이지 이동 로직](https://www.waveon.io/guides/logic/go-to-page)을 이용하여 이전, 이후 페이지를 연결해 주세요.

### 3️⃣ 결과가 나오는 조건 변경하기

* 새로운 질문이 추가 되었으니, 질문에 따라 결과도 달라져야 합니다.
* [결과가 나오는 조건 변경](https://www.waveon.io/guides/quiz/change-result-condition)을 참고하여 새롭게 추가된 질문 선택지에 점수를 설정하고, 로딩 페이지에서 분기를 설정 합니다.


# 결과 추가, 제거

### 1️⃣ 새로운 결과 페이지 추가하기

* 다른 결과 페이지가 있다면 복제하여 생성해 주세요.
* 만약 없다면 새로 생성하고 적절하게 결과 내용을 포함한 페이지를 구성해 주세요.

### 2️⃣ 결과가 나오는 조건 변경하기

* 새로운 결과가 추가 되었으니, 결과가 나오는 조건도 변경되어야 합니다.
* [결과가 나오는 조건 변경](https://www.waveon.io/guides/quiz/change-result-condition)을 참고하여 로딩 페이지에서 결과 분기를 설정 합니다.


# 플레이 수 표시

### 1️⃣ 참여한 인원수 텍스트 추가

* 페이지에 텍스트 엘리먼트(AppText)를 추가해 주세요.
* 텍스트 내용을 아래와 같이 입력해 주세요.

```
${playcount} 명이 참여 하였어요!
```

* 여기서 ${playcount} 부분에 심리테스트에 참여한 인원수가 표시되게 됩니다.

<figure><img src="https://static.waveon.io/img/guide/show-play-count.png" alt=""><figcaption></figcaption></figure>

### 2️⃣ 참여한 인원수 서버에서 가져오기

* 생성하신 텍스트 엘리먼트에 아래와 같은 로직을 추가해 주세요. ([로직 시작하기](/logic/basic) 참고) &#x20;

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

<figure><img src="https://static.waveon.io/img/guide/show-play-count-logic-full-screen.png" alt=""><figcaption></figcaption></figure>

* 위에서 설정한 로직을 통해 playcount를 서버에서 가져오도록 설정 하였습니다.

### 3️⃣ 완료 시 플레이 수 증가

* 심리테스트를 완료하였을 경우에 플레이 수를 증가해 주어야 합니다.
* 원하는 페이지 또는 모든 결과 페이지에 아래와 같이 로직을 추가해 주세요.\ <br>

  <figure><img src="https://static.waveon.io/img/guide/show-play-count-save-logic-fullscreen.png" alt=""><figcaption></figcaption></figure>

  <figure><img src="https://static.waveon.io/img/guide/show-play-count-save-logic.png" alt=""><figcaption></figcaption></figure>
* 위와 같이 로직을 설정하면 playcount 에 1을 더해 주어 저장하게 됩니다.


# 결과가 나오는 조건 변경

{% hint style="info" %}
사용자 선택에 따라 결과가 나오는 조건을 변경할 수 있어요.
{% endhint %}

### ☝🏻 로딩페이지에서 결과 조건 변경

* 일반적으로 심리테스트는 로딩 페이지에서 어떤 결과가 나와야 하는지 판단하고 그에 따라 이동 합니다.
* 만약 템플릿 등을 통해 만드셨다면, 이미 사용자의 선택한 결과에 따라 이동하는 로직을 확인 하실 수 있습니다.

### 💡 결과가 나오는 조건의 몇가지 유형

* 결과가 나오는 조건에는 몇가지 유형이 있습니다. 아래 내용을 참고해 주세요.

1. [점수 범위에 따라 결과 보여주기](/quiz-deprecated/score-range-quiz) : 0점 \~ 20점 / 21점 \~ 40점 등 구간을 나오고 점수가 범위 안에 나온 경우 결과 보여주기
2. [정답, 오답에 따라 결과 보여주기](/quiz-deprecated/ox-quiz) : 문제가 정답인지, 오답인지 체크하고 결과 보여주기


# 점수 범위에 따른 결과 이동

{% hint style="info" %}
사용자 선택에 따라 점수를 매기고, 이 점수에 따라 결과를 보여줄 수 있어요!\
ex. 선택의 결과가 75점이라면, 70\~80점 결과 구간에 해당하는 결과를 보여줍니다.
{% endhint %}

### 1️⃣ 점수 초기화 하기

* 처음 시작시 점수를 초기화 해 주어야 합니다. 그렇지 않으면 사용자가 다시 시도했을때 기존 점수가 사용 될 수 있습니다.
* 제일 처음 페이지로 이동하여 아래와 같은 로직을 적용 합니다.

<figure><img src="https://static.waveon.io/img/guide/change-result-condition-1.png" alt=""><figcaption></figcaption></figure>

* 위와 같이 로직을 설정하면 처음에 자동으로 점수가 0으로 초기화 됩니다.

### 2️⃣ 질문의 선택지에 점수 부여하기

* 질문 선택지의 버튼을 클릭하고 우측 로직 패널을 확인합니다.
* 클릭시 페이지 이동 로직을 확인합니다. 만약 적용 되어 있지 않다면 [버튼 클릭시 페이지 이동](/logic/go-to-page)을 참고 하셔서 적용해 주세요.

<figure><img src="https://static.waveon.io/img/guide/score-range-quiz-2.png" alt=""><figcaption></figcaption></figure>

* 로직의 Result 부분의 "페이지 이동" 보다 위쪽에 아래와 같이 Result를 추가해 줍니다.
* 예제에서는, 선택시 10점을 추가해 주기로 하였습니다.

<figure><img src="https://static.waveon.io/img/guide/change-result-condition-2.png" alt=""><figcaption></figcaption></figure>

* 이렇게 설정할 경우 해당 버튼을 누르면 점수가 10점 추가되고 다음 페이지로 이동합니다.

### 3️⃣ 점수 결과에 따라 결과 보여주기

* 로딩 페이지로 이동하여 우측 "로직" 패널을 확인 합니다.
* ![Score Range Quiz Logic 4](https://static.waveon.io/img/guide/loading-condition-setting.png)
* 이미 결과로 이동하는 로직이 적용 되어 있다면 해당 로직 변경을, 없다면 아래와 같이 로직을 추가해 줍니다.
* 예제에서는 점수가 0점 이상 20점 이하인 경우 "0점 \~ 20점 결과" 라는 결과 페이지로 이동 하도록 설정 하였습니다.

<figure><img src="https://static.waveon.io/img/guide/loading-condition-setting-detail.png" alt=""><figcaption></figcaption></figure>

* 이와 같이 세팅하면 점수가 0점 이상 그리고 20점 이하인 경우 "0점 \~ 20점 결과" 라는 페이지로 이동합니다.
* 나머지 점수, 예를들어 21점 \~ 40점 / 41점 \~ 60점 등 필요한 만큼 동일하게 설정하여 결과를 보여 줄 수 있습니다.


# 중복 참여 체크

{% hint style="info" %}
사용자의 참여 여부를 체크하여 원하는 액션(제한, 허용)을 할 수 있어요!
{% endhint %}

{% hint style="warning" %}
사용자가 가입, 로그인을 하는 시스템이 아니기 때문에 완벽히 중복 참여를 막을수는 없습니다.<br>

중복 참여는 브라우저 쿠키를 이용하기 때문에 쿠키가 삭제 되는 환경 또는 새로운 브라우저로 접속시 중복 참여 여부를 확인할 수 없으니 참고 부탁 드립니다.
{% endhint %}

### 1️⃣ 참여 여부 기록하기

* 참여 여부를 기록해야 하는 곳 ( 예를들어 제출 버튼 클릭, 결과 조회 등 ) 을 확인합니다.
* 본 예제에서는 참여 완료 페이지로 이동 할 시 참여 한 것으로 가정하고 로직을 설정 하였습니다.
* 참여 완료 메세지를 보여주기 위해 우선 참여 완료 페이지를 생성해 주세요. 만든 페이지로 이동하여 아래 이미지 처럼 로직을 설정해 줍니다.&#x20;

  <figure><img src="https://static.waveon.io/img/guide/check-duplication-1.png" alt=""><figcaption></figcaption></figure>
* 이렇게 로직을 설정하면 "참여 완료 페이지" 에 진입 하자마자 참여여부가 저장 됩니다.
* ❗️회원가입 과정이 없기 때문에 중복 참여를 위해 사용자에게 임시로 아이디를 부여하고 이를 쿠키 라는 곳에 저장합니다.\
  만약 사용자가 다른 브라우저를 쓰거나 사용 기록을 초기화 하는 경우 중복 참여 여부가 확인 되지 않을수 있습니다.

### 2️⃣ 중복 참여 여부 체크하기

* 중복 참여를 체크 해야 하는 곳 ( 예를 들어 처음 시작 ) 을 확인합니다.
* 본 예제에서는 "참여" 버튼 클릭시

  * 참여 안한경우 : "참여 완료" 페이지로 이동
  * 참여 한 경우 : "이미 참여 하였습니다" 페이지로 이동

  하도록 설정 하였습니다.
* 아래 이미지 처럼 "참여" 버튼에 다음과 같이 3개의 로직 를 설정 합니다.
  1. 참여 정보를 서버에서 불러오는 로직을 아래 이미지와 같이 설정합니다. ( Logic 1 )&#x20;

     <figure><img src="/files/OVW7PawpRlZ9Dm0rzvAS" alt=""><figcaption></figcaption></figure>
  2. 참여 안한 경우 "참여 완료" 페이지로 이동 하도록 로직을 아래 이미지와 같이 설정합니다. ( Logic 2 )&#x20;

     <figure><img src="https://static.waveon.io/img/guide/check-duplication-2-2.png" alt=""><figcaption></figcaption></figure>
  3. 참여한 경우 "이미 참여 하였습니다" 페이지로 이동 하도록 로직을 아래 이미지와 같이 설정합니다. ( Logic 3 )&#x20;

     <figure><img src="https://static.waveon.io/img/guide/check-duplication-2-3.png" alt=""><figcaption></figcaption></figure>
* 이제 모든 로직이 설정 되었습니다!! 중복 참여 제한이 되는지 한번 확인해 보세요!


# 사용자 선택, 결과 데이터 수집

### 1️⃣ 선택 버튼에 데이터 저장 로직 추가

* 이미 심리테스트가 제작 완료 되었다고 가정 하겠습니다.
* 선택 버튼이 클릭 되었을때 데이터를 저장 해야 합니다.
* 첫번째 질문 페이지로 이동하여 선택지 버튼을 클릭하고 우측 "로직" 탭으로 이동합니다.
* 적용된 로직에 이미 "클릭 시" "페이지 이동" 로직이 있을 것입니다. "페이지 이동" 바로 위에 "데이터 저장" 로직을 아래와 같이 설정 합니다.
  * <mark style="color:blue;">Result 유형 : 데이터 저장</mark>
    * <mark style="color:blue;">key : 질문1</mark>
    * <mark style="color:blue;">value : 피자</mark>
    * <mark style="color:blue;">(\* value 는 적절하게 입력해 주세요.)</mark>

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/quiz-collect-user-selections-first-button.png" alt=""><figcaption></figcaption></figure>

* 두번째 선택지 버튼을 클릭하고 마찬가지로 아래와 같이 설정 합니다.
  * <mark style="color:blue;">Result 유형 : 데이터 저장</mark>
    * <mark style="color:blue;">key : 질문1</mark>
    * <mark style="color:blue;">value : 햄버거</mark>
    * <mark style="color:blue;">(\* 여기서 key 는 "질문1"로 동일하다는 점을 참고해 주세요.)</mark>

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/quiz-collect-user-selections-second-button.png" alt=""><figcaption></figcaption></figure>

* 세번째, 네번째 선택지(만약 있다면) 에도 동일하게 적용해 주세요. 마찬가지로 key 는 동일하게, value 만 변경하여 설정해 주세요.
* 다음 질문 에도 동일하게 적용해 주세요. 이번에는 key 는 질문1 이 아닌 질문2 와 같이 적절한 key 를 입력해 주세요.

### 2️⃣ 결과 페이지에서 구글 스프레드 시트로 데이터 전송

* 결과 페이지로 이동해 주세요.
* 아무것도 선택하지 않은 상태에서 아래와 같은 로직을 추가해 주세요.
  * <mark style="color:blue;">Condition 유형 : 화면 로드 직후</mark>
  * <mark style="color:blue;">Result1 유형 : 데이터 저장</mark>
    * <mark style="color:blue;">key : 결과</mark>
    * <mark style="color:blue;">value : 건강한 유형</mark>
    * <mark style="color:blue;">( \* value 는 적절하게 입력해 주세요 )</mark>
  * <mark style="color:blue;">Result2 유형 : 구글 시트로 데이터 전송</mark>
    * <mark style="color:blue;">Google Sheets Account : 구글 스프레드 시트 계정 선택</mark>
    * <mark style="color:blue;">Google Sheet : 데이터를 입력할 구글 스프레드 시트 선택</mark>
    * <mark style="color:blue;">Values : ${질문1},${질문2},${결과}</mark>

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/quiz-collect-user-selection-result.png" alt=""><figcaption></figcaption></figure>

* 동일한 로직을 다른 결과 페이지에도 모두 넣어주세요.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/quiz-collect-user-selection-result2.png" alt=""><figcaption></figcaption></figure>

* 이제 테스트를 하면 선택한 구글 스프레드 시트에 사용자가 선택한 선택지와 결과가 입력 됩니다.


# 전환 설정

{% hint style="info" %}
고객 자사 사이트 유도와 같은 전환을 설정 하는 방법에 대해서 알아봅시다.
{% endhint %}

### 1️⃣ 전환이란?

* 바이럴, 홍보를 위한 마케팅 심리테스트는 체험하는 고객의 유형을 제공하고 자사 사이트, 제품을 구매하는 페이지로 유도하는 행위를 전환 이라고 정의합니다.
* 마케팅 심리테스트의 경우 "외부 URL로 이동" 로직을 이용하여 고객이 사이트, 제품 페이지로 이동할 때마다 자동으로 전환수가 측정 됩니다. (추후 다른 행동도 전환으로 설정할 수 있도록 제공할 예정)
* 전환수는 "대시보드" 페이지에서 확인 가능하며, "프로젝트" 페이지에서도 개별 심리테스트 별로 각각 확인이 가능합니다.

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/quiz-conversion-sample.png" alt=""><figcaption></figcaption></figure>

### 2️⃣ 마케팅 심리테스트의 전환 설정 방법

* 심리테스트의 결과 페이지에 "버튼" 을 입력 합니다. 이미 생성되어 있다면 생략해도 좋습니다.
* 생성된 버튼을 클릭하고 우측 "로직" 탭으로 이동합니다.
* 해당 버튼에 아래와 같은 로직을 설정 합니다. 버튼을 클릭할 시 자사 사이트, 제품 페이지로 이동하는 로직을 설정 합니다.
  * <mark style="color:blue;">Condition : "클릭 시"</mark>
  * <mark style="color:blue;">Result : "외부 URL 로 이동"</mark>

<figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/quiz-set-conversion-button-logic.png" alt=""><figcaption></figcaption></figure>


# 투표하기

{% hint style="info" %}
고객이 선호하는 제품을 투표하고 그 결과를 보여주는 방법에 대해서 알아봅니다. **(이 기능은 아직 베타 기능이며 추후 변경될수 있습니다.)**
{% endhint %}

### 1️⃣ 투표하기 기능 만들기

* 템플릿 중에 "[레시피 투표 이벤트 템플릿](https://template-50898.waveon.me/)" 를 기반으로 설명하겠습니다.
* 이 템플릿은 4가지 메뉴에 투표를 하고 그 결과를 투표한 다음에 보여주는 템플릿 입니다.
* "닭가슴살 월남쌈" 의 "투표하기" 버튼을 클릭하고 우측 로직탭을 클릭 합니다. 템플릿에는 이미 로직이 적용 되어 있습니다.&#x20;

  <figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/voting-guide-logic-panel.png" alt=""><figcaption></figcaption></figure>
* "닭가슴살 월남쌈" 의 "투표하기" 버튼에 설정된 1번 로직에 대해서 설명 하겠습니다.

  * <mark style="color:blue;">Condition 1 의 "클릭 시"</mark> : 버튼이 클릭 되었을때 동작 합니다.
  * <mark style="color:blue;">Condition 2 의 "저장된 데이터 조건"</mark> : 기존 참여 여부를 판단 합니다. 만약 기존에 참여 했다면 "참여" 라는 데이터에 "YES" 라고 저장 되어 있습니다. (추후 설정)
  * <mark style="color:blue;">Result 1 의 "서버에 데이터 저장"</mark> : 투표한 내용을 서버에 저장 합니다. "num1" 에 1을 더한 값을 서버에 저장하고, "total" 에 1을 더한 값을 서버에 저장 합니다. "num1" 은 닭가슴살 월남쌈의 투표수이고, "total" 은 전체 투표수 입니다.
  * <mark style="color:blue;">Result 2 의 "서버에 데이터 저장"</mark> : 투표 여부를 서버에 저장 합니다. "AppUserData" 라는 곳에 저장하는 것에 주의해 주세요. "참여" 라는 항목에 "YES" 라고 저장 합니다. Condition 2 에서 씌였던 데이터 입니다.
  * <mark style="color:blue;">Result 3 의 "페이지로 이동"</mark> : 모든 데이터를 저장하였으니 이제 결과 페이지로 이동 합니다.

  <figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/voting-logic-1.png" alt=""><figcaption></figcaption></figure>
* "닭가슴살 월남쌈" 의 "투표하기" 버튼에 설정된 2번 로직에 대해서 설명 하겠습니다.

  * <mark style="color:blue;">Condition 1 의 "클릭 시"</mark> : 버튼이 클릭 되었을때 동작 합니다.
  * <mark style="color:blue;">Condition 2 의 "저장된 데이터 조건"</mark> : 투표에 참여를 이미 한 경우를 체크 합니다.
  * <mark style="color:blue;">Result 1 의 "팝업 실행하기"</mark> : 이미 투표를 했다는 팝업을 보여 줍니다.

  <figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/voting-logic-2.png" alt=""><figcaption></figcaption></figure>
* "닭가슴살 월남쌈" 의 "투표하기" 버튼에 설정된 3번 로직에 대해서 설명 하겠습니다.

  * <mark style="color:blue;">Condition 1 의 "화면 로드 직후"</mark> : 화면이 로드 되자마자 바로 수행 됩니다.
  * <mark style="color:blue;">Result 1 의 "서버에서 데이터 불러오기"</mark> : 투표한 여부를 서버에 저장된 데이터를 불러 옵니다. 1번 로직에서 투표를 완료 한 경우 "AppUserData" 에 "참여" 라는 항목에 "YES" 라고 데이터를 저장 하였습니다.

  <figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/voting-logic-3.png" alt=""><figcaption></figcaption></figure>
* 이제 다음 버튼인 "닭가슴살 샐러드" 의 "투표하기" 버튼을 클릭하고 우측 로직탭을 클릭 합니다. 템플릿에는 이미 로직이 적용 되어 있습니다. 여기에는 2개 로직만 적용 되어 있고 기본적으로 "닭가슴살 월남쌈" 의 "투표하기" 버튼과 거의 유사합니다.&#x20;

  <figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/voting-guide-logic-panel-salad.png" alt=""><figcaption></figcaption></figure>
* "닭가슴살 샐러드" 의 "투표하기" 버튼에 설정된 1번 로직에 대해서 설명 하겠습니다.

  * "닭가슴살 월남쌈" 에서 설정된 내용과 거의 대부분 동일합니다.
  * 다만 Result1 의 "서버에 데이터 저장" 에서 Data 1 이 "num1" 이 아닌 "num2" 라는 것에 주의해 주세요. 이는 "닭가슴살 샐러드" 의 투표수 입니다.

  <figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/voting-logic-4.png" alt=""><figcaption></figcaption></figure>
* "닭가슴살 샐러드" 의 "투표하기" 버튼에 설정된 2번 로직에 대해서 설명 하겠습니다.

  * "닭가슴살 월남쌈" 에서 설정된 내용과 완전히 동일합니다.

  <figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/voting-logic-5.png" alt=""><figcaption></figcaption></figure>
* 나머지 "투표하기" 버튼도 "닭가슴살 샐러드" 의 "투표하기" 와 동일합니다. 마찬가지로 "num1" 만 "num2", "num3" 등으로 변경되어 있는 것으로 확인할수 있습니다.

### 2️⃣ 투표하기 결과 출력

* "레시피 투표 이벤트 템플릿"의 "결과 페이지" 로 이동해 주세요. 팝업이 화면을 가리고 있으니 팝업을 숨김 처리해 주세요.&#x20;

  <figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/voting-guide-result.png" alt=""><figcaption></figcaption></figure>
* 텍스트를 클릭하고 우측 로직 패널을 확인해 주세요. 로직에 대해서 설명하면 아래와 같습니다.&#x20;

  * <mark style="color:blue;">Conditon 1 "화면 로드 직후"</mark> : 화면에 로드된 이후 바로 수행됩니다.
  * <mark style="color:blue;">Result 1 "서버에서 데이터 불러오기"</mark> : 서버에 저장된 투표수를 불러 옵니다. num1, num2, num3, num4, total 까지 각 투표 항목과 전체 투표수를 1번 스텝에서 저장 하였습니다.

  <figure><img src="https://www.waveon.io/_ipx/f_webp/static/img/guide/voting-guide-result-logic.png" alt=""><figcaption></figcaption></figure>
* 텍스트 내용에 ${num1} ${num2} ${num3} ${num4} ${total} 과 같이 쓰면 서버에 저장된 값을 표기할 수 있습니다.


# 재고관리 솔루션 사용 안내

### 1️⃣&#x20;

카페24&#x20;

### 2️⃣ DNS 관리 페이지로 이동

카페24&#x20;

### 3️⃣ CNAME 추가

도메인


# 개인 도메인 연결

{% hint style="warning" %}
Pro 이상 요금제부터 연결 가능해요!
{% endhint %}

### 1️⃣ 도메인 구입하기 (옵션, 도메인이 없으신 경우)

[가비아](https://www.gabia.com/), [후이즈](https://whois.co.kr/), [고대디](https://godaddy.com/) 와 같은 도메인 호스팅 업체에서 도메인을 구입 합니다.

### 2️⃣ CNAME 설정하기 (필수)

도메인을 구입 하셨다면 구입하신 사이트에 접속하셔서 CNAME 을 설정해 주셔야 합니다.

아래와 같이 CNAME 을 설정해 주세요

* 레코드 : CNAME
* 호스트 : www
* 값 : hosting.waveon.io.

{% hint style="info" %}
"호스트" 는 www 가 아닌 다른 문자로도 설정 가능합니다.

예를들어 보유하고 계신 도메인이 test.com 이고 marketing.test.com 로 개인 도메인을 설정 하시려면 호스트에 <mark style="background-color:red;">**marketing**</mark> 이라고 입력해 주세요.
{% endhint %}

{% hint style="info" %}
"값" 은 임의의 값이나 제작하신 앱의 URL 아닌 <mark style="background-color:red;">**hosting.waveon.io**</mark> 를 반드시 그대로 입력하셔야 합니다.&#x20;
{% endhint %}

각 호스팅 사이트별 CNAME 설정 방법

* 가비아 CNAME 설정 방법 : [링크](https://customer.gabia.com/manual/dns/3041/3040)
* 후이즈 CNAME 설정 방법 : [링크](https://pbvk.tistory.com/entry/%ED%9B%84%EC%9D%B4%EC%A6%88whois-CNAME-%EB%A0%88%EC%BD%94%EB%93%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0)
* 고대디 CNAME 설정 방법 : [링크](https://kr.godaddy.com/help/edit-a-cname-record-19237)
* 카페24 CNAME 설정 방법 : [링크](https://docs.waveon.io/etc/cafe24-cname)

### 3️⃣ 앱 설정에서 커스텀 도메인 설정

만드신 앱의 설정 페이지로 이동해 "도메인 설정" 탭의 커스텀 도메인 부분을 확인해 주세요.

<figure><img src="/files/4QbnQN3xfY9LWiQdS4nf" alt=""><figcaption></figcaption></figure>

* 이곳에 구입하신 도메인을 [www](http://www). 을 앞에 붙여 입력합니다.
* 예를들어 test.com 을 구입하셨다면, [www.test.com](http://www.test.com) 을 입력 합니다.

\*만약 구입하신 도메인이 한글이 포함된 도메인이라면 (예: [www.한글.com](http://www.한글.com)) 퓨니코드로 변환해야 웨이브온이 인식할 수 있습니다. 가로 안의 링크를 방문하셔서 퓨니코드 변환 후 진행해주세요. (링크: <https://inplaza.com/puny/index.php>)

{% hint style="info" %}
CNAME 설정 하기에서 언급하였다 시피 CNAME 의 호스트를 marketing 이라고 설정 하셨다면 여기에 marketing. 을 앞에 붙여 입력해 주세요.

예를들어 test.com 을 구입하셨다면 <mark style="color:red;">**marketing.test.com**</mark> 을 입력 합니다.
{% endhint %}

* 앞에 http 또는 끝에 / 가 포함되지 않도록 주의해주세요!
* 입력하신 후 저장하기 를 눌러 설정을 저장 합니다.
* 이제 설정하신 URL 을 테스트 하실 수 있습니다.  테스트 하실 때에는 입력하셨던 도메인을 테스트 해 주세요. ( 예를들어 marketing.test.com 을 입력하신 경우 marketing.test.com 을 테스트, test.com 의 경우 동작 X )
* 다만 적용시까지 다소 시간이 걸릴수 있으니 참고 하시길 바랍니다.

{% hint style="info" %}
유효성 확인도 통과하고 설정도 했는데 개인 도메인에 접속시 연결이 안된다면 커스텀 도메인 설정을 초기화 한 후 다시 한번 시도해 주세요.
{% endhint %}

###

### 4️⃣ 루트 도메인 리다이렉트

만약 구입하신 도메인의 루트 도메인으로 접속을 원하시는 경우가 있습니다.

예시 )

* 구입하신 도메인 주소 test.com
* 웨이브온에 설정하신 도메인 주소 [www.test.com](http://www.test.com) ( 웨이브온에서는 반드시 서브도메인, 즉 www 와 같이 앞에 문자가 붙어야 합니다 )
* [www.test.com](http://www.test.com) 은 잘 접속되나, test.com 으로 접속해도 [www.test.com](http://www.test.com) 처럼 접속하기를 희망하는 경우

이런 경우 루트 도메인 리다이렉트를 적용 하셔야 합니다. 다만 도메인을 구입한 업체에 따라 루트 도메인 리다이렉트를 지원하지 않는 경우도 있으니, 이는 해당 업체에 문의 부탁 드립니다.

\[설정 방법]

* 루트 도메인 리다이렉트를 허용하는 경우 아래와 같이 레코드를 설정해 주세요. ( 가비아 등 )
  * 레코드 : CNAME
  * 호스트 : @
  * 값 : [www.test.com](http://www.test.com) ( 여기에는 웨이브온에서 설정하신 커스텀 도메인을 입력 )
* 루트 도메인 리다이렉트를 허용하지 않는 경우 설정이 불가합니다.


# 카페24 CNAME 설정 방법

### 1️⃣ 카페24 호스팅 센터 로그인 하기&#x20;

카페24 호스팅 센터 ( <https://hosting.cafe24.com/> ) 에 로그인 해 주세요.

### 2️⃣ DNS 관리 페이지로 이동

카페24 호스팅 센터의 "도메인관리" -> "DNS 관리" 페이지로 이동해 주세요.

### 3️⃣ CNAME 추가

도메인 별칭과 실제 도메인명을 추가해 주세요.&#x20;

* 도메인 별칭 : www ( 원하는 대로 변경 가능, 자세한 내용은 [개인 도메인 연결 가이드](https://docs.waveon.io/etc/custom-domain) 참고 )
* 실제 도메인명 : hosting.waveon.io ( 변경 불가능, 자세한 내용은 [개인 도메인 연결 가이드](https://docs.waveon.io/etc/custom-domain) 참고 )

모두 입력하신 후 확인을 눌러 주세요.

카페24 CNAME 을 설정하신 이후에는 웨이브온 에서 커스텀 도메인 연결이 필요합니다. [개인 도메인 연결 가이드](https://docs.waveon.io/etc/custom-domain) 를 참고해 다음 스텝을 진행해 주세요.


# 공유 정보(제목, 설명 등) 설정하기

### 1️⃣ OG 설정하기

* og 태그를 설정하면 외부에 URL 을 공유할시 표기되는 제목, 내용, 이미지를 변경할수 있습니다.
* 만드신 앱의 설정 페이지에서 오픈 그래프 설정 부분을 확인해 주세요.
* 제목, 내용, 이미지를 설정해 주세요.

<figure><img src="/files/7xfLowaFahhwHi76pCsK" alt=""><figcaption></figcaption></figure>

<details>

<summary>❓오픈 그래프를 설정해도 적용이 안될경우</summary>

일반적으로 이미 만드신 앱을 공유한 경우 해당 플랫폼에서 캐시가 적용되어 오픈그래프를 변경하더라도 곧바로 적용되지 않는 경우가 있습니다. 이런 경우는 일정 시간이 지나면 자동으로 적용되지만, 즉시 확인을 원하시면 각 플랫폼에서 캐시 초기화를 해 주셔야 합니다.

* 카카오톡의 경우 : [공유 디버거](https://developers.kakao.com/tool/debugger/sharing) 에서 이미 공유한 앱 URL 을 입력하고 "캐시 초기화" 를 진행해 주세요.
* 페이스북의 경우 : [일괄 무효화 도구](https://developers.facebook.com/tools/debug/sharing/batch/) 에서 이미 공유한 앱 URL 을 입력해 주세요.

</details>


# 사이트 임베딩

{% hint style="info" %}
제작한 사이트를 다른 사이트에 삽입할 수 있어요!
{% endhint %}

{% hint style="warning" %}
Pro 이상 요금제부터 연결 가능해요!
{% endhint %}

### 1️⃣ 사이트 임베딩 (다른 사이트에 삽입하기)

* iframe 태그를 이용하여 보유한 사이트에 삽입할 수 있습니다.
* 이미 제작하신 앱의 URL 을 확인해 주세요.
* 보유하고 계신 사이트에 html 코드를 수정할 수 있는지 확인해 주세요. html 코드를 수정할 수 없다면 삽입할 수 없습니다.
* 아래와 같은 코드를 html 에디터에 넣어 주세요. 너비와 높이는 적절하게 조절해 주세요.

```
<iframe src="여기에 보유하신 앱의 URL 을 입력" width="100%" height="100%" />
```


# FAQ

<details>

<summary>상업적인 이용이 가능한가요?</summary>

pro 이상 플랜을 이용하시는 경우 상업적인 이용이 가능합니다.

</details>

<details>

<summary>세금계산서 발행이 가능한가요?</summary>

카드결제는 부가가치세법상 매출전표로 세금계산서를 신고하셔야 합니다.\
무통장 입금하신 경우 세금계산서 발행 가능하시며 아래 내용

* 사업자 등록증
* 세금계산서 발급 받으실 이메일
* 이용하시는 서비스 기간
* 업그레이드 원하시는 계정 이메일

을 <admin@waveon.io> 로 전달 부탁드립니다.

</details>

<details>

<summary>구독 기간이 끝난 경우 데이터가 없어지거나, 사용이 불가능한가요?</summary>

아니요, 유료 구독 기간이 끝나더라도 데이터는 유지되며, 계속 사용 가능합니다. 다만 pro 이상 버전에서 제공되는 기능이 제공되지 않습니다.

</details>

<details>

<summary>타 사이트에 삽입이 가능한가요?</summary>

네, 삽입 가능합니다. 운영중인 사이트에서 iframe 태그를 허용한다면 iframe 을 이용해 삽입 하실 수 있습니다.

</details>

<details>

<summary>폰트 등 저작권은 어떻게 되나요?</summary>

웨이브온에서 사용하는 폰트의 저작권은 모두 자유롭게 사용 가능합니다.

</details>


