@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.
Files changed (42) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/docs/academy/01-GetStarted/00-ExploreDemoPackage.mdx +11 -11
  3. package/docs/academy/01-GetStarted/01-CreateNewPowerhouseProject.md +22 -5
  4. package/docs/academy/01-GetStarted/02-DefineToDoListDocumentModel.md +2 -20
  5. package/docs/academy/01-GetStarted/03-ImplementOperationReducers.md +2 -3
  6. package/docs/academy/01-GetStarted/05-BuildToDoListEditor.md +4 -4
  7. package/docs/academy/01-GetStarted/home.mdx +43 -104
  8. package/docs/academy/01-GetStarted/images/DocumentModelOperations.png +0 -0
  9. package/docs/academy/01-GetStarted/styles.module.css +30 -6
  10. package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/02-VetraStudio.md +95 -0
  11. package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/{02-StandardDocumentModelWorkflow.md → 03-CreateAPackageWithVetra.md} +202 -33
  12. package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/{03-BuilderTools.md → BuilderTools} +1 -1
  13. package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/02-ConfiguringDrives.md +4 -4
  14. package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/03-BuildingADriveExplorer.md +34 -34
  15. package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/07-Authorization/03-DocumentPermissions.md +387 -0
  16. package/docs/academy/02-MasteryTrack/05-Launch/02-PublishYourProject.md +118 -184
  17. package/docs/academy/02-MasteryTrack/05-Launch/03-SetupEnvironment.md +1 -1
  18. package/docs/academy/02-MasteryTrack/05-Launch/05-DockerDeployment.md +1 -1
  19. package/docs/academy/02-MasteryTrack/_category_.json +1 -1
  20. package/docs/academy/03-ExampleUsecases/00-Overview.mdx +60 -0
  21. package/docs/academy/03-ExampleUsecases/Chatroom/02-CreateNewPowerhouseProject.md +38 -16
  22. package/docs/academy/03-ExampleUsecases/Chatroom/03-DefineChatroomDocumentModel.md +11 -14
  23. package/docs/academy/03-ExampleUsecases/Chatroom/04-ImplementOperationReducers.md +12 -95
  24. package/docs/academy/03-ExampleUsecases/Chatroom/05-ImplementChatroomEditor.md +30 -20
  25. package/docs/academy/03-ExampleUsecases/Chatroom/{06-LaunchALocalReactor.md → 06-LaunchALocalReactor} +13 -8
  26. package/docs/academy/03-ExampleUsecases/VetraPackageLibrary/VetraPackageLibrary.md +13 -0
  27. package/docs/academy/03-ExampleUsecases/_category_.json +9 -0
  28. package/docs/academy/04-APIReferences/00-PowerhouseCLI.md +168 -15
  29. package/docs/academy/04-APIReferences/01-ReactHooks.md +7 -0
  30. package/docs/academy/04-APIReferences/04-RelationalDatabase.md +6 -0
  31. package/docs/academy/04-APIReferences/renown-sdk/03-CLIIdentity.md +321 -0
  32. package/docs/academy/05-Architecture/00-PowerhouseArchitecture.md +46 -11
  33. package/docs/academy/07-Cookbook.md +598 -145
  34. package/docs/academy/08-Glossary.md +1 -1
  35. package/docusaurus.config.ts +13 -35
  36. package/package.json +1 -1
  37. package/sidebars.ts +11 -11
  38. package/src/css/custom.css +28 -30
  39. package/src/theme/DocSidebarItem/Category/index.tsx +47 -0
  40. package/tsconfig.tsbuildinfo +1 -1
  41. package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/05-VetraStudio.md +0 -253
  42. 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 app.
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 app in studio mode
83
+ ## Step 4: Run the connect host application.
84
84
 
85
- To run the package locally in Connect Studio (our collaboration and contributor app), run:
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 Studio appear in your browser.
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 Studio interface.</figcaption>
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 **Drive App** specific to the to-do document model.
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 '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)
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 **Drive App** field, select 'To-do Drive App'
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 Drive App interface—you'll see that it tracks your tasks and displays a progress bar
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 Drive Apps**.
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 apps in the Mastery Track: [Drive Apps and Drive Explorers](/academy/MasteryTrack/BuildingUserExperiences/BuildingADriveExplorer).
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
- ➜ Local: http://localhost:3000/
162
- ➜ Network: http://192.168.5.110:3000/
163
- ➜ press h + enter to show help
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. If it doesn't open automatically, you can open it manually by navigating to `http://localhost:3000/` in your browser.
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 Modesl '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.
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. Once you have added all the input operations, click the `Export` button at the top right of the editor to save the document model specification document to your local machine. Ideally, you should save your file in the root of your Powerhouse project on your machine.
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. If not, you can revisit the [Define TodoList Document Model](/academy/GetStarted/DefineToDoListDocumentModel) section.
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
- ## Understanding reducers in document models
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 `ph generate --editor`
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 Connect Studio
524
- ph connect
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 Drive Apps or Drive Explorers.
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={{ fontSize: '1.1rem', marginBottom: '1rem' }}><strong>Welcome to Powerhouse Vetra!</strong></p>
24
- <p style={{ lineHeight: '1.6', color: '#444' }}>As a developer, you're about to dive into a <strong>unique ecosystem built to empower decentralized organizations</strong>. Powerhouse Vetra provides the software, infrastructure, and frameworks that enable scalable network organizations to operate efficiently.</p>
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} style={{ border: "1px solid #4FC86F" }}>
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, Builder Track Image, Work with Data */}
71
+ {/* Row 2: Build User Experiences, Launch, Work with Data */}
75
72
 
76
- <div className={styles.pathCard} style={{ border: "1px solid #4FC86F" }}>
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
- Build a todo-list editor
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
- justifyContent: "center",
117
- alignItems: "flex-start",
118
- paddingTop: "-20px",
96
+ flexDirection: "column",
97
+ justifyContent: "space-between",
98
+ alignItems: "center",
119
99
  position: "relative",
100
+ height: "100%",
120
101
  }}
121
102
  >
122
- <img src="/img/Union.svg" alt="Powerhouse Union" width="250" />
123
- <div className={styles.masteryTrackTitle}>
124
- <h3 className="card-title" style={{ margin: 0 }}>
125
- Mastery track
126
- </h3>
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} style={{ border: "1px solid #4FC86F" }}>
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
- href="/academy/MasteryTrack/WorkWithData/UsingTheAPI"
144
- className="path-button"
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
 
@@ -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
- background: var(--ifm-color-emphasis-100);
116
- border-color: var(--ifm-color-emphasis-200);
117
- color: var(--ifm-font-color-primary);
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: var(--ifm-color-emphasis-200);
122
- border-color: var(--ifm-color-emphasis-300);
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>