@powerhousedao/academy 0.1.0-dev.0
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/.vscode/settings.json +3 -0
- package/CHANGELOG.md +9 -0
- package/Dockerfile +31 -0
- package/ProcFile +1 -0
- package/README.md +43 -0
- package/babel.config.js +3 -0
- package/blog/BeyondCommunication-ABlueprintForDevelopment.md +88 -0
- package/blog/TheChallengeOfChange.md +86 -0
- package/blog/images/Iteration.png +0 -0
- package/blog/images/RAD.png +0 -0
- package/docs/academy/01-GetStarted/00-GetStarted.mdx +181 -0
- package/docs/academy/01-GetStarted/01_InstallDemoPackage.md +38 -0
- package/docs/academy/01-GetStarted/02-ToDoList/01-CreateNewPowerhouseProject.md +97 -0
- package/docs/academy/01-GetStarted/02-ToDoList/02-DefineToDoListDocumentModel.md +86 -0
- package/docs/academy/01-GetStarted/02-ToDoList/03-ImplementOperationReducers.md +201 -0
- package/docs/academy/01-GetStarted/02-ToDoList/04-BuildToDoListEditor.md +494 -0
- package/docs/academy/01-GetStarted/02-ToDoList/_category_.json +8 -0
- package/docs/academy/01-GetStarted/02-ToDoList/images/DocumentModelHeader.png +0 -0
- package/docs/academy/01-GetStarted/02-ToDoList/images/DocumentModelOperations.png +0 -0
- package/docs/academy/01-GetStarted/02-ToDoList/images/OpenDocumentModelEditor.gif +0 -0
- package/docs/academy/01-GetStarted/02-ToDoList/images/completeEditor.png +0 -0
- package/docs/academy/01-GetStarted/02-ToDoList/images/connectApp.gif +0 -0
- package/docs/academy/01-GetStarted/02-ToDoList/images/form.png +0 -0
- package/docs/academy/01-GetStarted/02-ToDoList/images/mytodolist.gif +0 -0
- package/docs/academy/01-GetStarted/02-ToDoList/images/reducers.png +0 -0
- package/docs/academy/01-GetStarted/02-ToDoList/images/vscode.png +0 -0
- package/docs/academy/01-GetStarted/styles.module.css +99 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/00-BuilderTools.md +234 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/01-SetupBuilderEnvironment.md +247 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/04-UtilitiesAndTips.md +79 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/01-SetupBuilderEnvironment.md +216 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/02-CreateNewPowerhouseProject.md +78 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/03-DefineChatroomDocumentModel.md +139 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/04-ImplementOperationReducers.md +364 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/05-ImplementChatroomEditor.md +194 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/06-LaunchALocalReactor.md +15 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/_category_.json +8 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-1.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-2.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-3.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-4.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-5.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/ChatRoomConnectApp.gif +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/ChatRoomTest.gif +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/completeEditor.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/form.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/reducers.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/vscode.png +0 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/_category_.json +8 -0
- package/docs/academy/02-AdvancedTutorial/01-Create/02-StandardDocumentModelWorkflow.md +229 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/01-BuildingBeautifulDocumentEditors.md +109 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/02-ConfiguringDrives.md +51 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/03-BuildingADriveExplorer.md +174 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/01-OperationHistory.md +67 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/02-RevisionHistoryTimeline.md +132 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/_category_.json +7 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/images/committer-address-popup.png +0 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/images/revision-hash-popup.png +0 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/images/revision-history-list.png +0 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/images/signature-details-popup.png +0 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/_category_.json +8 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/images/CreateDrive.png +0 -0
- package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/images/mytodolist.gif +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/01-ReadingAndWritingThroughTheAPI.mdx +121 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/02-GraphQLAtPowerhouse.md +156 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/03-WorkingWithSubgraphs/02-GraphQLAndSubgraphs.mdx +119 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/03-WorkingWithSubgraphs/03-WorkingWithSubgraphs.md +312 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/03-WorkingWithSubgraphs/_category_.json +8 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/04-analytics-processor.md +342 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/01-SetupBuilderEnvironment.md +215 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/02-CreateNewPowerhouseProject.md +55 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/03-GenerateAnAnalyticsProcessor.md +173 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/04-UpdateAnalyticsProcessor.md +223 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/_category_.json +8 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Create-SPV.gif +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Create-a-new-asset.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Create-a-transaction.gif +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Transaction-table.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/create-a-new-RWA-document.gif +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/granularity.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/QueryingADocumentWithGraphQL.md +244 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/listener-raw.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/raw-reports1.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/raw-reports2.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/rwaRegister.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/apse.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/best-practices.md +60 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/filter.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/filteroptions.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/graphql/index.md +166 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/graphql/integration.md +75 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/dbs.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/high-level.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/indexeddb.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/libs-core.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/libs.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/lod.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/logo.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/navbar.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-1.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-2.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-3.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-4.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-5.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-6.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/paths-1.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/paths-2.jpg +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/intro.md +149 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/benchmarks.md +27 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/browser.md +77 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/compatibility.md +14 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/index.md +230 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/memory.md +72 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/pg.md +63 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/schema.md +14 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/utilities.md +102 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/use-cases/index.md +7 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/use-cases/maker.md +652 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/use-cases/processors.md +3 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/_category_.json +8 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/images/OperationHistory.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/images/OperationsQuery.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/images/QueryDocumentID.png +0 -0
- package/docs/academy/02-AdvancedTutorial/04-WorkWithData/images/SwitchboardButton.png +0 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/00-IntegrateInAFront-End +3 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/01-IntroducingFusion +18 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/02-IntroductionToPackages.md +79 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/02-PublishYourProject.md +230 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/03-RunOnACloudServer.md +279 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/03-SetupEnvironment.md +436 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/04-GraphQLNamespacing +44 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/05-LaunchYourBackend.md +3 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/06-LaunchYourFrontend.md +3 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/_category_.json +8 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/images/SSHConnection.png +0 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/images/homedesign.png +0 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/images/keyconcepts.png +0 -0
- package/docs/academy/02-AdvancedTutorial/05-Launch/images/tutorialschema.png +0 -0
- package/docs/academy/02-AdvancedTutorial/06-Authorization/Authorization.md +100 -0
- package/docs/academy/02-AdvancedTutorial/_category_.json +7 -0
- package/docs/academy/03-APIReferences/00-PowerhouseCLI.md +1 -0
- package/docs/academy/03-APIReferences/_category_.json +7 -0
- package/docs/academy/04-ComponentLibrary/01-PowerhouseDesignSystem.md +94 -0
- package/docs/academy/04-ComponentLibrary/02-BuildingWithScalars.md +54 -0
- package/docs/academy/04-ComponentLibrary/03-Scalar-Components/01-phid-field.mdx +72 -0
- package/docs/academy/04-ComponentLibrary/03-Scalar-Components/02-input-field.mdx +0 -0
- package/docs/academy/04-ComponentLibrary/04-Complex-Components/01-sidebar.mdx +36 -0
- package/docs/academy/04-ComponentLibrary/05-Layout-Components/01-test-toupdate.mdx +61 -0
- package/docs/academy/04-ComponentLibrary/06-Fragments/01-test-toupdate.mdx +61 -0
- package/docs/academy/04-ComponentLibrary/_category_.json +8 -0
- package/docs/academy/05-Architecture/00-PowerhouseArchitecture.md +50 -0
- package/docs/academy/05-Architecture/01-WorkingWithTheReactor.md +48 -0
- package/docs/academy/05-Architecture/02-ReferencingMonorepoPackages +65 -0
- package/docs/academy/05-Architecture/04-MovingBeyondCRUD +61 -0
- package/docs/academy/05-Architecture/05-DocumentModelTheory/01-WhatIsADocumentModel.md +188 -0
- package/docs/academy/05-Architecture/05-DocumentModelTheory/02-DAOandDocumentsModelsQ+A.md +177 -0
- package/docs/academy/05-Architecture/05-DocumentModelTheory/02-domain-modeling.md +103 -0
- package/docs/academy/05-Architecture/05-DocumentModelTheory/03-BenefitsOfDocumentModels.md +95 -0
- package/docs/academy/05-Architecture/05-DocumentModelTheory/05-best-practices.md +257 -0
- package/docs/academy/05-Architecture/05-DocumentModelTheory/_category_.json +8 -0
- package/docs/academy/05-Architecture/05-DocumentModelTheory/three-data-layers.png +0 -0
- package/docs/academy/05-Architecture/_category_.json +7 -0
- package/docs/academy/05-Architecture/images/image.png +0 -0
- package/docs/academy/06-Cookbook.md +905 -0
- package/docs/academy/07-Glossary.md +50 -0
- package/docs/bookofpowerhouse/01-Overview.md +29 -0
- package/docs/bookofpowerhouse/02-GeneralFrameworkAndPhilosophy.md +15 -0
- package/docs/bookofpowerhouse/03-PowerhouseSoftwareArchitecture.md +33 -0
- package/docs/bookofpowerhouse/04-DevelopmentApproaches.md +36 -0
- package/docs/bookofpowerhouse/05-SNOsandANewModelForOSSandPublicGoods.md +73 -0
- package/docs/bookofpowerhouse/06-SNOsInActionAndPlatformEconomies.md +17 -0
- package/docs/renown/01-intro.md +18 -0
- package/docs/renown/02-renown-login-flow.md +60 -0
- package/docusaurus +0 -0
- package/docusaurus.config.ts +170 -0
- package/package.json +50 -0
- package/powerhouse-docs@0.0.0 +0 -0
- package/sidebars.ts +33 -0
- package/src/components/HomepageFeatures/index.tsx +250 -0
- package/src/components/HomepageFeatures/styles.module.css +267 -0
- package/src/css/custom.css +450 -0
- package/src/pages/index.module.css +37 -0
- package/src/pages/index.tsx +42 -0
- package/src/pages/markdown-page.md +7 -0
- package/static/.nojekyll +0 -0
- package/static/fonts/FranieBold.otf +0 -0
- package/static/fonts/FranieRegular.otf +0 -0
- package/static/img/Powerhouse Website Drive.png +0 -0
- package/static/img/Powerhouse Website Storage Layer (1).png +0 -0
- package/static/img/Powerhouse Website Storage Layer.png +0 -0
- package/static/img/Powerhouse-main-light.svg +13 -0
- package/static/img/Powerhouse-main.svg +13 -0
- package/static/img/Renown Intro Diagram.png +0 -0
- package/static/img/Union.svg +3 -0
- package/static/img/academy/icons/Advanced.svg +4 -0
- package/static/img/academy/icons/Book.svg +5 -0
- package/static/img/academy/icons/Cookbook.svg +3 -0
- package/static/img/academy/icons/Create.svg +3 -0
- package/static/img/academy/icons/Data.svg +3 -0
- package/static/img/academy/icons/Editor.svg +3 -0
- package/static/img/academy/icons/Flash.svg +3 -0
- package/static/img/academy/icons/Launch.svg +3 -0
- package/static/img/academy-icon.png +0 -0
- package/static/img/connect-icon.png +0 -0
- package/static/img/connect.png +0 -0
- package/static/img/docusaurus-social-card.jpg +0 -0
- package/static/img/docusaurus.png +0 -0
- package/static/img/empty-background.png +0 -0
- package/static/img/favicon.ico +0 -0
- package/static/img/fusion-icon.png +0 -0
- package/static/img/fusion.png +0 -0
- package/static/img/ph-icon-light.svg +3 -0
- package/static/img/powerhouse-layer.png +0 -0
- package/static/img/powerhouse-storage-layer.png +0 -0
- package/static/img/reactor.png +0 -0
- package/static/img/renown-icon.png +0 -0
- package/static/img/renown.png +0 -0
- package/static/img/switchboard-icon.png +0 -0
- package/static/img/switchboard.png +0 -0
- package/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/static/img/undraw_docusaurus_react.svg +170 -0
- package/static/img/undraw_docusaurus_tree.svg +40 -0
- package/static/img/video-placeholder.svg +16 -0
- package/static.json +7 -0
- package/tsconfig.json +7 -0
package/CHANGELOG.md
ADDED
package/Dockerfile
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1
|
|
2
|
+
|
|
3
|
+
# Stage 1: Base image.
|
|
4
|
+
## Start with a base image containing NodeJS so we can build Docusaurus.
|
|
5
|
+
FROM node:lts AS base
|
|
6
|
+
## Disable colour output from yarn to make logs easier to read.
|
|
7
|
+
ENV FORCE_COLOR=0
|
|
8
|
+
## Enable corepack.
|
|
9
|
+
RUN corepack enable
|
|
10
|
+
## Set the working directory to `/opt/docusaurus`.
|
|
11
|
+
WORKDIR /opt/docusaurus
|
|
12
|
+
|
|
13
|
+
# Stage 2b: Production build mode.
|
|
14
|
+
FROM base AS prod
|
|
15
|
+
## Set the working directory to `/opt/docusaurus`.
|
|
16
|
+
WORKDIR /opt/docusaurus
|
|
17
|
+
## Copy over the source code.
|
|
18
|
+
COPY . /opt/docusaurus/
|
|
19
|
+
## Install dependencies with `--frozen-lockfile` to ensure reproducibility.
|
|
20
|
+
RUN pnpm install --frozen-lockfile
|
|
21
|
+
## Build the static site.
|
|
22
|
+
RUN pnpm build
|
|
23
|
+
|
|
24
|
+
# Stage 3a: Serve with `docusaurus serve`.
|
|
25
|
+
FROM prod AS serve
|
|
26
|
+
## Expose the port that Docusaurus will run on.
|
|
27
|
+
ENV PORT=3000
|
|
28
|
+
EXPOSE $PORT
|
|
29
|
+
## Run the production server.
|
|
30
|
+
ENTRYPOINT pnpm serve --host 0.0.0.0 --no-open --port $PORT
|
|
31
|
+
|
package/ProcFile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
web: npm run serve -- --port $PORT --host 0.0.0.0
|
package/README.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Website
|
|
2
|
+
|
|
3
|
+
This documentation website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
|
|
4
|
+
To contribute to the documentation please work on a feature branch in case of big refactors, and build & serve before pushing to the development branch.
|
|
5
|
+
Pushing from the dev branch to the main branch will trigger an auto deployment in Heroku for the staging deployment.
|
|
6
|
+
|
|
7
|
+
### Installation
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
$ npm install
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Local Development
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
$ npm run dev
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
|
|
20
|
+
|
|
21
|
+
### Build
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
$ npm run build
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This command generates static content into the `build` directory and can be served using any static contents hosting service.
|
|
28
|
+
|
|
29
|
+
### Deployment
|
|
30
|
+
|
|
31
|
+
Using SSH:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
$ USE_SSH=true yarn deploy
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Not using SSH:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
$ GIT_USER=<Your GitHub username> yarn deploy
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
|
package/babel.config.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Beyond Communication - A Blueprint for Development
|
|
3
|
+
description: GraphQL Schema’s as a common language for software design
|
|
4
|
+
slug: Graphql-schema-as-a-common-language
|
|
5
|
+
authors:
|
|
6
|
+
- name: Call me T.
|
|
7
|
+
title: Product Manager at Powerhouse
|
|
8
|
+
image_url: https://avatars.githubusercontent.com/u/148560082?v=4
|
|
9
|
+
socials:
|
|
10
|
+
x: https://x.com/0xCallme_t
|
|
11
|
+
tags: [Design thinking, Tooling, Product, GraphQL, Schema's]
|
|
12
|
+
image: https://i.imgur.com/mErPwqL.png
|
|
13
|
+
hide_table_of_contents: false
|
|
14
|
+
---
|
|
15
|
+
GraphQL Schema’s as a common language for software design, bridging the gaps between all stakeholders with the help of a single source of truth document model.
|
|
16
|
+
|
|
17
|
+
<!-- truncate -->
|
|
18
|
+
|
|
19
|
+
#### In software development, all to common, communication barriers between designers, developers, and non-technical stakeholders are a common cause of inefficiency. Misunderstandings lead to wasted effort, missed deadlines, and ultimately, a product that fails to meet its intended purpose. These "lost in translation" moments plague projects of all sizes, creating a gap between what stakeholders envision and what gets built.
|
|
20
|
+
|
|
21
|
+
#### GraphQL, with its intuitive schema definition, offers a solution. Acting as a lingua franca—a common language—GraphQL bridges communication gaps, aligning stakeholders across disciplines and ensuring that everyone speaks the same language when discussing data and workflows.
|
|
22
|
+
|
|
23
|
+
#### **GraphQL Schema as a Lingua Franca**
|
|
24
|
+
|
|
25
|
+
#### At its core, a GraphQL schema is a structured representation of a system’s data: its types, relationships, and operations. Unlike traditional API documentation, GraphQL schemas are inherently interactive and precise, making them accessible as a single source of truth that aligns both technical and non-technical stakeholders.
|
|
26
|
+
|
|
27
|
+
#### For non-technical contributors, schemas offer a clear, readable map of how data flows through a system. Business analysts, product managers, and designers can quickly grasp the relationships between data types and operations without needing to dive into code. “**For developers, schemas serve as a contract, reducing ambiguity during implementation**”. Queries and mutations clearly define how data can be fetched or modified, leaving little room for misinterpretation.
|
|
28
|
+
|
|
29
|
+
####
|
|
30
|
+
|
|
31
|
+
#### By bringing clarity to these conversations, GraphQL fosters collaboration within cross-functional teams and accelerates onboarding for new contributors.
|
|
32
|
+
|
|
33
|
+
### **Beyond Communication: A Blueprint for Development**
|
|
34
|
+
|
|
35
|
+
The utility of GraphQL schemas extends far beyond communication. They act as a blueprint that shapes every phase of the development lifecycle:
|
|
36
|
+
|
|
37
|
+
* **Planning and Design**:
|
|
38
|
+
* During the design phase, schemas enable teams to validate assumptions early. Data requirements and workflows can be reviewed collaboratively, ensuring alignment before development begins.
|
|
39
|
+
* **Implementation**:
|
|
40
|
+
* Developers use schemas as a definitive source of truth, minimizing the need for rework caused by unclear specifications.
|
|
41
|
+
* **Testing and Maintenance**:
|
|
42
|
+
* When the schema evolves, it highlights changes or inconsistencies, making it easier to adapt systems without breaking existing functionality.
|
|
43
|
+
|
|
44
|
+
The result is a smoother development process, where every stakeholder operates with a shared understanding of the system’s architecture.
|
|
45
|
+
|
|
46
|
+
### **GraphQL and CQRS: A Perfect Match**
|
|
47
|
+
|
|
48
|
+
GraphQL's design pairs naturally with the Command Query Responsibility Segregation (CQRS) pattern, which separates read and write operations to improve scalability and performance.
|
|
49
|
+
|
|
50
|
+
In a CQRS-driven architecture:
|
|
51
|
+
|
|
52
|
+
* **Queries** retrieve data efficiently.
|
|
53
|
+
* **Mutations** handle data modifications.
|
|
54
|
+
* **Subscriptions** enable real-time updates.
|
|
55
|
+
|
|
56
|
+
GraphQL’s separation of these operations ensures clarity and scalability, especially in distributed systems. Developers can optimize read and write models independently, leading to improved performance and maintainability. This structured approach also simplifies troubleshooting and ensures a smoother evolution of complex systems.
|
|
57
|
+
|
|
58
|
+
### **GraphQL and TypeScript: A Dynamic Duo**
|
|
59
|
+
|
|
60
|
+
GraphQL’s strong typing makes it a natural ally for TypeScript, a language known for its type safety and developer-friendly features. Together, they form a powerful combination that enhances developer experience and system reliability.
|
|
61
|
+
|
|
62
|
+
* **Type Safety Across the Stack**:
|
|
63
|
+
* Developers can auto-generate TypeScript types from GraphQL schemas, ensuring consistency between client and server. This reduces boilerplate code and eliminates many common runtime errors.
|
|
64
|
+
* **Improved Developer Productivity**:
|
|
65
|
+
* With type safety built into both the API and the client code, developers can catch potential issues during development, saving time and reducing bugs.
|
|
66
|
+
* **Seamless Front-End Integrations**:
|
|
67
|
+
* For front-end teams, GraphQL and TypeScript streamline the process of building data-driven applications, ensuring that APIs and components stay in sync.
|
|
68
|
+
|
|
69
|
+
This synergy results in cleaner, more reliable code and a significantly improved development experience.
|
|
70
|
+
|
|
71
|
+
### **Efficiency Gains from GraphQL**
|
|
72
|
+
|
|
73
|
+
Beyond fostering better communication and aligning stakeholders, GraphQL drives efficiency in several key ways:
|
|
74
|
+
|
|
75
|
+
* **Streamlined API Development**:
|
|
76
|
+
* With its declarative queries, GraphQL eliminates over-fetching and under-fetching of data, allowing front-end teams to request only what they need.
|
|
77
|
+
* **Empowered Non-Technical Contributors**:
|
|
78
|
+
* The interactive nature of GraphQL schemas makes them accessible to non-technical stakeholders, enabling them to explore APIs independently and contribute more effectively to design discussions. The ‘lingua franca’ characteristic now truly starts to live up to its promises as designer or business analysts now can interact with the base schema and steer and discuss potential solutions together with the development team.
|
|
79
|
+
* **Real-Time Introspection**:
|
|
80
|
+
* Tools like GraphQL Playground allow teams to inspect and test APIs dynamically, making development and debugging faster and more collaborative.
|
|
81
|
+
|
|
82
|
+
These features combine to create a more agile, responsive development environment, where teams can adapt quickly to changing requirements.
|
|
83
|
+
|
|
84
|
+
### **A Shared Vision Through GraphQL**
|
|
85
|
+
|
|
86
|
+
The success of any software project hinges on clear communication and shared understanding. GraphQL schemas provide the common language that teams need to align around a unified vision. From clarifying data relationships to supporting scalable architectures, GraphQL empowers organizations to overcome the "lost in translation" problem and focus on what truly matters: building great products.
|
|
87
|
+
|
|
88
|
+
For teams seeking to improve collaboration, efficiency, and scalability, GraphQL is more than a tool—it’s a framework for shared success,
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: The Challenge of Change
|
|
3
|
+
description: Rapid Application Development with document models.
|
|
4
|
+
slug: Rapid-Application-Development-with-document-models.
|
|
5
|
+
authors:
|
|
6
|
+
- name: Call me T.
|
|
7
|
+
title: Product Manager at Powerhouse
|
|
8
|
+
image_url: https://avatars.githubusercontent.com/u/148560082?v=4
|
|
9
|
+
socials:
|
|
10
|
+
x: https://x.com/0xCallme_t
|
|
11
|
+
tags: [Dao, Tooling]
|
|
12
|
+
image: https://i.imgur.com/mErPwqL.png
|
|
13
|
+
hide_table_of_contents: false
|
|
14
|
+
---
|
|
15
|
+
### **The Challenge of Change**
|
|
16
|
+
|
|
17
|
+
The pace of innovation is relentless. Organizations today find themselves in a race to adapt to new technologies, shifting consumer demands, and evolving or opaque regulations. Yet, the traditional methods of building and maintaining software systems often lag behind the speed of change, creating bottlenecks that stifle growth and innovation.
|
|
18
|
+
|
|
19
|
+
The pace of innovation often outstrips an organization’s ability to adapt, keep up with rapidly changing requirements, shifting goals, and technological advancements.
|
|
20
|
+
|
|
21
|
+
<!-- truncate -->
|
|
22
|
+
|
|
23
|
+
Across many industries, this comes down to a familiar struggle of common trade-offs in product and solution development.
|
|
24
|
+
|
|
25
|
+
**\- Speed vs. Accuracy:** The balance between haste or precision
|
|
26
|
+
**\- Customizability vs. Scalability:** Meeting specific needs or relentless standardisation
|
|
27
|
+
|
|
28
|
+
As businesses push to innovate, they face a crucial question: how can they accelerate development without sacrificing quality or flexibility?
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
### **The Power of Accelerated Development**
|
|
33
|
+
|
|
34
|
+

|
|
35
|
+
|
|
36
|
+
The answer lies in embracing methodologies that prioritize agility and adaptability. Rapid Application Development (RAD) represents a fundamental shift in how organizations approach software and workflow creation. It is not just a faster way to build systems—it’s a way to empower teams to iterate, test, and refine their ideas with unprecedented efficiency.
|
|
37
|
+
|
|
38
|
+
Key benefits of RAD include:
|
|
39
|
+
|
|
40
|
+
* **Rapid Prototyping**: Organizations can quickly test ideas without committing to large-scale development, allowing for faster feedback and iteration.
|
|
41
|
+
* **Iterative Development**: Instead of delivering a finished product all at once, RAD emphasizes incremental improvements, reducing the risk of misaligned expectations.
|
|
42
|
+
* **Adaptability to Change**: By designing with flexibility in mind, RAD allows organizations to pivot and respond to new demands or challenges with ease.
|
|
43
|
+
|
|
44
|
+
These principles have been widely embraced in industries ranging from DAO’s, incubators, tech startups to multinational corporations (in the case of the latter often with the help of a high ticket consultant). Other methodologies from adjacent domains of RAD, that you might be more familiar with include:
|
|
45
|
+
|
|
46
|
+
* **Lean Start-up Methodology**: Focussing on finding product market fit early with a minimum viable product through a build, measure, learn cycle.
|
|
47
|
+
* **Pre-totyping:** A method by Google's first engineering director focused on validating that you are building the ‘right it’ before you ‘build it’ right with the help of smoke tests or mock-ups.
|
|
48
|
+
* **Design-thinking:** Where designers & developers go through non-linear, iterative processes of discovery, definition, development & delivery of their ideas with the help of prototyping together with end-users.
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+

|
|
52
|
+
*Figure 1: Notice how Design thinking, Lean Startup Methodology and Rapid Application Development all rely on tooling that put rapid iteration at the center of the methodology? It remains crucial to select the right tool with the correct prototype fidelity at any of the stages these methodologies prescribe*
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### **Why Traditional Methods Fall Short**
|
|
57
|
+
|
|
58
|
+
Despite their success in simpler times, traditional development methodologies are currently often falling short in today’s dynamic environments.
|
|
59
|
+
|
|
60
|
+
* **Long Lead Times**: Developing complex systems from scratch can take months or even years, by which time business requirements may have shifted.
|
|
61
|
+
* **Limited Customization**: Off-the-shelf solutions may be fast to deploy but rarely align perfectly with an organization’s unique workflows.
|
|
62
|
+
* **High Costs of Change**: Adjusting systems mid-development often incurs significant costs and delays, making organizations hesitant to pivot.
|
|
63
|
+
|
|
64
|
+
To overcome these challenges, businesses need a new approach—one that combines speed, flexibility, and precision.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### **How Powerhouse Bridges the Gap**
|
|
69
|
+
|
|
70
|
+
Powerhouse is proposing a framework built to address these very challenges, offering a platform that marries the speed of RAD with the depth of customization modern organizations demand.
|
|
71
|
+
|
|
72
|
+
At the core of Powerhouse’s approach is its **document model-driven architecture**, a GraphQL schema based foundation that reimagines how data, workflows, and processes are structured. This architecture enables organizations to:
|
|
73
|
+
|
|
74
|
+
* **Capture Data Effectively**: Modular document models allow organizations to define and adapt workflows with higher accuracy.
|
|
75
|
+
* **Automate Workflows**: With tools to streamline even the most complex processes, so organizations can focus on innovation instead of repetitive tasks.
|
|
76
|
+
* **Iterate and Evolve Rapidly**: Modular, reusable components reduce development times, enabling organizations to adapt to their most pressing challenges and changes.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### **From a front-end developers perspective**
|
|
81
|
+
|
|
82
|
+
>“The coolest part is being able to plug into any document model and start building UI components for it without the hassle of managing a 'backend' or 'state management' for the components. All front-end devs use and love redux, the event driven architecture these document models are using. But the fact that as a front end dev, you don't have to set up any of it, and can just plug into the underlying framework saves time. It allows me to focus on my actual tasks \- building awesome UI components and experiences. I could start thinking of the same document model but with a 1000 different UI’s depending on the user's specific needs and preferences. Like swapping skins in my favorite video game”
|
|
83
|
+
|
|
84
|
+
The rapid application development process we’re setting up, allows us to move quicker from initial problem definition to potential prototype opens up time for designers and developers to actually test and iterate on their imagined solution.
|
|
85
|
+
|
|
86
|
+
By prioritizing rapid, iterative development, Powerhouse aims to empower organizations to innovate faster, adapt more seamlessly, and achieve sustainable growth in even the most challenging environments.
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Get Started
|
|
3
|
+
sidebar_label: Get Started
|
|
4
|
+
sidebar_position: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import styles from './styles.module.css';
|
|
9
|
+
import BrowserOnly from '@docusaurus/BrowserOnly';
|
|
10
|
+
|
|
11
|
+
<div className={styles.learningPath}>
|
|
12
|
+
{/* Get Started Card - Full Width */}
|
|
13
|
+
<div className={`${styles.pathCard} ${styles.fullWidth}`}>
|
|
14
|
+
<div className={styles.cardHeader} style={{ justifyContent: 'center' }}>
|
|
15
|
+
<div className={styles.cardIconWrapper}>
|
|
16
|
+
<img src="/img/academy/icons/Flash.svg" alt="" />
|
|
17
|
+
</div>
|
|
18
|
+
<h3 className="card-title">Get started</h3>
|
|
19
|
+
</div>
|
|
20
|
+
<div className={styles.cardContent}>
|
|
21
|
+
<div style={{ maxWidth: '960px', margin: '0 auto', textAlign: 'center' }}>
|
|
22
|
+
<div style={{ marginBottom: '1.5rem' }}>
|
|
23
|
+
<p style={{ fontSize: '1.1rem', marginBottom: '1rem' }}><strong>Welcome to Powerhouse!</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 provides the software, infrastructure, and frameworks that enable scalable network organizations to operate efficiently.</p>
|
|
25
|
+
</div>
|
|
26
|
+
<div style={{ margin: '20px 0', textAlign: 'center' }}>
|
|
27
|
+
<iframe
|
|
28
|
+
src="https://drive.google.com/file/d/17dDKy-hQeI4ZlLiUZ4xhnXL4bDhJB0N-/preview"
|
|
29
|
+
frameBorder="0"
|
|
30
|
+
allow="autoplay; fullscreen"
|
|
31
|
+
allowFullScreen
|
|
32
|
+
title="Powerhouse Introduction Video"
|
|
33
|
+
style={{
|
|
34
|
+
width: '100%', // Take full width of container
|
|
35
|
+
maxWidth: '960px', // Max width like the container
|
|
36
|
+
aspectRatio: '16 / 9', // Maintain aspect ratio
|
|
37
|
+
borderRadius: '8px',
|
|
38
|
+
display: 'block', // Ensure it behaves like a block element
|
|
39
|
+
margin: '0 auto' // Center it if container allows
|
|
40
|
+
}}
|
|
41
|
+
></iframe>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
{/* Create Cards - One in each column */}
|
|
48
|
+
<div className={styles.pathCard}>
|
|
49
|
+
<div className={styles.cardHeader}>
|
|
50
|
+
<div className={styles.cardIconWrapper}>
|
|
51
|
+
<img src="/img/academy/icons/Book.svg" alt="" />
|
|
52
|
+
</div>
|
|
53
|
+
<h3 className="card-title">Book of Powerhouse</h3>
|
|
54
|
+
</div>
|
|
55
|
+
<div className={styles.cardContent}>
|
|
56
|
+
<a href="/docs/bookofpowerhouse/Overview" className="path-button">The Vision of Powerhouse</a>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div className={styles.pathCard} style={{ border: '1px solid #4FC86F' }}>
|
|
61
|
+
<div className={styles.cardHeader}>
|
|
62
|
+
<div className={styles.cardIconWrapper}>
|
|
63
|
+
<img src="/img/academy/icons/Create.svg" alt="" />
|
|
64
|
+
</div>
|
|
65
|
+
<h3 className="card-title">Create</h3>
|
|
66
|
+
</div>
|
|
67
|
+
<div className={styles.cardContent}>
|
|
68
|
+
<a href="/docs/academy/GetStarted/ToDoList/CreateNewPowerhouseProject" className="path-button">Build a Todo-list Document Model</a>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
<div className={styles.pathCard}>
|
|
73
|
+
<div className={styles.cardHeader}>
|
|
74
|
+
<div className={styles.cardIconWrapper}>
|
|
75
|
+
<img src="/img/academy/icons/Advanced.svg" alt="" />
|
|
76
|
+
</div>
|
|
77
|
+
<h3 className="card-title">Document Model Theory</h3>
|
|
78
|
+
</div>
|
|
79
|
+
<div className={styles.cardContent}>
|
|
80
|
+
<a href="/docs/academy/GetStarted/DocumentModelTheory/WhatIsADocumentModel" className="path-button">Deep Dive into Document Modelling</a>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
{/* Left Column Card with 2 buttons */}
|
|
85
|
+
<div className={styles.pathCard} style={{ border: '1px solid #4FC86F' }}>
|
|
86
|
+
<div className={styles.cardHeader}>
|
|
87
|
+
<div className={styles.cardIconWrapper}>
|
|
88
|
+
<img src="/img/academy/icons/Editor.svg" alt="" />
|
|
89
|
+
</div>
|
|
90
|
+
<h3 className="card-title">Build User Experiences</h3>
|
|
91
|
+
</div>
|
|
92
|
+
<div className={styles.cardContent}>
|
|
93
|
+
<a href="/docs/academy/GetStarted/ToDoList/BuildToDoListEditor" className="path-button">Building a Todo-list Editor</a>
|
|
94
|
+
<a href="/docs/academy/BuildingUserExperiences/BuildingBeautifulDocumentEditors" className="path-button">Building Beautiful Document Editors</a>
|
|
95
|
+
<a href="/docs/academy/AdvancedTutorial/BuildingUserExperiences/BuildingADriveExplorer" className="path-button">Building Custom Drive Explorers</a>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
{/* Middle column with Union.svg */}
|
|
100
|
+
<div className={styles.middleColumn} style={{
|
|
101
|
+
display: 'flex',
|
|
102
|
+
justifyContent: 'center',
|
|
103
|
+
alignItems: 'flex-start',
|
|
104
|
+
paddingTop: '-20px',
|
|
105
|
+
position: 'relative'
|
|
106
|
+
}}>
|
|
107
|
+
<img src="/img/Union.svg" alt="Powerhouse Union" width="250" />
|
|
108
|
+
<div style={{
|
|
109
|
+
position: 'absolute',
|
|
110
|
+
top: '18px',
|
|
111
|
+
backgroundColor: 'white',
|
|
112
|
+
padding: '8px 16px',
|
|
113
|
+
borderRadius: '8px',
|
|
114
|
+
textAlign: 'center',
|
|
115
|
+
zIndex: 2,
|
|
116
|
+
}}>
|
|
117
|
+
<h3 className="card-title" style={{ margin: 0 }}>Builder Track</h3>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
|
|
121
|
+
{/* Right Column Card with 3 buttons */}
|
|
122
|
+
<div className={styles.pathCard} style={{ border: '1px solid #4FC86F' }}>
|
|
123
|
+
<div className={styles.cardHeader}>
|
|
124
|
+
<div className={styles.cardIconWrapper}>
|
|
125
|
+
<img src="/img/academy/icons/Data.svg" alt="" />
|
|
126
|
+
</div>
|
|
127
|
+
<h3 className="card-title">Work with Data</h3>
|
|
128
|
+
</div>
|
|
129
|
+
<div className={styles.cardContent}>
|
|
130
|
+
<a href="//docs/academy/AdvancedTutorial/WorkWithData/ReadingAndWritingThroughTheAPI" className="path-button">Reading & Writing through the API</a>
|
|
131
|
+
<a href="/docs/academy/AdvancedTutorial/WorkWithData/WorkingWithSubgraphs" className="path-button">Create your own Subgraph</a>
|
|
132
|
+
<a href="/docs/academy/WorkWithData/Analytics Engine/intro" className="path-button">Using the Analytics Engine</a>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
|
|
136
|
+
{/* Launch Card - Full Width with 3 column buttons */}
|
|
137
|
+
<div className={`${styles.pathCard} ${styles.fullWidth}`}>
|
|
138
|
+
<div className={styles.cardHeader} style={{ justifyContent: 'center' }}>
|
|
139
|
+
<div className={styles.cardIconWrapper}>
|
|
140
|
+
<img src="/img/academy/icons/Launch.svg" alt="" />
|
|
141
|
+
</div>
|
|
142
|
+
<h3 className="card-title">Launch</h3>
|
|
143
|
+
</div>
|
|
144
|
+
<div className={styles.cardContent}>
|
|
145
|
+
<div className={styles.buttonContainer}>
|
|
146
|
+
<a href="/docs/academy/AdvancedTutorial/Launch/PublishYourProject" className="path-button">Package & Publish</a>
|
|
147
|
+
<a href="/docs/academy/Launch/LaunchYourBackend" className="path-button">Launch Back-end</a>
|
|
148
|
+
<a href="/docs/academy/Launch/LaunchYourFrontend" className="path-button">Launch Front-end</a>
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
{/* Cookbook Card - Left Column */}
|
|
154
|
+
<div className={styles.pathCard}>
|
|
155
|
+
<div className={styles.cardHeader}>
|
|
156
|
+
<div className={styles.cardIconWrapper}>
|
|
157
|
+
<img src="/img/academy/icons/Cookbook.svg" alt="" />
|
|
158
|
+
</div>
|
|
159
|
+
<h3 className="card-title">Cookbook</h3>
|
|
160
|
+
</div>
|
|
161
|
+
<div className={styles.cardContent}>
|
|
162
|
+
<a href="/docs/academy/Cookbook" className="path-button">Powerhouse Recipes</a>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
|
|
166
|
+
{/* Empty middle column */}
|
|
167
|
+
<div></div>
|
|
168
|
+
|
|
169
|
+
{/* Advanced Topics Card - Right Column */}
|
|
170
|
+
<div className={styles.pathCard}>
|
|
171
|
+
<div className={styles.cardHeader}>
|
|
172
|
+
<div className={styles.cardIconWrapper}>
|
|
173
|
+
<img src="/img/academy/icons/Advanced.svg" alt="" />
|
|
174
|
+
</div>
|
|
175
|
+
<h3 className="card-title">Advanced Topics</h3>
|
|
176
|
+
</div>
|
|
177
|
+
<div className={styles.cardContent}>
|
|
178
|
+
<a href="/docs/academy/Architecture/PowerhouseArchitecture" className="path-button">Learn More</a>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Install the Demo Package
|
|
2
|
+
|
|
3
|
+
:::tip
|
|
4
|
+
To give you a quick idea of how the Powerhouse ecosystem operates on document models and packages, why don't you try installing a package?
|
|
5
|
+
|
|
6
|
+
Let's get started by installing the Powerhouse command-line tool `ph-cmd` and then using it to install a pre-built demo package with document models & editors.
|
|
7
|
+
:::
|
|
8
|
+
|
|
9
|
+
## Powerhouse CLI
|
|
10
|
+
|
|
11
|
+
You'll use the Powerhouse CLI to launch a local environment with a "Contributor Billing" package. This package demonstrates how you might track and bill for contributions in a project.
|
|
12
|
+
|
|
13
|
+
### Step 1: Install `ph-cmd`
|
|
14
|
+
|
|
15
|
+
First, you need the Powerhouse command-line interface. Open your terminal and run the installation command :
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm install -g ph-cmd
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Verify the installation:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
ph-cmd --version
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Step 2: Install the Contributor Billing Package
|
|
28
|
+
|
|
29
|
+
Now, use `ph` to install the demo package into a globals project.
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Install the package
|
|
33
|
+
ph install contributor-billing
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
This command downloads and sets up the Contributor Billing package, making its features available in your Powerhouse environment.
|
|
37
|
+
|
|
38
|
+
You've now successfully installed `ph-cmd` and added your first package! To run the package locally in Connect, our collaboration & contributor app, you run the `ph connect` command.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Create a Powerhouse Project
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
This tutorial will guide you through creating a new 'Powerhouse project', which primarily consists of a document model and its editor. You'll be using Connect locally, known as 'Studio mode'.
|
|
5
|
+
|
|
6
|
+
## Prerequisites
|
|
7
|
+
- Powerhouse CLI installed: `pnpm install -g ph-cmd`
|
|
8
|
+
- node.js 22 and pnpm installed
|
|
9
|
+
- Visual Studio Code (or your preferred IDE)
|
|
10
|
+
- Terminal/Command Prompt access
|
|
11
|
+
|
|
12
|
+
## Quick Start
|
|
13
|
+
Create a new Powerhouse project with a single command:
|
|
14
|
+
```bash
|
|
15
|
+
ph init
|
|
16
|
+
```
|
|
17
|
+
<details>
|
|
18
|
+
<summary> How to make use of different branches? </summary>
|
|
19
|
+
|
|
20
|
+
When installing or using the Powerhouse CLI commands you are able to make use of the dev & staging branches. These branches contain more experimental features then the latest stable release the PH CLI uses by default. They can be used to get access to a bugfix or features under development.
|
|
21
|
+
|
|
22
|
+
| Command | Description |
|
|
23
|
+
|---------|-------------|
|
|
24
|
+
| **pnpm install -g ph-cmd** | Install latest stable version |
|
|
25
|
+
| **pnpm install -g ph-cmd@dev** | Install development version |
|
|
26
|
+
| **pnpm install -g ph-cmd@staging** | Install staging version |
|
|
27
|
+
| **ph init** | Use latest stable version of the boilerplate |
|
|
28
|
+
| **ph init --dev** | Use development version of the boilerplate |
|
|
29
|
+
| **ph init --staging** | Use staging version of the boilerplate |
|
|
30
|
+
| **ph use** | Switch all dependencies to latest production versions |
|
|
31
|
+
| **ph use dev** | Switch all dependencies to development versions |
|
|
32
|
+
| **ph use prod** | Switch all dependencies to production versions |
|
|
33
|
+
|
|
34
|
+
Please be aware that these versions can contain bugs and experimental features that aren't fully tested.
|
|
35
|
+
</details>
|
|
36
|
+
|
|
37
|
+
## Before You Begin
|
|
38
|
+
1. Open your terminal (either your system terminal or VS Code's integrated terminal)
|
|
39
|
+
2. Navigate to your desired project directory using:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
cd your-directory
|
|
43
|
+
```
|
|
44
|
+
3. Ensure you're in the correct directory before running the `ph init` command
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
In the terminal, you will be asked to enter the project name. Fill in the project name and press Enter.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
you@yourmachine:~/Powerhouse$ ph init
|
|
51
|
+
|
|
52
|
+
? What is the project name? ‣ <yourprojectname>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Once the project is created, you will see the following output:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
Initialized empty Git repository in /Users/yourmachine/<yourprojectname>/.git/
|
|
59
|
+
The installation is done!
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Navigate to the newly created project directory:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
cd <yourprojectname>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Once you are in the project directory, you can run the `ph connect` command to instantiate a local version of the Connect application to start building your document model.
|
|
69
|
+
|
|
70
|
+
Run the following command to start the Connect application:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
ph connect
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The Connect application will start and you will see the following output:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
➜ Local: http://localhost:3000/
|
|
80
|
+
➜ Network: http://192.168.5.110:3000/
|
|
81
|
+
➜ press h + enter to show help
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
A new browser window will open and you will see the Connect application. If it doesn't open automatically, you can open it manually by navigating to `http://localhost:3000/` in your browser.
|
|
85
|
+
|
|
86
|
+
You will see your local drive and a button to create a new drive.
|
|
87
|
+
|
|
88
|
+
:::tip
|
|
89
|
+
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](/docs/academy/AdvancedTutorial/BuildingUserExperiences/BuildingADriveExplorer)
|
|
90
|
+
:::
|
|
91
|
+
|
|
92
|
+
Move into your local drive.
|
|
93
|
+
Create a new document model by clicking on the `DocumentModel` button by the "New Document" section in the bottom.
|
|
94
|
+
|
|
95
|
+
If you followed the steps correctly, you should have an empty document model created.
|
|
96
|
+
|
|
97
|
+
In the next tutorials, you will learn how to design your document model and export it to be later used in your Powerhouse project.
|