Skip to content

Commit 225ecac

Browse files
Le-CaignecCopilot
andauthored
fix/improve-builder-experience (#32)
Co-authored-by: Copilot <[email protected]>
1 parent 9ac4d82 commit 225ecac

File tree

8 files changed

+696
-20
lines changed

8 files changed

+696
-20
lines changed

.vitepress/sidebar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ export function getSidebar() {
479479
],
480480
},
481481
{
482-
text: '💬 Web3Telegram <span class="VPBadge warning" style="margin-left: 8px; margin-bottom: -1px; transform: translateY(-1px);">alpha</span>',
482+
text: '💬 Web3Telegram',
483483
link: '/use-iapp/web3telegram',
484484
collapsed: true,
485485
items: [

package-lock.json

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"@vueuse/core": "^13.6.0",
2121
"@wagmi/vue": "^0.1.24",
2222
"clsx": "^2.1.1",
23+
"figlet": "^1.8.2",
2324
"pinia": "^3.0.3",
2425
"reka-ui": "^2.4.1",
2526
"tailwind-merge": "^3.3.1",
@@ -33,6 +34,7 @@
3334
"devDependencies": {
3435
"@iconify/vue": "^5.0.0",
3536
"@shikijs/vitepress-twoslash": "^3.8.0",
37+
"@types/figlet": "^1.7.0",
3638
"@types/prop-types": "^15.7.15",
3739
"@types/react": "^18.3.23",
3840
"prettier": "^3.6.2",

src/build-iapp/guides/build-&-deploy.md

Lines changed: 256 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ description:
66

77
# Create and Deploy an iApp
88

9+
iApps (iExec Applications) are decentralized applications that run on the iExec
10+
network. They leverage confidential computing to ensure data privacy and
11+
security while providing scalable off-chain computation.
12+
13+
## About iApp Generator
14+
915
Bootstrap TEE-compatible applications in minutes without any hardcoding skills,
1016
iApp Generator handles all the low-level complexity for you.
1117

@@ -20,20 +26,254 @@ iApp Generator handles all the low-level complexity for you.
2026
- **Check and deploy iApps quickly** - iApp Generator checks that your iApp
2127
complies with the iExec Framework and streamlines its deployment.
2228

23-
```bash
24-
# Create your iApp (Python or Node.js supported)
25-
iapp init my-privacy-app
26-
cd my-privacy-app
29+
## Prerequisites
30+
31+
Before getting started, make sure you have the following installed:
32+
33+
- **Node.js** (version 18 or higher) - [Download here](https://nodejs.org/)
34+
- **Docker** - [Download here](https://www.docker.com/get-started)
35+
- **Docker Hub account** - [Sign up here](https://hub.docker.com/) (required for
36+
deployment)
37+
38+
## Installation
39+
40+
First, install the iApp Generator CLI tool using your preferred package manager:
41+
42+
::: code-group
43+
44+
```sh [npm]
45+
npm install -g @iexec/iapp
46+
```
47+
48+
```sh [yarn]
49+
yarn global add @iexec/iapp
50+
```
51+
52+
```sh [pnpm]
53+
pnpm add -g @iexec/iapp
54+
```
2755

28-
# Develop and test locally (simulates TEE environment)
29-
iapp test
30-
# Deploy to the network
31-
iapp deploy
56+
```sh [bun]
57+
bun add -g @iexec/iapp
3258
```
3359

34-
<div class="bg-gradient-to-r from-blue-400/10 to-blue-400/5 rounded-[6px] p-4 border-l-4 border-blue-600 mb-6">
35-
<p class="m-0! text-sm"><strong>Note:</strong> iApp Generator currently supports Python and Node.js, but iApps can be built in any language that runs in Docker.</p>
36-
</div>
60+
:::
61+
62+
## Quick Start
63+
64+
Once installed, you can create and deploy your first iApp. The CLI will guide
65+
you through an interactive setup process to configure your project name,
66+
programming language, and template:
67+
68+
<CLIDemo
69+
initialCommand="iapp init"
70+
asciiText="iApp"
71+
:steps="[
72+
{
73+
showAt: 2,
74+
completeAt: 4,
75+
question: 'What is your project name? (A folder with this name will be created)',
76+
answer: 'hello-world',
77+
showTyping: true,
78+
isComplete: false
79+
},
80+
{
81+
showAt: 4,
82+
completeAt: 6,
83+
question: 'Which language do you want to use?',
84+
answer: 'JavaScript',
85+
options: [
86+
{ label: 'JavaScript', selected: true },
87+
{ label: 'Python', selected: false }
88+
],
89+
highlighted: false,
90+
isComplete: false
91+
},
92+
{
93+
showAt: 6,
94+
completeAt: 8,
95+
question: 'What kind of project do you want to init?',
96+
answer: 'Hello World',
97+
options: [
98+
{ label: 'Hello World - iapp quick start', selected: true },
99+
{ label: 'advanced', selected: false }
100+
],
101+
highlighted: false,
102+
isComplete: false
103+
}
104+
]"
105+
:completionStep="8"
106+
:completionMessage="'Generating your iApp...'"
107+
:completionItems="[
108+
'📁 Created hello-world/',
109+
'📄 Added package.json',
110+
'🐳 Added Dockerfile',
111+
'⚙️ Added iExec configuration'
112+
]"
113+
:successMessage="'Your iApp is ready!'"
114+
/>
115+
116+
After the interactive setup, continue with development and deployment:
117+
118+
## Development and Testing
119+
120+
Navigate to your project and run tests locally to simulate the TEE environment.
121+
The CLI will build a Docker image, run your app, and show you the results:
122+
123+
<CLIDemo
124+
initialCommand="iapp test"
125+
:steps="[
126+
{
127+
showAt: 2,
128+
question: 'No app secret is configured (from iapp.config.json)',
129+
answer: '',
130+
showTyping: false,
131+
isComplete: true
132+
},
133+
{
134+
showAt: 3,
135+
question: 'App docker image built (sha256:9cc0de820aaaf8f86700a3ec4082fe69b9e9a48a117ebb0ade0d82d0879cbe41)',
136+
answer: '',
137+
showTyping: false,
138+
isComplete: true
139+
},
140+
{
141+
showAt: 4,
142+
question: 'App docker image ran and exited successfully.',
143+
answer: '',
144+
showTyping: false,
145+
isComplete: true
146+
},
147+
{
148+
showAt: 5,
149+
completeAt: 6,
150+
question: 'Would you like to see the app logs? (12 lines)',
151+
answer: 'no',
152+
options: [
153+
{ label: 'yes', selected: false },
154+
{ label: 'no', selected: true }
155+
],
156+
highlighted: false,
157+
showTyping: false,
158+
isComplete: false
159+
},
160+
{
161+
showAt: 7,
162+
question: 'Checked app output',
163+
answer: '',
164+
showTyping: false,
165+
isComplete: true
166+
},
167+
{
168+
showAt: 8,
169+
completeAt: 10,
170+
question: 'Would you like to see the result? (View ./output/)',
171+
answer: 'yes',
172+
options: [
173+
{ label: 'yes', selected: true },
174+
{ label: 'no', selected: false }
175+
],
176+
highlighted: false,
177+
showTyping: false,
178+
isComplete: false
179+
}
180+
]"
181+
:completionStep="11"
182+
:completionMessage="'📁 output directory content:'"
183+
:completionItems="[
184+
'└ computed.json',
185+
'└ result.txt'
186+
]"
187+
:successMessage="'hello world'"
188+
:autoRestart="true"
189+
/>
190+
191+
## Deployment
192+
193+
After your tests pass and the package is built, you can deploy your iApp to a
194+
supported network. During deployment, you'll enter your DockerHub credentials,
195+
specify your app version, and push both standard and TEE-compatible images:
196+
197+
<CLIDemo
198+
initialCommand="iapp deploy"
199+
asciiText="Deploy"
200+
:steps="[
201+
{
202+
showAt: 2,
203+
question: 'Using chain bellecour',
204+
answer: '',
205+
showTyping: false,
206+
isComplete: true
207+
},
208+
{
209+
showAt: 3,
210+
question: 'Using saved walletPrivateKey (from iapp.config.json)',
211+
answer: '',
212+
showTyping: false,
213+
isComplete: true
214+
},
215+
{
216+
showAt: 4,
217+
completeAt: 6,
218+
question: 'What is your username on DockerHub? (It will be used to properly tag the Docker image)',
219+
answer: 'bob',
220+
showTyping: true,
221+
isComplete: false
222+
},
223+
{
224+
showAt: 6,
225+
completeAt: 8,
226+
question: 'What is your DockerHub access token?',
227+
answer: '**********************',
228+
showTyping: true,
229+
isComplete: false
230+
},
231+
{
232+
showAt: 8,
233+
completeAt: 10,
234+
question: 'What is the version of your iApp?',
235+
answer: '0.0.1',
236+
showTyping: true,
237+
isComplete: false
238+
},
239+
{
240+
showAt: 10,
241+
question: 'Docker image built (sha256:a53fc4c480f482c384a13266ea2cb6cc5572733c866c44a5f604f4bfab3a744a) and tagged bob/hello-world:0.0.1',
242+
answer: '',
243+
showTyping: false,
244+
isComplete: true
245+
},
246+
{
247+
showAt: 11,
248+
question: 'Pushed image bob/hello-world:0.0.1 on dockerhub',
249+
answer: '',
250+
showTyping: false,
251+
isComplete: true
252+
},
253+
{
254+
showAt: 12,
255+
question: 'Pushed TEE image bob/hello-world:0.0.1-tee-scone-5.9.1-v16-debug-ce3a01d9c5d7 on dockerhub',
256+
answer: '',
257+
showTyping: false,
258+
isComplete: true
259+
},
260+
{
261+
showAt: 13,
262+
question: 'TEE app deployed',
263+
answer: '',
264+
showTyping: false,
265+
isComplete: true
266+
}
267+
]"
268+
:completionStep="14"
269+
:completionMessage="'Deployment of your iApp completed successfully:'"
270+
:completionItems="[
271+
'└ Docker image: bob/hello-world:0.0.1-tee-scone-5.9.1-v16-debug-ce3a01d9c5d7',
272+
'└ iApp address: 0x1f80DCebc2EAAff0Db7156413C43B7e88D189923'
273+
]"
274+
:successMessage="'Run iapp run 0x1f80DCebc2EAAff0Db7156413C43B7e88D189923 to execute your iApp on an iExec TEE worker'"
275+
:autoRestart="true"
276+
/>
37277

38278
## Real Examples
39279

@@ -91,7 +331,7 @@ update_oracle_contract(average_price)
91331

92332
:::
93333

94-
**Automated Transactions iApp**
334+
### Automated Transactions iApp
95335

96336
This iApp automates monthly payments using protected payment details, so
97337
financial information remains private.
@@ -116,3 +356,7 @@ for month in range(12):
116356
```
117357

118358
:::
359+
360+
<script setup>
361+
import CLIDemo from '../../components/CLIDemo.vue';
362+
</script>

src/build-iapp/guides/manage-access.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ Here's an example app order for a sentiment analysis iApp:
6262
}
6363
```
6464

65-
## Creating an App Order from an iApp Generator Project
65+
## Creating an App Order
6666

6767
### Step 1: Install the iExec SDK
6868

0 commit comments

Comments
 (0)