@powerhousedao/academy 5.1.0-dev.14 → 5.1.0-dev.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/docs/academy/01-GetStarted/00-ExploreDemoPackage.mdx +11 -11
- package/docs/academy/01-GetStarted/01-CreateNewPowerhouseProject.md +22 -5
- package/docs/academy/01-GetStarted/02-DefineToDoListDocumentModel.md +2 -20
- package/docs/academy/01-GetStarted/03-ImplementOperationReducers.md +2 -3
- package/docs/academy/01-GetStarted/05-BuildToDoListEditor.md +4 -4
- package/docs/academy/01-GetStarted/home.mdx +43 -104
- package/docs/academy/01-GetStarted/images/DocumentModelOperations.png +0 -0
- package/docs/academy/01-GetStarted/styles.module.css +30 -6
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/02-VetraStudio.md +95 -0
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/{02-StandardDocumentModelWorkflow.md → 03-CreateAPackageWithVetra.md} +202 -33
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/{03-BuilderTools.md → BuilderTools} +1 -1
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/02-ConfiguringDrives.md +4 -4
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/03-BuildingADriveExplorer.md +34 -34
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/07-Authorization/03-DocumentPermissions.md +387 -0
- package/docs/academy/02-MasteryTrack/05-Launch/02-PublishYourProject.md +118 -184
- package/docs/academy/02-MasteryTrack/05-Launch/03-SetupEnvironment.md +1 -1
- package/docs/academy/02-MasteryTrack/05-Launch/05-DockerDeployment.md +1 -1
- package/docs/academy/02-MasteryTrack/_category_.json +1 -1
- package/docs/academy/03-ExampleUsecases/00-Overview.mdx +60 -0
- package/docs/academy/03-ExampleUsecases/Chatroom/02-CreateNewPowerhouseProject.md +38 -16
- package/docs/academy/03-ExampleUsecases/Chatroom/03-DefineChatroomDocumentModel.md +11 -14
- package/docs/academy/03-ExampleUsecases/Chatroom/04-ImplementOperationReducers.md +12 -95
- package/docs/academy/03-ExampleUsecases/Chatroom/05-ImplementChatroomEditor.md +30 -20
- package/docs/academy/03-ExampleUsecases/Chatroom/{06-LaunchALocalReactor.md → 06-LaunchALocalReactor} +13 -8
- package/docs/academy/03-ExampleUsecases/VetraPackageLibrary/VetraPackageLibrary.md +13 -0
- package/docs/academy/03-ExampleUsecases/_category_.json +9 -0
- package/docs/academy/04-APIReferences/00-PowerhouseCLI.md +168 -15
- package/docs/academy/04-APIReferences/01-ReactHooks.md +7 -0
- package/docs/academy/04-APIReferences/04-RelationalDatabase.md +6 -0
- package/docs/academy/04-APIReferences/renown-sdk/03-CLIIdentity.md +321 -0
- package/docs/academy/05-Architecture/00-PowerhouseArchitecture.md +46 -11
- package/docs/academy/07-Cookbook.md +598 -145
- package/docs/academy/08-Glossary.md +1 -1
- package/docusaurus.config.ts +13 -35
- package/package.json +1 -1
- package/sidebars.ts +11 -11
- package/src/css/custom.css +28 -30
- package/src/theme/DocSidebarItem/Category/index.tsx +47 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/05-VetraStudio.md +0 -253
- package/docs/academy/02-MasteryTrack/05-Launch/01-IntroductionToPackages.md +0 -78
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
## 5.1.0-dev.17 (2025-12-11)
|
|
2
|
+
|
|
3
|
+
### 🩹 Fixes
|
|
4
|
+
|
|
5
|
+
- **ph-cli:** auth with access-token ([df48be6e9](https://github.com/powerhouse-inc/powerhouse/commit/df48be6e9))
|
|
6
|
+
|
|
7
|
+
### ❤️ Thank You
|
|
8
|
+
|
|
9
|
+
- Frank
|
|
10
|
+
|
|
11
|
+
## 5.1.0-dev.16 (2025-12-11)
|
|
12
|
+
|
|
13
|
+
### 🚀 Features
|
|
14
|
+
|
|
15
|
+
- **ph-cli:** added access-token command ([e48181df6](https://github.com/powerhouse-inc/powerhouse/commit/e48181df6))
|
|
16
|
+
- **ph-cli:** added login command ([3dbccd06a](https://github.com/powerhouse-inc/powerhouse/commit/3dbccd06a))
|
|
17
|
+
- **codegen:** update zod schema generation library ([#2129](https://github.com/powerhouse-inc/powerhouse/pull/2129))
|
|
18
|
+
- integrate visibility tools for remotes and pglite instance ([#2122](https://github.com/powerhouse-inc/powerhouse/pull/2122))
|
|
19
|
+
|
|
20
|
+
### ❤️ Thank You
|
|
21
|
+
|
|
22
|
+
- Frank
|
|
23
|
+
- Guillermo Puente Sandoval @gpuente
|
|
24
|
+
- Ryan Wolhuter @ryanwolhuter
|
|
25
|
+
|
|
26
|
+
## 5.1.0-dev.15 (2025-12-09)
|
|
27
|
+
|
|
28
|
+
This was a version bump only for @powerhousedao/academy to align it with other projects, there were no code changes.
|
|
29
|
+
|
|
1
30
|
## 5.1.0-dev.14 (2025-12-08)
|
|
2
31
|
|
|
3
32
|
### 🚀 Features
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Let's get started
|
|
4
4
|
|
|
5
5
|
To give you a quick idea of how the Powerhouse Vetra builder platform operates on document models and packages, why don't you try installing a package?
|
|
6
|
-
We will show you how to install the Powerhouse command-line tool `ph-cmd` and then use it to install a pre-built demo package containing a document model, an editor, and a drive
|
|
6
|
+
We will show you how to install the Powerhouse command-line tool `ph-cmd` and then use it to install a pre-built demo package containing a document model, an editor, and a drive-app.
|
|
7
7
|
|
|
8
8
|
## Step 1: Install the Powerhouse CLI
|
|
9
9
|
|
|
@@ -80,23 +80,23 @@ This command downloads and sets up the `@powerhousedao/todo-demo`, making its fe
|
|
|
80
80
|
|
|
81
81
|
You have now successfully installed `ph-cmd`, initalized a product project and added your first package!
|
|
82
82
|
|
|
83
|
-
## Step 4: Run the connect
|
|
83
|
+
## Step 4: Run the connect host application.
|
|
84
84
|
|
|
85
|
-
To run the package locally in Connect
|
|
85
|
+
To run the package locally in Connect (our collaboration and contributor app), run:
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
88
|
ph connect
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
Click the returned localhost URL and you should see Connect
|
|
91
|
+
Click the returned localhost URL and you should see Connect appear in your browser.
|
|
92
92
|
|
|
93
93
|
<figure className="image-container">
|
|
94
94
|
<img src={require("./images/Connect.png").default} alt="Connect Home" />
|
|
95
|
-
<figcaption>The Powerhouse Connect
|
|
95
|
+
<figcaption>The Powerhouse Connect interface.</figcaption>
|
|
96
96
|
</figure>
|
|
97
97
|
|
|
98
98
|
When you click the settings wheel in the bottom right corner, you'll get access to the **Package Manager**.
|
|
99
|
-
Here, you'll see that you've installed the `@powerhousedao/todo-demo`, which contains not only a **Document Model** and its accompanying editor but also a **
|
|
99
|
+
Here, you'll see that you've installed the `@powerhousedao/todo-demo`, which contains not only a **Document Model** and its accompanying editor but also a **drive-app** specific to the to-do document model.
|
|
100
100
|
|
|
101
101
|
<figure className="image-container">
|
|
102
102
|
<img
|
|
@@ -111,7 +111,7 @@ Here, you'll see that you've installed the `@powerhousedao/todo-demo`, which con
|
|
|
111
111
|
## Step 5: Create a todo list document
|
|
112
112
|
|
|
113
113
|
:::tip What is a 'drive' at Powerhouse?
|
|
114
|
-
A **drive** is a folder to store and organize your documents in. Powerhouse offers the ability to build customized '
|
|
114
|
+
A **drive** is a folder to store and organize your documents in. Powerhouse offers the ability to build customized 'drive-apps' for your documents. Think of a drive-app as a specialized lens—it offers **different ways to visualize, organize, and interact with** the data stored within a drive, making it more intuitive and efficient for specific use cases. To learn more, visit [Building A drive-app](/academy/MasteryTrack/BuildingUserExperiences/BuildingADriveExplorer)
|
|
115
115
|
:::
|
|
116
116
|
|
|
117
117
|
### 5.1 Create a local todolist app drive
|
|
@@ -119,7 +119,7 @@ A **drive** is a folder to store and organize your documents in. Powerhouse offe
|
|
|
119
119
|
First, let's create a dedicated drive for your to-do lists:
|
|
120
120
|
|
|
121
121
|
- Click the new drive icon in the interface
|
|
122
|
-
- In the **
|
|
122
|
+
- In the **drive-app** field, select 'To-do drive-app'
|
|
123
123
|
- This creates a specialized drive that's optimized for to-do list documents
|
|
124
124
|
|
|
125
125
|
### 5.2 Create a todolist document
|
|
@@ -133,11 +133,11 @@ Now move into the drive you've just created:
|
|
|
133
133
|
|
|
134
134
|
- Add a few to-dos that are on your mind
|
|
135
135
|
- You'll see a statistics widget that counts the open to-dos
|
|
136
|
-
- After closing the document, look at the To-do
|
|
136
|
+
- After closing the document, look at the To-do drive-app interface—you'll see that it tracks your tasks and displays a progress bar
|
|
137
137
|
|
|
138
|
-
This is an example of the **usefulness and impact of
|
|
138
|
+
This is an example of the **usefulness and impact of drive-apps**.
|
|
139
139
|
They offer a customized interface that works well with the different documents inside your drive.
|
|
140
|
-
Read more about drive
|
|
140
|
+
Read more about drive-apps in the Mastery Track: [drive-apps](/academy/MasteryTrack/BuildingUserExperiences/BuildingADriveExplorer).
|
|
141
141
|
|
|
142
142
|
A key feature of Connect is the **Operations History**. Every change to a document is stored as an individual operation, creating an immutable and replayable history. This provides complete auditability and transparency, as you can inspect each revision, its details, and any associated signatures. For example, you can see a chronological list of all modifications, along with who made them and when.
|
|
143
143
|
|
|
@@ -158,12 +158,29 @@ Once in the project directory, run the `ph vetra` command to start a Vetra Studi
|
|
|
158
158
|
The host application for Vetra Studio will start and you will see the following output:
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
ℹ [reactor-api] [package-manager] Loading packages: @powerhousedao/vetra 14:44:19
|
|
162
|
+
ℹ [reactor-api] [server] WebSocket server attached at /graphql/subscriptions 14:44:22
|
|
163
|
+
ℹ [reactor-api] [graphql-manager] Registered /graphql/system subgraph. 14:44:22
|
|
164
|
+
ℹ [reactor-api] [graphql-manager] Registered /graphql/analytics subgraph. 14:44:22
|
|
165
|
+
ℹ [reactor-api] [graphql-manager] Registered /d/:drive subgraph. 14:44:22
|
|
166
|
+
ℹ [reactor-api] [graphql-manager] Registered /graphql supergraph 14:44:23
|
|
167
|
+
ℹ [reactor-api] [graphql-manager] Registered /graphql/document-editor subgraph. 14:44:23
|
|
168
|
+
ℹ [reactor-api] [graphql-manager] Registered /graphql/vetra-package subgraph. 14:44:23
|
|
169
|
+
ℹ [reactor-api] [graphql-manager] Registered /graphql/subgraph-module subgraph. 14:44:23
|
|
170
|
+
ℹ [reactor-api] [graphql-manager] Registered /graphql/processor-module subgraph. 14:44:23
|
|
171
|
+
ℹ [reactor-api] [graphql-manager] Registered /graphql/app-module subgraph. 14:44:23
|
|
172
|
+
ℹ [reactor-api] [graphql-manager] Registered /graphql/vetra-read-model subgraph. 14:44:23
|
|
173
|
+
ℹ [reactor-api] [server] MCP server available at http://localhost:4001/mcp 14:44:24
|
|
174
|
+
Switchboard initialized 14:44:24
|
|
175
|
+
➜ Drive URL: http://localhost:4001/d/vetra-bac239dd 14:44:24
|
|
176
|
+
2:44:24 PM [vite] (client) Re-optimizing dependencies because vite config has changed 14:44:24
|
|
177
|
+
Port 3000 is in use, trying another one... 14:44:24
|
|
178
|
+
➜ Local: http://localhost:3000/ 14:44:24
|
|
179
|
+
➜ Network: use --host to expose 14:44:24
|
|
180
|
+
➜ press h + enter to show help
|
|
164
181
|
```
|
|
165
182
|
|
|
166
|
-
A new browser window will open and you will see the Vetra Studio
|
|
183
|
+
A new browser window will open when visiting localhost and you will see the Vetra Studio Drive
|
|
167
184
|
|
|
168
185
|
|
|
169
186
|
<figure className="image-container">
|
|
@@ -175,7 +192,7 @@ A new browser window will open and you will see the Vetra Studio. If it doesn't
|
|
|
175
192
|
</figure>
|
|
176
193
|
|
|
177
194
|
|
|
178
|
-
Create a new document model by clicking the Document
|
|
195
|
+
Create a new document model by clicking the Document Models 'Add new specification' button. Name your document TodoList (PascalCase, no spaces or hyphens). If you've followed the steps correctly, you'll have an empty TodoList document where you can define the 'Document Specifications' in the next step.
|
|
179
196
|
|
|
180
197
|
<details>
|
|
181
198
|
<summary>Alternatively: Develop a single document model in Connect</summary>
|
|
@@ -52,25 +52,8 @@ See step 1 for detailed GitHub Desktop instructions.
|
|
|
52
52
|
In this tutorial, you will learn how to define the specifications for a **To-do List** document model within Vetra Studio using its GraphQL schema, and then export the resulting document model specification document for your Powerhouse project.
|
|
53
53
|
If you don't have a document specification file created yet, have a look at the previous step of this tutorial to create a new document specification.
|
|
54
54
|
|
|
55
|
-
Before you start, make sure you have Vetra Studio running locally with the command:
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
ph vetra
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Vetra Studio will start and you will see the following output:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
➜ Local: http://localhost:3000/
|
|
65
|
-
➜ Network: http://192.168.5.110:3000/
|
|
66
|
-
➜ press h + enter to show help
|
|
67
|
-
```
|
|
68
|
-
|
|
69
55
|
## TodoList document specification
|
|
70
56
|
|
|
71
|
-
Make sure you have named your document model `TodoList` (PascalCase, no spaces or hyphens).
|
|
72
|
-
**Pay close attention to capitalization, as it influences our code generation.**
|
|
73
|
-
|
|
74
57
|
We'll continue with this project to teach you how to create a document model specification and later an editor for your document model. We use the **GraphQL Schema Definition Language** (SDL) to define the schema for the document model.
|
|
75
58
|
Below, you can see the SDL for the `TodoList` document model.
|
|
76
59
|
|
|
@@ -127,8 +110,6 @@ input DeleteTodoItemInput {
|
|
|
127
110
|
|
|
128
111
|
## Define the document model specification
|
|
129
112
|
|
|
130
|
-
To be able to define the document model, you need to open the document model editor in Connect.
|
|
131
|
-
|
|
132
113
|
### The steps below show you how to do this:
|
|
133
114
|
|
|
134
115
|
1. In Vetra Studio, click on **'document model'** to open the document model specification editor.
|
|
@@ -152,7 +133,8 @@ To be able to define the document model, you need to open the document model edi
|
|
|
152
133
|
|
|
153
134
|
8. Repeat the process from step 7 for the other input operations: `UPDATE_TODO_ITEM` and `DELETE_TODO_ITEM`. You may have noticed that you only need to add the name of the operation (e.g., `UPDATE_TODO_ITEM`, `DELETE_TODO_ITEM`) without the `Input` suffix. It will then be generated once you press enter.
|
|
154
135
|
|
|
155
|
-
9.
|
|
136
|
+
9. In the meantime Vetra has been keeping an eye on your inputs and started code generation in your directory.
|
|
137
|
+
In your terminal you will also find any validation errors that help you to identify missing specifications.
|
|
156
138
|
|
|
157
139
|
Check below screenshot for the complete implementation:
|
|
158
140
|
|
|
@@ -42,13 +42,12 @@ git reset --hard tutorial/step-3-implement-reducer-operation-handlers
|
|
|
42
42
|
|
|
43
43
|
</details>
|
|
44
44
|
|
|
45
|
-
In this section, we will implement the operation reducers for the **To-do List** document model. In the previous step Vetra imported our document specification and scaffolded our directory through code generation.
|
|
45
|
+
In this section, we will implement the operation reducers for the **To-do List** document model. In the previous step Vetra imported our document specification and scaffolded our code and directory through live code generation.
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
:::info
|
|
48
48
|
|
|
49
49
|
Reducers are a core concept in Powerhouse document models. They implement the state transition logic for each operation defined in your schema.
|
|
50
50
|
|
|
51
|
-
:::info
|
|
52
51
|
**Connection to schema definition language (SDL)**: The reducers directly implement the operations you defined in your SDL. Remember how we defined `AddTodoItemInput`, `UpdateTodoItemInput`, and `DeleteTodoItemInput` in our schema?
|
|
53
52
|
The reducers provide the actual implementation of what happens when those operations are performed.
|
|
54
53
|
:::
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
- **Complete Editor UI**: [step-6-add-basic-todo-editor-ui-components](https://github.com/powerhouse-inc/todo-tutorial/tree/step-6-add-basic-todo-editor-ui-components)
|
|
7
7
|
|
|
8
8
|
This tutorial covers two steps:
|
|
9
|
-
1. **Step 5**: Generating the editor template with
|
|
9
|
+
1. **Step 5**: Generating the editor template with Vetra Studio
|
|
10
10
|
2. **Step 6**: Building a complete, interactive UI with components for adding, editing, and deleting todos
|
|
11
11
|
|
|
12
12
|
Compare implementations: `git diff step-5-generate-todo-list-document-editor step-6-add-basic-todo-editor-ui-components`
|
|
@@ -520,8 +520,8 @@ pnpm lint
|
|
|
520
520
|
# Run tests
|
|
521
521
|
pnpm test
|
|
522
522
|
|
|
523
|
-
# Test in
|
|
524
|
-
ph
|
|
523
|
+
# Test in Vetra Studio
|
|
524
|
+
ph vetra --watch
|
|
525
525
|
|
|
526
526
|
# Compare with reference implementation
|
|
527
527
|
git diff tutorial/step-6-add-basic-todo-editor-ui-components -- editors/todo-list-editor/
|
|
@@ -553,5 +553,5 @@ You will learn:
|
|
|
553
553
|
|
|
554
554
|
- The in's & out's of a document model.
|
|
555
555
|
- How to use UI & Scalar components from the Document Engineering system.
|
|
556
|
-
- How to build Custom
|
|
556
|
+
- How to build Custom drive-apps or Drive Explorers.
|
|
557
557
|
|
|
@@ -20,8 +20,10 @@ import BrowserOnly from "@docusaurus/BrowserOnly";
|
|
|
20
20
|
<div className={styles.cardContent}>
|
|
21
21
|
<div style={{ maxWidth: '960px', margin: '0 auto', textAlign: 'center' }}>
|
|
22
22
|
<div style={{ marginBottom: '1.5rem' }}>
|
|
23
|
-
<p style={{
|
|
24
|
-
|
|
23
|
+
<p style={{ lineHeight: '1.6' }}>
|
|
24
|
+
Vetra is part of the Powerhouse Ecosystem and acts as the builder platform for creating an independent, open-source and decentralized back-end for any SaaS, ERP, CMS or CRM needs.<br />
|
|
25
|
+
For a deeper dive into the architecture, see the <a href="/academy/Architecture/PowerhouseArchitecture">Powerhouse Architecture</a> page.
|
|
26
|
+
</p>
|
|
25
27
|
</div>
|
|
26
28
|
<div style={{ margin: '20px 0', textAlign: 'center' }}>
|
|
27
29
|
<iframe
|
|
@@ -48,7 +50,7 @@ import BrowserOnly from "@docusaurus/BrowserOnly";
|
|
|
48
50
|
|
|
49
51
|
<div></div> {/* Placeholder for the deleted "New Link" card */}
|
|
50
52
|
|
|
51
|
-
<div className={styles.pathCard}
|
|
53
|
+
<div className={styles.pathCard}>
|
|
52
54
|
<div className={styles.cardHeader}>
|
|
53
55
|
<h3 className="card-title">
|
|
54
56
|
<img
|
|
@@ -60,20 +62,15 @@ import BrowserOnly from "@docusaurus/BrowserOnly";
|
|
|
60
62
|
</h3>
|
|
61
63
|
</div>
|
|
62
64
|
<div className={styles.cardContent}>
|
|
63
|
-
<a
|
|
64
|
-
href="/academy/GetStarted/CreateNewPowerhouseProject"
|
|
65
|
-
className="path-button"
|
|
66
|
-
>
|
|
67
|
-
Build a todo-list document model
|
|
68
|
-
</a>
|
|
65
|
+
<a href="/academy/GetStarted/CreateNewPowerhouseProject" className="path-button">Build a todo-list document model</a>
|
|
69
66
|
</div>
|
|
70
67
|
</div>
|
|
71
68
|
|
|
72
69
|
<div></div> {/* Placeholder for the deleted "Document Model Theory" card */}
|
|
73
70
|
|
|
74
|
-
{/* Row 2: Build User Experiences,
|
|
71
|
+
{/* Row 2: Build User Experiences, Launch, Work with Data */}
|
|
75
72
|
|
|
76
|
-
<div className={styles.pathCard}
|
|
73
|
+
<div className={styles.pathCard}>
|
|
77
74
|
<div className={styles.cardHeader}>
|
|
78
75
|
<h3 className="card-title">
|
|
79
76
|
<img
|
|
@@ -85,27 +82,10 @@ import BrowserOnly from "@docusaurus/BrowserOnly";
|
|
|
85
82
|
</h3>
|
|
86
83
|
</div>
|
|
87
84
|
<div className={styles.cardContent}>
|
|
88
|
-
<a href="/academy/GetStarted/BuildToDoListEditor" className="path-button">
|
|
89
|
-
|
|
90
|
-
</a>
|
|
91
|
-
<a
|
|
92
|
-
href="/academy/MasteryTrack/BuildingUserExperiences/BuildingDocumentEditors"
|
|
93
|
-
className="path-button"
|
|
94
|
-
>
|
|
95
|
-
Build document editors
|
|
96
|
-
</a>
|
|
97
|
-
<a
|
|
98
|
-
href="/academy/MasteryTrack/BuildingUserExperiences/BuildingADriveExplorer"
|
|
99
|
-
className="path-button"
|
|
100
|
-
>
|
|
101
|
-
Build custom drive explorers
|
|
102
|
-
</a>
|
|
103
|
-
<a
|
|
104
|
-
href="/academy/ComponentLibrary/DocumentEngineering"
|
|
105
|
-
className="path-button"
|
|
106
|
-
>
|
|
107
|
-
Component library
|
|
108
|
-
</a>
|
|
85
|
+
<a href="/academy/GetStarted/BuildToDoListEditor" className="path-button">Build a todo-list editor</a>
|
|
86
|
+
<a href="/academy/MasteryTrack/BuildingUserExperiences/BuildingDocumentEditors" className="path-button">Build document editors</a>
|
|
87
|
+
<a href="/academy/MasteryTrack/BuildingUserExperiences/BuildingADriveExplorer" className="path-button">Build custom drive explorers</a>
|
|
88
|
+
<a href="/academy/MasteryTrack/BuilderEnvironment/CreateAPackageWithVetra" className="path-button">Create a package with Vetra</a>
|
|
109
89
|
</div>
|
|
110
90
|
</div>
|
|
111
91
|
|
|
@@ -113,21 +93,38 @@ import BrowserOnly from "@docusaurus/BrowserOnly";
|
|
|
113
93
|
className={styles.middleColumn}
|
|
114
94
|
style={{
|
|
115
95
|
display: "flex",
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
96
|
+
flexDirection: "column",
|
|
97
|
+
justifyContent: "space-between",
|
|
98
|
+
alignItems: "center",
|
|
119
99
|
position: "relative",
|
|
100
|
+
height: "100%",
|
|
120
101
|
}}
|
|
121
102
|
>
|
|
122
|
-
<
|
|
123
|
-
|
|
124
|
-
<
|
|
125
|
-
Mastery track
|
|
126
|
-
</
|
|
103
|
+
<div style={{ position: "relative", display: "flex", justifyContent: "center", alignItems: "flex-start", paddingTop: "1rem" }}>
|
|
104
|
+
<img src="/img/Union.svg" alt="Powerhouse Union" width="200" />
|
|
105
|
+
<div className={styles.masteryTrackTitle}>
|
|
106
|
+
<h3 className="card-title" style={{ margin: 0 }}>Mastery track</h3>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
<div className={styles.pathCard} style={{ width: "100%", padding: "1rem", marginTop: "auto" }}>
|
|
110
|
+
<div className={styles.cardHeader} style={{ marginBottom: "0.5rem" }}>
|
|
111
|
+
<h3 className="card-title">
|
|
112
|
+
<img
|
|
113
|
+
src="/img/academy/icons/Launch.svg"
|
|
114
|
+
alt=""
|
|
115
|
+
className={styles.titleIcon}
|
|
116
|
+
/>
|
|
117
|
+
Launch
|
|
118
|
+
</h3>
|
|
119
|
+
</div>
|
|
120
|
+
<div className={styles.cardContent}>
|
|
121
|
+
<a href="/academy/MasteryTrack/Launch/PublishYourProject" className="path-button" style={{ padding: "0.75rem", margin: "0.25rem 0" }}>Publish your project</a>
|
|
122
|
+
<a href="/academy/MasteryTrack/Launch/SetupEnvironment" className="path-button" style={{ padding: "0.75rem", margin: "0.25rem 0" }}>Set-up a cloud environment</a>
|
|
123
|
+
</div>
|
|
127
124
|
</div>
|
|
128
125
|
</div>
|
|
129
126
|
|
|
130
|
-
<div className={styles.pathCard}
|
|
127
|
+
<div className={styles.pathCard}>
|
|
131
128
|
<div className={styles.cardHeader}>
|
|
132
129
|
<h3 className="card-title">
|
|
133
130
|
<img
|
|
@@ -139,63 +136,12 @@ import BrowserOnly from "@docusaurus/BrowserOnly";
|
|
|
139
136
|
</h3>
|
|
140
137
|
</div>
|
|
141
138
|
<div className={styles.cardContent}>
|
|
142
|
-
<a
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
>
|
|
146
|
-
Read & write through the API
|
|
147
|
-
</a>
|
|
148
|
-
<a
|
|
149
|
-
href="/academy/MasteryTrack/WorkWithData/WorkingWithSubgraphs"
|
|
150
|
-
className="path-button"
|
|
151
|
-
>
|
|
152
|
-
Create your own subgraph
|
|
153
|
-
</a>
|
|
154
|
-
<a
|
|
155
|
-
href="/academy/MasteryTrack/WorkWithData/Analytics-Engine/intro"
|
|
156
|
-
className="path-button"
|
|
157
|
-
>
|
|
158
|
-
Use the analytics engine
|
|
159
|
-
</a>
|
|
139
|
+
<a href="/academy/MasteryTrack/WorkWithData/UsingTheAPI" className="path-button">Read & write through the API</a>
|
|
140
|
+
<a href="/academy/MasteryTrack/WorkWithData/UsingSubgraphs" className="path-button">Create your own subgraph</a>
|
|
141
|
+
<a href="/academy/MasteryTrack/WorkWithData/Analytics-Engine/intro" className="path-button">Use the analytics engine</a>
|
|
160
142
|
</div>
|
|
161
143
|
</div>
|
|
162
144
|
|
|
163
|
-
{/* Launch Card - Full Width with 3 column buttons - RE-INSERTED */}
|
|
164
|
-
|
|
165
|
-
<div className={`${styles.pathCard} ${styles.fullWidth}`}>
|
|
166
|
-
<div className={styles.cardHeader}>
|
|
167
|
-
<h3 className="card-title">
|
|
168
|
-
<img
|
|
169
|
-
src="/img/academy/icons/Launch.svg"
|
|
170
|
-
alt=""
|
|
171
|
-
className={styles.titleIcon}
|
|
172
|
-
/>
|
|
173
|
-
Launch
|
|
174
|
-
</h3>
|
|
175
|
-
</div>
|
|
176
|
-
<div className={styles.cardContent}>
|
|
177
|
-
<div className={styles.buttonContainer}>
|
|
178
|
-
<a
|
|
179
|
-
href="/academy/MasteryTrack/Launch/IntroductionToPackages"
|
|
180
|
-
className="path-button"
|
|
181
|
-
>
|
|
182
|
-
Intro to packages
|
|
183
|
-
</a>
|
|
184
|
-
<a
|
|
185
|
-
href="/academy/MasteryTrack/Launch/PublishYourProject"
|
|
186
|
-
className="path-button"
|
|
187
|
-
>
|
|
188
|
-
Publish your project
|
|
189
|
-
</a>
|
|
190
|
-
<a
|
|
191
|
-
href="/academy/MasteryTrack/Launch/SetupEnvironment"
|
|
192
|
-
className="path-button"
|
|
193
|
-
>
|
|
194
|
-
Set-up a cloud environment
|
|
195
|
-
</a>
|
|
196
|
-
</div>
|
|
197
|
-
</div>
|
|
198
|
-
</div>
|
|
199
145
|
|
|
200
146
|
{/* Row 3: Cookbook, Use-cases, Advanced Topics */}
|
|
201
147
|
|
|
@@ -211,9 +157,7 @@ import BrowserOnly from "@docusaurus/BrowserOnly";
|
|
|
211
157
|
</h3>
|
|
212
158
|
</div>
|
|
213
159
|
<div className={styles.cardContent}>
|
|
214
|
-
<a href="/academy/Cookbook" className="path-button">
|
|
215
|
-
Powerhouse recipes
|
|
216
|
-
</a>
|
|
160
|
+
<a href="/academy/Cookbook" className="path-button">Vetra recipes</a>
|
|
217
161
|
</div>
|
|
218
162
|
</div>
|
|
219
163
|
|
|
@@ -233,12 +177,7 @@ import BrowserOnly from "@docusaurus/BrowserOnly";
|
|
|
233
177
|
</h3>
|
|
234
178
|
</div>
|
|
235
179
|
<div className={styles.cardContent}>
|
|
236
|
-
<a
|
|
237
|
-
href="/academy/ExampleUsecases/Chatroom/SetupBuilderEnvironment"
|
|
238
|
-
className="path-button"
|
|
239
|
-
>
|
|
240
|
-
Explore use-cases
|
|
241
|
-
</a>
|
|
180
|
+
<a href="/academy/ExampleUsecases/Overview" className="path-button">Explore use-cases</a>
|
|
242
181
|
</div>
|
|
243
182
|
</div>
|
|
244
183
|
|
|
Binary file
|
|
@@ -84,11 +84,27 @@
|
|
|
84
84
|
font-weight: 500;
|
|
85
85
|
text-align: center;
|
|
86
86
|
transition: background 0.2s ease-in-out;
|
|
87
|
+
white-space: nowrap;
|
|
88
|
+
overflow: hidden;
|
|
89
|
+
text-overflow: ellipsis;
|
|
90
|
+
outline: none;
|
|
91
|
+
box-shadow: none;
|
|
87
92
|
}
|
|
88
93
|
|
|
89
94
|
:global(.path-button:hover) {
|
|
90
95
|
background: #ffffff;
|
|
91
96
|
border-color: #d1d5db;
|
|
97
|
+
color: #111827;
|
|
98
|
+
text-decoration: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
:global(.path-button:visited),
|
|
102
|
+
:global(.path-button:active),
|
|
103
|
+
:global(.path-button:focus) {
|
|
104
|
+
color: #111827;
|
|
105
|
+
text-decoration: none;
|
|
106
|
+
outline: none;
|
|
107
|
+
box-shadow: none;
|
|
92
108
|
}
|
|
93
109
|
|
|
94
110
|
.masteryTrackTitle {
|
|
@@ -111,13 +127,21 @@
|
|
|
111
127
|
border: 1px solid var(--ifm-color-emphasis-200);
|
|
112
128
|
}
|
|
113
129
|
|
|
114
|
-
:global([data-theme="dark"]) :global(.path-button)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
130
|
+
:global([data-theme="dark"]) :global(.path-button),
|
|
131
|
+
:global([data-theme="dark"]) :global(.path-button:visited),
|
|
132
|
+
:global([data-theme="dark"]) :global(.path-button:active),
|
|
133
|
+
:global([data-theme="dark"]) :global(.path-button:focus) {
|
|
134
|
+
background: #374151;
|
|
135
|
+
border: none !important;
|
|
136
|
+
color: #ffffff !important;
|
|
137
|
+
outline: none !important;
|
|
138
|
+
box-shadow: none !important;
|
|
139
|
+
text-decoration: none !important;
|
|
118
140
|
}
|
|
119
141
|
|
|
120
142
|
:global([data-theme="dark"]) :global(.path-button:hover) {
|
|
121
|
-
background:
|
|
122
|
-
|
|
143
|
+
background: #4b5563;
|
|
144
|
+
color: #ffffff !important;
|
|
145
|
+
border: none !important;
|
|
146
|
+
text-decoration: none !important;
|
|
123
147
|
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
toc_max_heading_level: 3
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Vetra Studio
|
|
9
|
+
|
|
10
|
+
## Introducing Vetra Studio
|
|
11
|
+
|
|
12
|
+
- **Vetra Studio Drive**: Serves as a hub for developers to access, manage & share specification through a remote Vetra drive. It functions as the orchestration hub where you as a builder assemble all the necessary specifications for your intended use-case, software solution or package. For each of the different **modules** that together form a package a
|
|
13
|
+
- **Vetra Package Library**: Store, publish and fork git repositories of packages in the Vetra Package Library.
|
|
14
|
+
Visit the [Vetra Package Library here](https://vetra.io/packages)
|
|
15
|
+
|
|
16
|
+
As Vetra Studio matures each of these specification documents will offer an interface by which you as a builder get more control over the modules that make up your package.
|
|
17
|
+
For now the specification documents offer you a template for code generation.
|
|
18
|
+
|
|
19
|
+
<figure className="image-container">
|
|
20
|
+
<img
|
|
21
|
+
src={require("./images/Modules.png").default}
|
|
22
|
+
alt="Modules"
|
|
23
|
+
/>
|
|
24
|
+
<figcaption>The list of available modules color coded according to the 3 categories.</figcaption>
|
|
25
|
+
</figure>
|
|
26
|
+
|
|
27
|
+
### Module Categories
|
|
28
|
+
|
|
29
|
+
### 1. Document Models
|
|
30
|
+
- **Document model specification**: Defines the structure and operations of a document model using GraphQL SDL, ensuring consistent data management and processing.
|
|
31
|
+
|
|
32
|
+
### 2. User Experiences
|
|
33
|
+
- **Editor specification**: Outlines the interface and functionalities of a document model editor, allowing users to interact with and modify document data.
|
|
34
|
+
- **Drive-app specification**: Specifies the UI and interactions for managing documents within a Drive, providing tailored views and functionalities.
|
|
35
|
+
|
|
36
|
+
### 3. Data integrations
|
|
37
|
+
- **Subgraph specification**: Details the connections and relationships within a subgraph, facilitating efficient data querying and manipulation.
|
|
38
|
+
- **Codegen Processor Specification**: Describes the process for automatically generating code from document model specifications, ensuring alignment with intended architecture.
|
|
39
|
+
- **RelationalDb Processor Specification**: Defines how relational databases are structured and queried, supporting efficient data management and retrieval.
|
|
40
|
+
|
|
41
|
+
<figure className="image-container">
|
|
42
|
+
<img
|
|
43
|
+
src={require("./images/VetraStudioDrive.png").default}
|
|
44
|
+
alt="Vetra Studio Drive"
|
|
45
|
+
/>
|
|
46
|
+
<figcaption>The Vetra Studio Drive, a builder app that collects all of the specification of a package.</figcaption>
|
|
47
|
+
</figure>
|
|
48
|
+
|
|
49
|
+
### Configure a Vetra drive in your project
|
|
50
|
+
|
|
51
|
+
You can connect to a remote vetra drive instead of using the local one auto-generated when you run `ph vetra`
|
|
52
|
+
If you run Vetra without the `--remote-drive` option: Vetra will create a Vetra drive for you that is local and lives in your local environment / local browser storage.
|
|
53
|
+
If you provide the remote drive with `--remote-drive` argument: Vetra will use this drive instead of creating a local one. the remote drive can be hosted whatever you want.
|
|
54
|
+
The powerhouse config includes a Vetra URL for consistent project configuration across different environments.
|
|
55
|
+
|
|
56
|
+
```vetra: {
|
|
57
|
+
driveId: string;
|
|
58
|
+
driveUrl: string;
|
|
59
|
+
};
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Imagine you are a builder and want to work on, or continue with a set of specifications from your team mates.
|
|
63
|
+
You could then add the specific remote Vetra drive to your powerhouse configuration in the `powerhouse.config.json`file to get going.
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
"vetra": {
|
|
67
|
+
"driveId": "bai-specifications",
|
|
68
|
+
"driveUrl": "https://switchboard.staging.vetra.io/d/bai-specifications"
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
An example of a builder team building on the Powerhouse Vetra Ecosystem and it's complementary Vetra Studio Drive specifications for the different packages be found [here](https://vetra.io/builders/bai)
|
|
73
|
+
|
|
74
|
+
<details>
|
|
75
|
+
<summary>📦 Vetra Remote Drive Commands</summary>
|
|
76
|
+
|
|
77
|
+
Remote drives enable collaborative development by syncing specifications across team members.
|
|
78
|
+
|
|
79
|
+
**Key Commands:**
|
|
80
|
+
- `ph init --remote-drive <url>` - Create a NEW project connected to a remote drive
|
|
81
|
+
- `ph checkout --remote-drive <url>` - Clone an EXISTING project from a remote drive
|
|
82
|
+
- `ph vetra --watch` - Start development with a preview drive for testing local changes
|
|
83
|
+
|
|
84
|
+
**Workflows:**
|
|
85
|
+
- **Project Owner**: `ph init --remote-drive` → Create GitHub repo → Push → `ph vetra` to configure
|
|
86
|
+
- **Collaborator**: `ph checkout --remote-drive` → `ph vetra` to start developing
|
|
87
|
+
|
|
88
|
+
**Preview Drive (`--watch` mode):**
|
|
89
|
+
- Main "Vetra" drive syncs with remote and contains stable package configuration
|
|
90
|
+
- "Vetra Preview" drive is created locally for testing document models before syncing
|
|
91
|
+
- When restarting Vetra always use `vetra --watch` so it loads local documents & editors.
|
|
92
|
+
|
|
93
|
+
→ [Full Vetra Remote Drive Reference](/academy/APIReferences/VetraRemoteDrive)
|
|
94
|
+
|
|
95
|
+
</details>
|