@powerhousedao/academy 0.1.0-dev.3 → 0.1.0-dev.5
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 +32 -0
- package/README.md +1 -1
- package/docs/academy/01-GetStarted/00-ExploreDemoPackage.md +78 -0
- package/docs/academy/01-GetStarted/{03-ToDoList/01-CreateNewPowerhouseProject.md → 01-CreateNewPowerhouseProject.md} +10 -8
- package/docs/academy/01-GetStarted/02-DefineToDoListDocumentModel.md +97 -0
- package/docs/academy/01-GetStarted/{03-ToDoList/03-ImplementOperationReducers.md → 03-ImplementOperationReducers.md} +20 -16
- package/docs/academy/01-GetStarted/{03-ToDoList/04-BuildToDoListEditor.md → 04-BuildToDoListEditor.md} +15 -15
- package/docs/academy/01-GetStarted/{00-GetStarted.mdx → home.mdx} +41 -52
- package/docs/academy/{02-AdvancedTutorial/01-Create/01-SetupBuilderEnvironment.md → 02-MasteryTrack/01-BuilderEnvironment/01-Prerequisites.md} +78 -43
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/02-StandardDocumentModelWorkflow.md +253 -0
- package/docs/academy/{02-AdvancedTutorial/01-Create/00-BuilderTools.md → 02-MasteryTrack/01-BuilderEnvironment/03-BuilderTools.md} +1 -1
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/_category_.json +7 -0
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/01-WhatIsADocumentModel.md +188 -0
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/02-SpecifyTheStateSchema.md +72 -0
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/03-SpecifyDocumentOperations.md +119 -0
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/04-UseTheDocumentModelGenerator.md +116 -0
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/05-ImplementDocumentReducers.md +282 -0
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/06-ImplementDocumentModelTests.md +277 -0
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/07-ExampleToDoListRepository.md +1 -0
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/_category_.json +7 -0
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/02-ConfiguringDrives.md +2 -2
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/03-BuildingADriveExplorer.md +1 -1
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/07-DocumentTools/00-DocumentToolbar.md +20 -0
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/07-DocumentTools/01-OperationHistory.md +1 -1
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/01-ReadingAndWritingThroughTheAPI.mdx +2 -2
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/02-GraphQLAtPowerhouse.md +1 -1
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/graphql/index.md +1 -1
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/02-IntroductionToPackages.md +2 -2
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/03-RunOnACloudServer.md +3 -3
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/03-SetupEnvironment.md +1 -1
- package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/_category_.json +1 -1
- package/docs/academy/04-APIReferences/00-PowerhouseCLI.md +740 -0
- package/docs/academy/04-APIReferences/01-ReactHooks.md +16 -0
- package/docs/academy/04-APIReferences/02-ReactorAPI.md +1 -0
- package/docs/academy/04-APIReferences/03-Configuration.md +64 -0
- package/docs/academy/{04-ComponentLibrary/01-PowerhouseDesignSystem.md → 06-ComponentLibrary/00-DocumentEngineering.md} +8 -8
- package/docs/academy/{04-ComponentLibrary → 06-ComponentLibrary}/02-BuildingWithScalars.md +2 -2
- package/docs/academy/{04-ComponentLibrary → 06-ComponentLibrary}/03-Scalar-Components/01-phid-field.mdx +1 -1
- package/docs/academy/{06-Cookbook.md → 07-Cookbook.md} +24 -18
- package/docs/academy/08-Glossary.md +82 -0
- package/docusaurus.config.ts +7 -14
- package/package.json +11 -8
- package/scripts/generate-combined-cli-docs.ts +80 -0
- package/sidebars.ts +100 -14
- package/src/components/HomepageFeatures/index.tsx +10 -10
- package/src/css/custom.css +11 -0
- package/src/pages/{index.tsx → _archive-homepage.tsx} +1 -1
- package/src/theme/DocCardList/index.tsx +30 -0
- package/static/img/storybook-icon.svg +18 -0
- package/docs/academy/01-GetStarted/01-InstallDemoPackage.md +0 -38
- package/docs/academy/01-GetStarted/02-LoginWithRenown.md +0 -32
- package/docs/academy/01-GetStarted/03-ToDoList/02-DefineToDoListDocumentModel.md +0 -86
- package/docs/academy/01-GetStarted/03-ToDoList/_category_.json +0 -8
- package/docs/academy/01-GetStarted/_category_.json +0 -3
- package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/_category_.json +0 -8
- package/docs/academy/02-AdvancedTutorial/01-Create/02-StandardDocumentModelWorkflow.md +0 -229
- package/docs/academy/03-APIReferences/00-PowerhouseCLI.md +0 -40
- package/docs/academy/03-APIReferences/01-ReactHooks.md +0 -3
- package/docs/academy/03-APIReferences/02-ReactorUsage.md +0 -1
- package/docs/academy/07-Glossary.md +0 -53
- /package/docs/academy/01-GetStarted/{03-ToDoList/images → images}/DocumentModelHeader.png +0 -0
- /package/docs/academy/01-GetStarted/{03-ToDoList/images → images}/DocumentModelOperations.png +0 -0
- /package/docs/academy/01-GetStarted/{03-ToDoList/images → images}/OpenDocumentModelEditor.gif +0 -0
- /package/docs/academy/01-GetStarted/{03-ToDoList/images → images}/completeEditor.png +0 -0
- /package/docs/academy/01-GetStarted/{03-ToDoList/images → images}/connectApp.gif +0 -0
- /package/docs/academy/01-GetStarted/{03-ToDoList/images → images}/form.png +0 -0
- /package/docs/academy/01-GetStarted/{03-ToDoList/images → images}/mytodolist.gif +0 -0
- /package/docs/academy/01-GetStarted/{03-ToDoList/images → images}/reducers.png +0 -0
- /package/docs/academy/01-GetStarted/{03-ToDoList/images → images}/vscode.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/01-BuildingBeautifulDocumentEditors.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/07-DocumentTools/02-RevisionHistoryTimeline.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/07-DocumentTools/_category_.json +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/07-DocumentTools/images/committer-address-popup.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/07-DocumentTools/images/revision-hash-popup.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/07-DocumentTools/images/revision-history-list.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/07-DocumentTools/images/signature-details-popup.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/08-Authorization/01-RenownAuthenticationFlow.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/08-Authorization/02-Authorization.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/08-Authorization/_category_.json +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/08-Authorization/images/ConnectAddress.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/08-Authorization/images/LoginComplete.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/08-Authorization/images/OperationsHistory.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/08-Authorization/images/RenownLogin.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/08-Authorization/images/ReturnToConnect.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/_category_.json +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/images/CreateDrive.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/images/CreateNewDrive.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/03-BuildingUserExperiences/images/mytodolist.gif +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/03-WorkingWithSubgraphs/02-GraphQLAndSubgraphs.mdx +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/03-WorkingWithSubgraphs/03-WorkingWithSubgraphs.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/03-WorkingWithSubgraphs/_category_.json +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/04-analytics-processor.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/01-SetupBuilderEnvironment.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/02-CreateNewPowerhouseProject.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/03-GenerateAnAnalyticsProcessor.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/04-UpdateAnalyticsProcessor.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/_category_.json +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Create-SPV.gif +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Create-a-new-asset.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Create-a-transaction.gif +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Transaction-table.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/images/create-a-new-RWA-document.gif +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/05-AnalyticsProcessorTutorial/images/granularity.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/GraphQL References/QueryingADocumentWithGraphQL.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/listener-raw.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/raw-reports1.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/raw-reports2.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/rwaRegister.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/apse.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/best-practices.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/filter.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/filteroptions.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/graphql/integration.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/dbs.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/high-level.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/indexeddb.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/libs-core.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/libs.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/lod.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/logo.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/navbar.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/overview-1.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/overview-2.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/overview-3.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/overview-4.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/overview-5.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/overview-6.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/paths-1.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/images/paths-2.jpg +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/intro.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/typescript/benchmarks.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/typescript/browser.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/typescript/compatibility.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/typescript/index.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/typescript/memory.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/typescript/pg.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/typescript/schema.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/typescript/utilities.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/use-cases/index.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/use-cases/maker.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/06-Analytics Engine/use-cases/processors.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/_category_.json +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/images/OperationHistory.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/images/OperationsQuery.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/images/QueryDocumentID.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/04-WorkWithData/images/SwitchboardButton.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/00-IntegrateInAFront-End +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/01-IntroducingFusion +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/02-PublishYourProject.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/04-GraphQLNamespacing +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/05-LaunchYourBackend.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/06-LaunchYourFrontend.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/_category_.json +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/images/SSHConnection.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/images/homedesign.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/images/keyconcepts.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial → 02-MasteryTrack}/05-Launch/images/tutorialschema.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/01-SetupBuilderEnvironment.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/02-CreateNewPowerhouseProject.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/03-DefineChatroomDocumentModel.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/04-ImplementOperationReducers.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/05-ImplementChatroomEditor.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/06-LaunchALocalReactor.md +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/_category_.json +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/image-1.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/image-2.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/image-3.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/image-4.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/image-5.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/image.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/images/ChatRoomConnectApp.gif +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/images/ChatRoomTest.gif +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/images/completeEditor.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/images/form.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/images/reducers.png +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials → 03-ExampleUsecases}/Chatroom/images/vscode.png +0 -0
- /package/docs/academy/{03-APIReferences → 04-APIReferences}/_category_.json +0 -0
- /package/docs/academy/05-Architecture/05-DocumentModelTheory/{01-WhatIsADocumentModel.md → 01-WhatIsADocumentModel} +0 -0
- /package/docs/academy/05-Architecture/05-DocumentModelTheory/{02-DAOandDocumentsModelsQ+A.md → 02-DAOandDocumentsModelsQ+A} +0 -0
- /package/docs/academy/05-Architecture/05-DocumentModelTheory/{02-domain-modeling.md → 02-domain-modeling} +0 -0
- /package/docs/academy/05-Architecture/05-DocumentModelTheory/{03-BenefitsOfDocumentModels.md → 03-BenefitsOfDocumentModels} +0 -0
- /package/docs/academy/{02-AdvancedTutorial/01-Create/02-MoreTutorials/04-UtilitiesAndTips.md → 05-Architecture/05-DocumentModelTheory/04-UtilitiesAndTips} +0 -0
- /package/docs/academy/05-Architecture/05-DocumentModelTheory/{05-best-practices.md → 05-best-practices} +0 -0
- /package/docs/academy/{04-ComponentLibrary/00-StorybookLink → 06-ComponentLibrary/01-StorybookLink} +0 -0
- /package/docs/academy/{04-ComponentLibrary → 06-ComponentLibrary}/03-Scalar-Components/02-input-field.mdx +0 -0
- /package/docs/academy/{04-ComponentLibrary → 06-ComponentLibrary}/04-Complex-Components/01-sidebar.mdx +0 -0
- /package/docs/academy/{04-ComponentLibrary → 06-ComponentLibrary}/05-Layout-Components/01-test-toupdate.mdx +0 -0
- /package/docs/academy/{04-ComponentLibrary → 06-ComponentLibrary}/06-Fragments/01-test-toupdate.mdx +0 -0
- /package/docs/academy/{04-ComponentLibrary → 06-ComponentLibrary}/_category_.json +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,35 @@
|
|
|
1
|
+
## 0.1.0-dev.5 (2025-06-03)
|
|
2
|
+
|
|
3
|
+
### 🩹 Fixes
|
|
4
|
+
|
|
5
|
+
- **academy:** lockfile issue second time' ([6208fe614](https://github.com/powerhouse-inc/powerhouse/commit/6208fe614))
|
|
6
|
+
- **academy:** fix frozen lockfile issue' ([80f18ec73](https://github.com/powerhouse-inc/powerhouse/commit/80f18ec73))
|
|
7
|
+
- **academy:** fix frozen lockfile issue ([bfc3dcd21](https://github.com/powerhouse-inc/powerhouse/commit/bfc3dcd21))
|
|
8
|
+
|
|
9
|
+
### ❤️ Thank You
|
|
10
|
+
|
|
11
|
+
- Callme-T
|
|
12
|
+
|
|
13
|
+
## 0.1.0-dev.4 (2025-06-03)
|
|
14
|
+
|
|
15
|
+
### 🚀 Features
|
|
16
|
+
|
|
17
|
+
- **academy:** centralize husky & auto-update cli docs ([8c92e0bb1](https://github.com/powerhouse-inc/powerhouse/commit/8c92e0bb1))
|
|
18
|
+
- **ph-cli:** added setup-service command ([dfa082aa6](https://github.com/powerhouse-inc/powerhouse/commit/dfa082aa6))
|
|
19
|
+
- **scripts:** updated setup scripts ([9f7fa7644](https://github.com/powerhouse-inc/powerhouse/commit/9f7fa7644))
|
|
20
|
+
|
|
21
|
+
### 🩹 Fixes
|
|
22
|
+
|
|
23
|
+
- **pre-commit:** use bash syntax and shebang ([da00ff581](https://github.com/powerhouse-inc/powerhouse/commit/da00ff581))
|
|
24
|
+
- added missing dep to academy ([4ec6c8278](https://github.com/powerhouse-inc/powerhouse/commit/4ec6c8278))
|
|
25
|
+
- **academy:** clean up husky script ([e18e26cd8](https://github.com/powerhouse-inc/powerhouse/commit/e18e26cd8))
|
|
26
|
+
|
|
27
|
+
### ❤️ Thank You
|
|
28
|
+
|
|
29
|
+
- Callme-T
|
|
30
|
+
- Frank
|
|
31
|
+
- Guillermo Puente @gpuente
|
|
32
|
+
|
|
1
33
|
## 0.1.0-dev.3 (2025-05-27)
|
|
2
34
|
|
|
3
35
|
### 🚀 Features
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ $ npm install
|
|
|
16
16
|
$ npm run dev
|
|
17
17
|
```
|
|
18
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.
|
|
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. The server will break upon broken links or big navigation/relinking.
|
|
20
20
|
|
|
21
21
|
### Build
|
|
22
22
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Explore 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
|
+
Install the Powerhouse command-line tool `ph-cmd` and then use it to install a pre-built demo package with document models & editors.
|
|
7
|
+
:::
|
|
8
|
+
|
|
9
|
+
## Step 1: Install the Powerhouse CLI
|
|
10
|
+
|
|
11
|
+
You will 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. First, you need the Powerhouse command-line interface (CLI). Open your terminal and run the installation command:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pnpm install -g ph-cmd
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Verify the installation:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
ph-cmd --version
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Step 2: Install the Contributor Billing Package
|
|
24
|
+
|
|
25
|
+
Now, use the `ph` command to install the demo package into a global project.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Install the package
|
|
29
|
+
ph install contributor-billing
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
This command downloads and sets up the Contributor Billing package, making its features available in your Powerhouse environment.
|
|
33
|
+
|
|
34
|
+
You have now successfully installed `ph-cmd` and added your first package!
|
|
35
|
+
|
|
36
|
+
## Step 3: Run the Connect App in Studio mode
|
|
37
|
+
To run the package locally in Connect Studio (our collaboration and contributor app), run the `ph connect` command.
|
|
38
|
+
|
|
39
|
+
## Step 4: Log in with Renown
|
|
40
|
+
|
|
41
|
+
Renown is Powerhouse's decentralized identity and reputation system designed to address the challenge of trust within DAOs, where contributors often operate under pseudonyms. In traditional organizations, personal identity and reputation are key to establishing trust and accountability. Renown replicates this dynamic in the digital space, allowing contributors to earn experience and build reputation without revealing their real-world identities.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
:::tip
|
|
45
|
+
When signing in with Renown, use an Ethereum or blockchain address that can function as your \'identity\', as this address will accrue more experience and history over time.
|
|
46
|
+
:::
|
|
47
|
+
|
|
48
|
+
### Login Flow
|
|
49
|
+
"**Log in with Renown**" is a decentralized authentication flow that enables you to log into applications by signing a credential with your Ethereum wallet. Upon signing in, a Decentralized Identifier (DID) is created based on your Ethereum key.
|
|
50
|
+
|
|
51
|
+

|
|
52
|
+
|
|
53
|
+
### Generate a DID to sign operations in Connect
|
|
54
|
+
This DID is then associated with a credential that authorizes a specific Connect instance to act on your behalf. That credential is stored securely on Ceramic, a decentralized data network. When you perform actions through the Powerhouse Connect interface, those operations are signed with the DID and transmitted to Switchboard, which serves as the verifier.
|
|
55
|
+
|
|
56
|
+

|
|
57
|
+
|
|
58
|
+

|
|
59
|
+
|
|
60
|
+
### Modify a document
|
|
61
|
+
Switchboard checks the validity of the DID and credential, ensuring the operation request is legitimate. This flow is designed to offer a verifiable, cryptographically secure login system that replaces traditional password-based authentication with decentralized identity and signature-based trust.
|
|
62
|
+
|
|
63
|
+
## Step 5: Explore the Document Operations History
|
|
64
|
+
|
|
65
|
+

|
|
66
|
+
|
|
67
|
+
By leveraging this system, every operation or modification made to a document is cryptographically signed by the contributor\'s Renown identity. This ensures that each change is verifiable, traceable, and attributable to a specific pseudonymous user, providing a robust audit trail for all document activity.
|
|
68
|
+
|
|
69
|
+
A key feature you get with 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. This ensures every action is traceable and verifiable.
|
|
70
|
+
Learn more about the [Operations History and other document tools you get for free](../MasteryTrack/BuildingUserExperiences/DocumentTools/OperationHistory).
|
|
71
|
+
|
|
72
|
+
## Step 6: Export a Document
|
|
73
|
+
|
|
74
|
+
Export the document as a `.phd` (Powerhouse Document) file using the export button in the document toolbar at the top. In this toolbar, you will find all available functionality for your documents. The `.phd` file can be sent through any of your preferred channels to other users on your Powergrid network.
|
|
75
|
+
|
|
76
|
+
Now that you have explored a Powerhouse package and discovered its basic functionalities, it is time to start building your own.
|
|
77
|
+
Our next tutorial focuses on creating a simple To-Do list document and will introduce you to the world of Document Models.
|
|
78
|
+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Create a
|
|
1
|
+
# Create a new ToDoList Document
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
|
-
This tutorial
|
|
4
|
+
This tutorial guides you through creating a 'Powerhouse project' for a ToDoList. A Powerhouse project primarily consists of a document model and its editor. You'll be using Connect locally, known as 'Studio mode'.
|
|
5
5
|
|
|
6
6
|
## Prerequisites
|
|
7
7
|
- Powerhouse CLI installed: `pnpm install -g ph-cmd`
|
|
@@ -9,6 +9,8 @@ This tutorial will guide you through creating a new 'Powerhouse project', which
|
|
|
9
9
|
- Visual Studio Code (or your preferred IDE)
|
|
10
10
|
- Terminal/Command Prompt access
|
|
11
11
|
|
|
12
|
+
If you need help with installing the prerequisites you can visit our page prerequisites. @callme-t
|
|
13
|
+
|
|
12
14
|
## Quick Start
|
|
13
15
|
Create a new Powerhouse project with a single command:
|
|
14
16
|
```bash
|
|
@@ -35,7 +37,7 @@ Please be aware that these versions can contain bugs and experimental features t
|
|
|
35
37
|
</details>
|
|
36
38
|
|
|
37
39
|
## Before You Begin
|
|
38
|
-
1. Open your terminal (either your system terminal or
|
|
40
|
+
1. Open your terminal (either your system terminal or IDE's integrated terminal)
|
|
39
41
|
2. Navigate to your desired project directory using:
|
|
40
42
|
|
|
41
43
|
```bash
|
|
@@ -65,7 +67,7 @@ Navigate to the newly created project directory:
|
|
|
65
67
|
cd <yourprojectname>
|
|
66
68
|
```
|
|
67
69
|
|
|
68
|
-
Once
|
|
70
|
+
Once in the project directory, run the `ph connect` command to start a local instance of the Connect application. This allows you to start your document model specification document.
|
|
69
71
|
|
|
70
72
|
Run the following command to start the Connect application:
|
|
71
73
|
|
|
@@ -86,12 +88,12 @@ A new browser window will open and you will see the Connect application. If it d
|
|
|
86
88
|
You will see your local drive and a button to create a new drive.
|
|
87
89
|
|
|
88
90
|
:::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
|
|
91
|
+
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)
|
|
90
92
|
:::
|
|
91
93
|
|
|
92
94
|
Move into your local drive.
|
|
93
|
-
Create a new document model by clicking
|
|
95
|
+
Create a new document model by clicking the `DocumentModel` button, found in the 'New Document' section at the bottom of the page.
|
|
94
96
|
|
|
95
|
-
If you followed the steps correctly, you
|
|
97
|
+
If you've followed the steps correctly, you'll have an empty document where you can define the 'Document Specifications'.
|
|
96
98
|
|
|
97
|
-
In the next tutorials, you will learn how to
|
|
99
|
+
In the next tutorials, you will learn how to specify, add code and build an editor for your document model and export it to be used in your Powerhouse package.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Define the ToDoList document specification
|
|
2
|
+
|
|
3
|
+
In this tutorial, you will learn how to define the specifications for a `ToDoList` document model within the Connect application using its GraphQL schema, and then export the resulting document model specification document for your Powerhouse project.
|
|
4
|
+
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.
|
|
5
|
+
|
|
6
|
+
Before you start, make sure you have the Connect application running locally with the command `ph connect`
|
|
7
|
+
|
|
8
|
+
## ToDoList Document Specification
|
|
9
|
+
|
|
10
|
+
Likely you have called your project 'ToDoList'. If you've used a different name, please create a new document specification named 'ToDoList'. Pay close attention to capitalization, as it influences our code.
|
|
11
|
+
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. Below, you can see the SDL for the `ToDoList` document model.
|
|
12
|
+
|
|
13
|
+
:::info
|
|
14
|
+
This schema defines the **data structure** of the document model and the types involved in its operations, which are detailed further as input types.
|
|
15
|
+
Documents in Powerhouse leverage **event sourcing principles**, where every state transition is represented by an operation. GraphQL input types describe operations, ensuring that user intents are captured effectively. These operations detail the parameters needed for state transitions. The use of GraphQL aligns these transitions with explicit, validated, and reproducible commands, supporting **CQRS** (Command Query Responsibility Segregation) patterns.
|
|
16
|
+
:::
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
<details>
|
|
21
|
+
<summary>State Schema of our ToDoList</summary>
|
|
22
|
+
|
|
23
|
+
```graphql
|
|
24
|
+
# The state of our ToDoList
|
|
25
|
+
type ToDoListState {
|
|
26
|
+
items: [ToDoItem!]!
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
# A single to-do item
|
|
30
|
+
type ToDoItem {
|
|
31
|
+
id: ID!
|
|
32
|
+
text: String!
|
|
33
|
+
checked: Boolean!
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
</details>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
<details>
|
|
41
|
+
<summary>Operations Schema of our ToDoList</summary>
|
|
42
|
+
```graphql
|
|
43
|
+
# Defines a GraphQL input type for adding a new to-do item
|
|
44
|
+
input AddTodoItemInput {
|
|
45
|
+
id: ID!
|
|
46
|
+
text: String!
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
# Defines a GraphQL input type for updating a to-do item
|
|
50
|
+
input UpdateTodoItemInput {
|
|
51
|
+
id: ID!
|
|
52
|
+
text: String
|
|
53
|
+
checked: Boolean
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# Defines a GraphQL input type for deleting a to-do item
|
|
57
|
+
input DeleteTodoItemInput {
|
|
58
|
+
id: ID!
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
</details>
|
|
62
|
+
|
|
63
|
+
## Define the Document Model Specification
|
|
64
|
+
|
|
65
|
+
To be able to define the document model, you need to open the document model editor in Connect.
|
|
66
|
+
|
|
67
|
+
#### The steps below show you how to do this:
|
|
68
|
+
|
|
69
|
+
1. In the Connect application, click on **'document model'** to open the document model specification editor.
|
|
70
|
+
2. Name your document model 'ToDoList' in the Connect application, paying close attention to capitalization.
|
|
71
|
+
3. You'll be presented with a form to fill in metadata about the document model. Fill in the details in the respective fields.
|
|
72
|
+
|
|
73
|
+
In the **Document Type** field, type `powerhouse/todolist`. This defines the new type of document that will be created with this document model specification.
|
|
74
|
+
|
|
75
|
+

|
|
76
|
+
|
|
77
|
+
4. In the code editor, you can see the SDL for the document model. Replace the existing SDL template with the SDL defined in the [State Schema](#state-schema) section. Only copy and paste the types, leaving the inputs for the next step. You can, however, already press the 'Sync with schema' button to set the initial state of your document model specification based on your Schema Definition Language.
|
|
78
|
+
5. Below the editor, find the input field `Add module`. You'll use this to create and name a module for organizing your input operations. In this case, we will name the module `to_do_list`. Press enter.
|
|
79
|
+
6. Now there is a new field, called `Add operation`. Here you will have to add each input operation to the module, one by one.
|
|
80
|
+
7. Inside the `Add operation` field, type `ADD_TODO_ITEM` and press enter. A small editor will appear underneath it, with an empty input type that you have to fill. Copy the first input type from the [Operations Schema](#operations-schema) section and paste it in the editor. The editor should look like this:
|
|
81
|
+
|
|
82
|
+
```graphql
|
|
83
|
+
input AddTodoItemInput {
|
|
84
|
+
id: ID!
|
|
85
|
+
text: String!
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
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.
|
|
90
|
+
|
|
91
|
+
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.
|
|
92
|
+
|
|
93
|
+
Check below screenshot for the complete implementation:
|
|
94
|
+
|
|
95
|
+

|
|
96
|
+
|
|
97
|
+
Up next, you'll learn how to implement the runtime logic and components that will use the `ToDoList` document model specification you've just created and exported.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# Implement
|
|
1
|
+
# Implement the Document Model
|
|
2
2
|
|
|
3
|
-
In this section, we will implement and test the operation reducers for the **ToDoList** document model.
|
|
3
|
+
In this section, we will implement and test the operation reducers for the **ToDoList** document model. For this, you have to export the document model specification from the Connect application and import it into your Powerhouse project directory.
|
|
4
4
|
|
|
5
|
-
To export the document model, follow the steps in the [Define ToDoList Document Model](/
|
|
5
|
+
To export the document model specification, follow the steps in the [Define ToDoList Document Model](/academy/GetStarted/DefineToDoListDocumentModel) section.
|
|
6
6
|
|
|
7
7
|
## Understanding Reducers in Document Models
|
|
8
8
|
|
|
@@ -16,25 +16,25 @@ Reducers are a core concept in Powerhouse document models. They implement the st
|
|
|
16
16
|
|
|
17
17
|
4. **Type Safety**: Powerhouse generates TypeScript types from your SDL, ensuring that your reducers and operations are type-safe.
|
|
18
18
|
|
|
19
|
-
5. **Pure Functions**: Reducers should be pure functions that only
|
|
19
|
+
5. **Pure Functions**: Reducers should be pure functions that depend only on the current state and the operation input, making them predictable and testable.
|
|
20
20
|
|
|
21
21
|
Let's see how these concepts are implemented in our **ToDoList** document model.
|
|
22
22
|
|
|
23
|
-
##
|
|
23
|
+
## Importing the Document Model Specification and Generating Code
|
|
24
24
|
|
|
25
|
-
To import the document model into your
|
|
25
|
+
To import the document model specification into your Powerhouse project, you can either:
|
|
26
26
|
|
|
27
|
-
- Copy and paste the file directly into the root of your
|
|
28
|
-
- Or drag and drop the file into the
|
|
27
|
+
- Copy and paste the file directly into the root of your Powerhouse project.
|
|
28
|
+
- Or drag and drop the file into the Powerhouse project directory in the VSCode editor as seen in the image below:
|
|
29
29
|
|
|
30
|
-
Either step will import the document model into your
|
|
30
|
+
Either step will import the document model specification into your Powerhouse project.
|
|
31
31
|
|
|
32
32
|

|
|
33
33
|
|
|
34
34
|
The next steps will take place in the VSCode editor. Make sure to have it open and the terminal window inside VSCode open as well.
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
To write the operation reducers of the **ToDoList** document model, you need to generate the document model code from the document model file you have exported into the
|
|
37
|
+
To write the operation reducers of the **ToDoList** document model, you need to generate the document model code from the document model specification file you have exported into the Powerhouse project directory.
|
|
38
38
|
|
|
39
39
|
To do this, run the following command in the terminal:
|
|
40
40
|
|
|
@@ -44,7 +44,7 @@ ph generate ToDoList.phdm.zip
|
|
|
44
44
|
|
|
45
45
|
Now you can navigate to `/document-models/to-do-list/src/reducers/to-do-list.ts` and start writing the operation reducers.
|
|
46
46
|
|
|
47
|
-
Open the `to-do-list.ts` file and you should see the code that needs to be filled for the three operations you have
|
|
47
|
+
Open the `to-do-list.ts` file and you should see the code that needs to be filled for the three operations you have specified earlier. The image below shows the code that needs to be filled:
|
|
48
48
|
|
|
49
49
|

|
|
50
50
|
|
|
@@ -54,6 +54,8 @@ Open the `to-do-list.ts` file and you should see the code that needs to be fille
|
|
|
54
54
|
2. Save the file.
|
|
55
55
|
|
|
56
56
|
|
|
57
|
+
<details>
|
|
58
|
+
<summary>Operation Reducers</summary>
|
|
57
59
|
```typescript
|
|
58
60
|
import { ToDoListToDoListOperations } from '../../gen/to-do-list/operations.js';
|
|
59
61
|
|
|
@@ -104,6 +106,7 @@ export const reducer: ToDoListToDoListOperations = {
|
|
|
104
106
|
},
|
|
105
107
|
};
|
|
106
108
|
```
|
|
109
|
+
</details>
|
|
107
110
|
|
|
108
111
|
## Write the Operation Reducers Tests
|
|
109
112
|
|
|
@@ -111,8 +114,10 @@ In order to make sure the operation reducers are working as expected, you need t
|
|
|
111
114
|
|
|
112
115
|
Navigate to `/document-models/to-do-list/src/reducers/tests/to-do-list.test.ts` and copy and paste the code below into the file. Save the file.
|
|
113
116
|
|
|
114
|
-
Here are the tests for the three operations
|
|
117
|
+
Here are the tests for the three operations implemented in the reducers file. This test file creates an empty ToDoList document model, then adds a todo item, updates it and deletes it.
|
|
115
118
|
|
|
119
|
+
<details>
|
|
120
|
+
<summary>Operation Reducers Tests</summary>
|
|
116
121
|
```typescript
|
|
117
122
|
import utils from '../../gen/utils';
|
|
118
123
|
import { reducer } from '../../gen/reducer';
|
|
@@ -178,6 +183,7 @@ describe('Todolist Operations', () => {
|
|
|
178
183
|
});
|
|
179
184
|
});
|
|
180
185
|
```
|
|
186
|
+
</details>
|
|
181
187
|
|
|
182
188
|
Now you can run the tests to make sure the operation reducers are working as expected.
|
|
183
189
|
|
|
@@ -194,8 +200,6 @@ Output should be as follows:
|
|
|
194
200
|
Duration 417ms (transform 79ms, setup 0ms, collect 174ms, tests 12ms, environment 0ms, prepare 158ms)
|
|
195
201
|
```
|
|
196
202
|
|
|
197
|
-
If you got the same output, you have successfully implemented the operation reducers and tests for the **ToDoList** document model. Congratulations, you've successfully
|
|
203
|
+
If you got the same output, you have successfully implemented the operation reducers and tests for the **ToDoList** document model. Congratulations, you've successfully set up the backbone for a simple **ToDoList** document.
|
|
198
204
|
|
|
199
|
-
|
|
200
|
-
Continue to the next chapter on your builder track to learn how to implement the document model editor so you can see a simple user interface for the **ToDoList** document model in action. Click here for the [ToDoList Editor](/docs/academy/GetStarted/ToDoList/BuildToDoListEditor)
|
|
201
|
-
:::
|
|
205
|
+
In the next chapter of this introduction track you will learn how to implement an editor for your document model so you can see a simple user interface for the **ToDoList** document model in action.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
# Build a
|
|
1
|
+
# Build a ToDoList Editor
|
|
2
2
|
|
|
3
|
-
In this chapter we will continue with the interface or editor implementation of the **ToDoList** document model
|
|
3
|
+
In this chapter we will continue with the interface or editor implementation of the **ToDoList** document model. This means you will create a simple user interface for the **ToDoList** document model which will be used inside the Connect app to create, update and delete your ToDoList items.
|
|
4
4
|
|
|
5
5
|
## Generate the editor template
|
|
6
6
|
|
|
7
|
-
Run the command below to generate the editor template for the **ToDoList** document model. This command reads the **ToDoList** document model definition from the `document-models` folder and generates the editor template in the `editors/to-do-list
|
|
7
|
+
Run the command below to generate the editor template for the **ToDoList** document model. This command reads the **ToDoList** document model definition from the `document-models` folder and generates the editor template in the `editors/to-do-list` folder as `editor.tsx`.
|
|
8
8
|
|
|
9
|
-
Notice the `--editor` flag which
|
|
9
|
+
Notice the `--editor` flag which specifies the **ToDoList** document model, and the `--document-types` flag defines the document type `powerhouse/todolist`.
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
ph generate --editor ToDoList --document-types powerhouse/todolist
|
|
@@ -188,24 +188,24 @@ export default function Editor({ document, dispatch }: IProps) {
|
|
|
188
188
|
|
|
189
189
|
---
|
|
190
190
|
|
|
191
|
-
##
|
|
191
|
+
## ToDoList Editor
|
|
192
192
|
|
|
193
193
|
:::tip
|
|
194
194
|
### Implementing Components
|
|
195
|
-
The editor we are about to implement makes use of some components from
|
|
196
|
-
When you
|
|
197
|
-
These are imported from the Powerhouse
|
|
195
|
+
The editor we are about to implement makes use of some components from **Powerhouse Document Engineering**.
|
|
196
|
+
When you add the editor code, you'll see it makes use of two components, the `Checkbox` and `InputField`.
|
|
197
|
+
These are imported from the Powerhouse Document Engineering design system (`@powerhousedao/document-engineering/scalars`).
|
|
198
198
|
|
|
199
199
|
This system provides a library of reusable components to ensure consistency and speed up development.
|
|
200
|
-
You can explore available components, see usage examples, and understand their properties (props) using our Storybook instance. For a detailed guide on how to leverage the design system and Storybook, see [
|
|
200
|
+
You can explore available components, see usage examples, and understand their properties (props) using our Storybook instance. For a detailed guide on how to leverage the Document Engineering design system and Storybook, see [Using the Powerhouse Document Engineering](/academy/ComponentLibrary/DocumentEngineering) page.
|
|
201
201
|
|
|
202
|
-
For
|
|
202
|
+
For this tutorial, create a `components` folder inside `editors/to-do-list`. Then, within this new `components` folder, create the files for the `Checkbox` and `InputField` components (e.g., `Checkbox.tsx` and `InputField.tsx`) with the following code:
|
|
203
203
|
:::
|
|
204
204
|
|
|
205
205
|
<details>
|
|
206
206
|
<summary>Checkbox</summary>
|
|
207
207
|
```typescript
|
|
208
|
-
import { Form, BooleanField } from "@powerhousedao/
|
|
208
|
+
import { Form, BooleanField } from "@powerhousedao/document-engineering/scalars";
|
|
209
209
|
|
|
210
210
|
interface CheckboxProps {
|
|
211
211
|
value: boolean;
|
|
@@ -230,7 +230,7 @@ export const Checkbox = ({ value, onChange }: CheckboxProps) => {
|
|
|
230
230
|
<details>
|
|
231
231
|
<summary>Inputfield</summary>
|
|
232
232
|
```typescript
|
|
233
|
-
import { Form, StringField } from "@powerhousedao/
|
|
233
|
+
import { Form, StringField } from "@powerhousedao/document-engineering/scalars";
|
|
234
234
|
|
|
235
235
|
interface InputFieldProps {
|
|
236
236
|
input: string;
|
|
@@ -270,10 +270,10 @@ export const InputField = (props: InputFieldProps) => {
|
|
|
270
270
|
</details>
|
|
271
271
|
|
|
272
272
|
|
|
273
|
-
Below is the complete code for the To-
|
|
273
|
+
Below is the complete code for the To-Do List editor. It primarily uses Tailwind CSS for styling and imports the local `Checkbox` and `InputField` components you created in the previous step. These local components, in turn, utilize elements from the Powerhouse Document Engineering design system.
|
|
274
274
|
|
|
275
275
|
<details>
|
|
276
|
-
<summary>Complete
|
|
276
|
+
<summary>Complete ToDoList Editor Example (using Tailwind CSS)</summary>
|
|
277
277
|
|
|
278
278
|
```typescript
|
|
279
279
|
// Import necessary types and components.
|
|
@@ -487,7 +487,7 @@ The editor will update dynamically, so you can play around with your editor styl
|
|
|
487
487
|
Congratulations!
|
|
488
488
|
If you managed to follow this tutorial until this point, you have successfully implemented the **ToDoList** document model with its reducer operations and editor.
|
|
489
489
|
|
|
490
|
-
Now you can move on to creating a [custom drive explorer](/
|
|
490
|
+
Now you can move on to creating a [custom drive explorer](/academy/MasteryTrack/BuildingUserExperiences/BuildingADriveExplorer) for your ToDoList document.
|
|
491
491
|
Imagine you have many ToDoLists sitting in a drive. A custom drive explorer will allow you to organize and track them at a glance, opening up a new world of possibilities to increase the functionality of your documents!
|
|
492
492
|
|
|
493
493
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Get Started
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
slug: /
|
|
4
|
+
sidebar_class_name: category-index-page
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
import React from 'react';
|
|
@@ -44,44 +44,24 @@ import BrowserOnly from '@docusaurus/BrowserOnly';
|
|
|
44
44
|
</div>
|
|
45
45
|
</div>
|
|
46
46
|
|
|
47
|
-
{/*
|
|
48
|
-
<div
|
|
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>
|
|
47
|
+
{/* Row 1: [Empty Placeholder], Create, [Empty Placeholder] */}
|
|
48
|
+
<div></div> {/* Placeholder for the deleted "New Link" card */}
|
|
59
49
|
|
|
60
50
|
<div className={styles.pathCard} style={{ border: '1px solid #4FC86F' }}>
|
|
61
51
|
<div className={styles.cardHeader}>
|
|
62
52
|
<div className={styles.cardIconWrapper}>
|
|
63
|
-
<img src="/img/academy/icons/
|
|
53
|
+
<img src="/img/academy/icons/BuilderEnvironment.svg" alt="" />
|
|
64
54
|
</div>
|
|
65
|
-
<h3 className="card-title">
|
|
55
|
+
<h3 className="card-title">Get Started</h3>
|
|
66
56
|
</div>
|
|
67
57
|
<div className={styles.cardContent}>
|
|
68
|
-
<a href="/docs/academy/GetStarted/
|
|
58
|
+
<a href="/docs/academy/GetStarted/CreateNewPowerhouseProject" className="path-button">Build a Todo-list Document Model</a>
|
|
69
59
|
</div>
|
|
70
60
|
</div>
|
|
71
61
|
|
|
72
|
-
<div
|
|
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>
|
|
62
|
+
<div></div> {/* Placeholder for the deleted "Document Model Theory" card */}
|
|
83
63
|
|
|
84
|
-
{/*
|
|
64
|
+
{/* Row 2: Build User Experiences, Builder Track Image, Work with Data */}
|
|
85
65
|
<div className={styles.pathCard} style={{ border: '1px solid #4FC86F' }}>
|
|
86
66
|
<div className={styles.cardHeader}>
|
|
87
67
|
<div className={styles.cardIconWrapper}>
|
|
@@ -90,35 +70,34 @@ import BrowserOnly from '@docusaurus/BrowserOnly';
|
|
|
90
70
|
<h3 className="card-title">Build User Experiences</h3>
|
|
91
71
|
</div>
|
|
92
72
|
<div className={styles.cardContent}>
|
|
93
|
-
<a href="/docs/academy/GetStarted/
|
|
94
|
-
<a href="/docs/academy/BuildingUserExperiences/BuildingBeautifulDocumentEditors" className="path-button">Building
|
|
95
|
-
<a href="/docs/academy/
|
|
73
|
+
<a href="/docs/academy/GetStarted/BuildToDoListEditor" className="path-button">Building a Todo-list Editor</a>
|
|
74
|
+
<a href="/docs/academy/BuildingUserExperiences/BuildingBeautifulDocumentEditors" className="path-button">Building Document Editors</a>
|
|
75
|
+
<a href="/docs/academy/MasteryTrack/BuildingUserExperiences/BuildingADriveExplorer" className="path-button">Building Custom Drive Explorers</a>
|
|
76
|
+
<a href="/docs/academy/ComponentLibrary/DocumentEngineering" className="path-button">Component Library</a>
|
|
96
77
|
</div>
|
|
97
78
|
</div>
|
|
98
79
|
|
|
99
|
-
{
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
alignItems: 'flex-start',
|
|
80
|
+
<div className={styles.middleColumn} style={{
|
|
81
|
+
display: 'flex',
|
|
82
|
+
justifyContent: 'center',
|
|
83
|
+
alignItems: 'flex-start',
|
|
104
84
|
paddingTop: '-20px',
|
|
105
85
|
position: 'relative'
|
|
106
86
|
}}>
|
|
107
87
|
<img src="/img/Union.svg" alt="Powerhouse Union" width="250" />
|
|
108
|
-
<div style={{
|
|
88
|
+
<div style={{
|
|
109
89
|
position: 'absolute',
|
|
110
90
|
top: '18px',
|
|
111
|
-
backgroundColor: 'white',
|
|
112
|
-
padding: '8px 16px',
|
|
91
|
+
backgroundColor: 'white',
|
|
92
|
+
padding: '8px 16px',
|
|
113
93
|
borderRadius: '8px',
|
|
114
94
|
textAlign: 'center',
|
|
115
95
|
zIndex: 2,
|
|
116
96
|
}}>
|
|
117
|
-
<h3 className="card-title" style={{ margin: 0 }}>
|
|
97
|
+
<h3 className="card-title" style={{ margin: 0 }}>Mastery Track</h3>
|
|
118
98
|
</div>
|
|
119
99
|
</div>
|
|
120
100
|
|
|
121
|
-
{/* Right Column Card with 3 buttons */}
|
|
122
101
|
<div className={styles.pathCard} style={{ border: '1px solid #4FC86F' }}>
|
|
123
102
|
<div className={styles.cardHeader}>
|
|
124
103
|
<div className={styles.cardIconWrapper}>
|
|
@@ -127,13 +106,14 @@ import BrowserOnly from '@docusaurus/BrowserOnly';
|
|
|
127
106
|
<h3 className="card-title">Work with Data</h3>
|
|
128
107
|
</div>
|
|
129
108
|
<div className={styles.cardContent}>
|
|
130
|
-
<a href="//docs/academy/
|
|
131
|
-
<a href="/docs/academy/
|
|
109
|
+
<a href="//docs/academy/MasteryTrack/WorkWithData/ReadingAndWritingThroughTheAPI" className="path-button">Reading & Writing through the API</a>
|
|
110
|
+
<a href="/docs/academy/MasteryTrack/WorkWithData/WorkingWithSubgraphs" className="path-button">Create your own Subgraph</a>
|
|
111
|
+
<a href="/docs/academy/WorkWithData/Analytics Engine/intro" className="path-button">Using the Analytics Engine</a>
|
|
132
112
|
<a href="/docs/academy/WorkWithData/Analytics Engine/intro" className="path-button">Using the Analytics Engine</a>
|
|
133
113
|
</div>
|
|
134
114
|
</div>
|
|
135
115
|
|
|
136
|
-
{/* Launch Card - Full Width with 3 column buttons */}
|
|
116
|
+
{/* Launch Card - Full Width with 3 column buttons - RE-INSERTED */}
|
|
137
117
|
<div className={`${styles.pathCard} ${styles.fullWidth}`}>
|
|
138
118
|
<div className={styles.cardHeader} style={{ justifyContent: 'center' }}>
|
|
139
119
|
<div className={styles.cardIconWrapper}>
|
|
@@ -143,14 +123,14 @@ import BrowserOnly from '@docusaurus/BrowserOnly';
|
|
|
143
123
|
</div>
|
|
144
124
|
<div className={styles.cardContent}>
|
|
145
125
|
<div className={styles.buttonContainer}>
|
|
146
|
-
<a href="/docs/academy/
|
|
126
|
+
<a href="/docs/academy/MasteryTrack/Launch/PublishYourProject" className="path-button">Package & Publish</a>
|
|
147
127
|
<a href="/docs/academy/Launch/LaunchYourBackend" className="path-button">Launch Back-end</a>
|
|
148
128
|
<a href="/docs/academy/Launch/LaunchYourFrontend" className="path-button">Launch Front-end</a>
|
|
149
129
|
</div>
|
|
150
130
|
</div>
|
|
151
131
|
</div>
|
|
152
132
|
|
|
153
|
-
{/* Cookbook
|
|
133
|
+
{/* Row 3: Cookbook, Use-cases, Advanced Topics */}
|
|
154
134
|
<div className={styles.pathCard}>
|
|
155
135
|
<div className={styles.cardHeader}>
|
|
156
136
|
<div className={styles.cardIconWrapper}>
|
|
@@ -163,19 +143,28 @@ import BrowserOnly from '@docusaurus/BrowserOnly';
|
|
|
163
143
|
</div>
|
|
164
144
|
</div>
|
|
165
145
|
|
|
166
|
-
{/*
|
|
167
|
-
<div
|
|
146
|
+
{/* Ensure this Use-cases Card block is clean */}
|
|
147
|
+
<div className={styles.pathCard}> {/* New Use-cases Card */}
|
|
148
|
+
<div className={styles.cardHeader}>
|
|
149
|
+
<div className={styles.cardIconWrapper}>
|
|
150
|
+
<img src="/img/academy/icons/Cookbook.svg" alt="Use-cases Icon" />
|
|
151
|
+
</div>
|
|
152
|
+
<h3 className="card-title">Use-cases</h3>
|
|
153
|
+
</div>
|
|
154
|
+
<div className={styles.cardContent}>
|
|
155
|
+
<a href="/docs/academy/ExampleUsecases/Chatroom/SetupBuilderEnvironment" className="path-button">Explore Use-cases</a>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
168
158
|
|
|
169
|
-
{/* Advanced Topics Card - Right Column */}
|
|
170
159
|
<div className={styles.pathCard}>
|
|
171
160
|
<div className={styles.cardHeader}>
|
|
172
161
|
<div className={styles.cardIconWrapper}>
|
|
173
162
|
<img src="/img/academy/icons/Advanced.svg" alt="" />
|
|
174
163
|
</div>
|
|
175
|
-
<h3 className="card-title">
|
|
164
|
+
<h3 className="card-title">Architecture</h3>
|
|
176
165
|
</div>
|
|
177
166
|
<div className={styles.cardContent}>
|
|
178
|
-
<a href="/
|
|
167
|
+
<a href="/academy/05-Architecture/00-PowerhouseArchitecture" className="path-button">Learn More</a>
|
|
179
168
|
</div>
|
|
180
169
|
</div>
|
|
181
170
|
</div>
|