@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.
Files changed (226) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/CHANGELOG.md +9 -0
  3. package/Dockerfile +31 -0
  4. package/ProcFile +1 -0
  5. package/README.md +43 -0
  6. package/babel.config.js +3 -0
  7. package/blog/BeyondCommunication-ABlueprintForDevelopment.md +88 -0
  8. package/blog/TheChallengeOfChange.md +86 -0
  9. package/blog/images/Iteration.png +0 -0
  10. package/blog/images/RAD.png +0 -0
  11. package/docs/academy/01-GetStarted/00-GetStarted.mdx +181 -0
  12. package/docs/academy/01-GetStarted/01_InstallDemoPackage.md +38 -0
  13. package/docs/academy/01-GetStarted/02-ToDoList/01-CreateNewPowerhouseProject.md +97 -0
  14. package/docs/academy/01-GetStarted/02-ToDoList/02-DefineToDoListDocumentModel.md +86 -0
  15. package/docs/academy/01-GetStarted/02-ToDoList/03-ImplementOperationReducers.md +201 -0
  16. package/docs/academy/01-GetStarted/02-ToDoList/04-BuildToDoListEditor.md +494 -0
  17. package/docs/academy/01-GetStarted/02-ToDoList/_category_.json +8 -0
  18. package/docs/academy/01-GetStarted/02-ToDoList/images/DocumentModelHeader.png +0 -0
  19. package/docs/academy/01-GetStarted/02-ToDoList/images/DocumentModelOperations.png +0 -0
  20. package/docs/academy/01-GetStarted/02-ToDoList/images/OpenDocumentModelEditor.gif +0 -0
  21. package/docs/academy/01-GetStarted/02-ToDoList/images/completeEditor.png +0 -0
  22. package/docs/academy/01-GetStarted/02-ToDoList/images/connectApp.gif +0 -0
  23. package/docs/academy/01-GetStarted/02-ToDoList/images/form.png +0 -0
  24. package/docs/academy/01-GetStarted/02-ToDoList/images/mytodolist.gif +0 -0
  25. package/docs/academy/01-GetStarted/02-ToDoList/images/reducers.png +0 -0
  26. package/docs/academy/01-GetStarted/02-ToDoList/images/vscode.png +0 -0
  27. package/docs/academy/01-GetStarted/styles.module.css +99 -0
  28. package/docs/academy/02-AdvancedTutorial/01-Create/00-BuilderTools.md +234 -0
  29. package/docs/academy/02-AdvancedTutorial/01-Create/01-SetupBuilderEnvironment.md +247 -0
  30. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/04-UtilitiesAndTips.md +79 -0
  31. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/01-SetupBuilderEnvironment.md +216 -0
  32. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/02-CreateNewPowerhouseProject.md +78 -0
  33. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/03-DefineChatroomDocumentModel.md +139 -0
  34. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/04-ImplementOperationReducers.md +364 -0
  35. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/05-ImplementChatroomEditor.md +194 -0
  36. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/06-LaunchALocalReactor.md +15 -0
  37. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/_category_.json +8 -0
  38. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-1.png +0 -0
  39. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-2.png +0 -0
  40. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-3.png +0 -0
  41. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-4.png +0 -0
  42. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image-5.png +0 -0
  43. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/image.png +0 -0
  44. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/ChatRoomConnectApp.gif +0 -0
  45. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/ChatRoomTest.gif +0 -0
  46. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/completeEditor.png +0 -0
  47. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/form.png +0 -0
  48. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/reducers.png +0 -0
  49. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/Chatroom/images/vscode.png +0 -0
  50. package/docs/academy/02-AdvancedTutorial/01-Create/02-MoreTutorials/_category_.json +8 -0
  51. package/docs/academy/02-AdvancedTutorial/01-Create/02-StandardDocumentModelWorkflow.md +229 -0
  52. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/01-BuildingBeautifulDocumentEditors.md +109 -0
  53. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/02-ConfiguringDrives.md +51 -0
  54. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/03-BuildingADriveExplorer.md +174 -0
  55. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/01-OperationHistory.md +67 -0
  56. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/02-RevisionHistoryTimeline.md +132 -0
  57. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/_category_.json +7 -0
  58. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/images/committer-address-popup.png +0 -0
  59. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/images/revision-hash-popup.png +0 -0
  60. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/images/revision-history-list.png +0 -0
  61. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/07-DocumentTools/images/signature-details-popup.png +0 -0
  62. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/_category_.json +8 -0
  63. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/images/CreateDrive.png +0 -0
  64. package/docs/academy/02-AdvancedTutorial/03-BuildingUserExperiences/images/mytodolist.gif +0 -0
  65. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/01-ReadingAndWritingThroughTheAPI.mdx +121 -0
  66. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/02-GraphQLAtPowerhouse.md +156 -0
  67. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/03-WorkingWithSubgraphs/02-GraphQLAndSubgraphs.mdx +119 -0
  68. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/03-WorkingWithSubgraphs/03-WorkingWithSubgraphs.md +312 -0
  69. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/03-WorkingWithSubgraphs/_category_.json +8 -0
  70. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/04-analytics-processor.md +342 -0
  71. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/01-SetupBuilderEnvironment.md +215 -0
  72. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/02-CreateNewPowerhouseProject.md +55 -0
  73. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/03-GenerateAnAnalyticsProcessor.md +173 -0
  74. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/04-UpdateAnalyticsProcessor.md +223 -0
  75. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/_category_.json +8 -0
  76. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Create-SPV.gif +0 -0
  77. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Create-a-new-asset.png +0 -0
  78. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Create-a-transaction.gif +0 -0
  79. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/Transaction-table.png +0 -0
  80. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/create-a-new-RWA-document.gif +0 -0
  81. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/05-AnalyticsProcessorTutorial/images/granularity.png +0 -0
  82. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/QueryingADocumentWithGraphQL.md +244 -0
  83. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/listener-raw.png +0 -0
  84. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/raw-reports1.png +0 -0
  85. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/raw-reports2.png +0 -0
  86. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/GraphQL References/rwa-reports/rwaRegister.png +0 -0
  87. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/apse.png +0 -0
  88. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/best-practices.md +60 -0
  89. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/filter.png +0 -0
  90. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/filteroptions.png +0 -0
  91. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/graphql/index.md +166 -0
  92. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/graphql/integration.md +75 -0
  93. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/dbs.png +0 -0
  94. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/high-level.jpg +0 -0
  95. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/indexeddb.png +0 -0
  96. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/libs-core.jpg +0 -0
  97. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/libs.jpg +0 -0
  98. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/lod.jpg +0 -0
  99. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/logo.png +0 -0
  100. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/navbar.png +0 -0
  101. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-1.jpg +0 -0
  102. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-2.jpg +0 -0
  103. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-3.jpg +0 -0
  104. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-4.jpg +0 -0
  105. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-5.jpg +0 -0
  106. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/overview-6.jpg +0 -0
  107. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/paths-1.jpg +0 -0
  108. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/images/paths-2.jpg +0 -0
  109. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/intro.md +149 -0
  110. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/benchmarks.md +27 -0
  111. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/browser.md +77 -0
  112. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/compatibility.md +14 -0
  113. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/index.md +230 -0
  114. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/memory.md +72 -0
  115. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/pg.md +63 -0
  116. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/schema.md +14 -0
  117. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/typescript/utilities.md +102 -0
  118. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/use-cases/index.md +7 -0
  119. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/use-cases/maker.md +652 -0
  120. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/06-Analytics Engine/use-cases/processors.md +3 -0
  121. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/_category_.json +8 -0
  122. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/images/OperationHistory.png +0 -0
  123. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/images/OperationsQuery.png +0 -0
  124. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/images/QueryDocumentID.png +0 -0
  125. package/docs/academy/02-AdvancedTutorial/04-WorkWithData/images/SwitchboardButton.png +0 -0
  126. package/docs/academy/02-AdvancedTutorial/05-Launch/00-IntegrateInAFront-End +3 -0
  127. package/docs/academy/02-AdvancedTutorial/05-Launch/01-IntroducingFusion +18 -0
  128. package/docs/academy/02-AdvancedTutorial/05-Launch/02-IntroductionToPackages.md +79 -0
  129. package/docs/academy/02-AdvancedTutorial/05-Launch/02-PublishYourProject.md +230 -0
  130. package/docs/academy/02-AdvancedTutorial/05-Launch/03-RunOnACloudServer.md +279 -0
  131. package/docs/academy/02-AdvancedTutorial/05-Launch/03-SetupEnvironment.md +436 -0
  132. package/docs/academy/02-AdvancedTutorial/05-Launch/04-GraphQLNamespacing +44 -0
  133. package/docs/academy/02-AdvancedTutorial/05-Launch/05-LaunchYourBackend.md +3 -0
  134. package/docs/academy/02-AdvancedTutorial/05-Launch/06-LaunchYourFrontend.md +3 -0
  135. package/docs/academy/02-AdvancedTutorial/05-Launch/_category_.json +8 -0
  136. package/docs/academy/02-AdvancedTutorial/05-Launch/images/SSHConnection.png +0 -0
  137. package/docs/academy/02-AdvancedTutorial/05-Launch/images/homedesign.png +0 -0
  138. package/docs/academy/02-AdvancedTutorial/05-Launch/images/keyconcepts.png +0 -0
  139. package/docs/academy/02-AdvancedTutorial/05-Launch/images/tutorialschema.png +0 -0
  140. package/docs/academy/02-AdvancedTutorial/06-Authorization/Authorization.md +100 -0
  141. package/docs/academy/02-AdvancedTutorial/_category_.json +7 -0
  142. package/docs/academy/03-APIReferences/00-PowerhouseCLI.md +1 -0
  143. package/docs/academy/03-APIReferences/_category_.json +7 -0
  144. package/docs/academy/04-ComponentLibrary/01-PowerhouseDesignSystem.md +94 -0
  145. package/docs/academy/04-ComponentLibrary/02-BuildingWithScalars.md +54 -0
  146. package/docs/academy/04-ComponentLibrary/03-Scalar-Components/01-phid-field.mdx +72 -0
  147. package/docs/academy/04-ComponentLibrary/03-Scalar-Components/02-input-field.mdx +0 -0
  148. package/docs/academy/04-ComponentLibrary/04-Complex-Components/01-sidebar.mdx +36 -0
  149. package/docs/academy/04-ComponentLibrary/05-Layout-Components/01-test-toupdate.mdx +61 -0
  150. package/docs/academy/04-ComponentLibrary/06-Fragments/01-test-toupdate.mdx +61 -0
  151. package/docs/academy/04-ComponentLibrary/_category_.json +8 -0
  152. package/docs/academy/05-Architecture/00-PowerhouseArchitecture.md +50 -0
  153. package/docs/academy/05-Architecture/01-WorkingWithTheReactor.md +48 -0
  154. package/docs/academy/05-Architecture/02-ReferencingMonorepoPackages +65 -0
  155. package/docs/academy/05-Architecture/04-MovingBeyondCRUD +61 -0
  156. package/docs/academy/05-Architecture/05-DocumentModelTheory/01-WhatIsADocumentModel.md +188 -0
  157. package/docs/academy/05-Architecture/05-DocumentModelTheory/02-DAOandDocumentsModelsQ+A.md +177 -0
  158. package/docs/academy/05-Architecture/05-DocumentModelTheory/02-domain-modeling.md +103 -0
  159. package/docs/academy/05-Architecture/05-DocumentModelTheory/03-BenefitsOfDocumentModels.md +95 -0
  160. package/docs/academy/05-Architecture/05-DocumentModelTheory/05-best-practices.md +257 -0
  161. package/docs/academy/05-Architecture/05-DocumentModelTheory/_category_.json +8 -0
  162. package/docs/academy/05-Architecture/05-DocumentModelTheory/three-data-layers.png +0 -0
  163. package/docs/academy/05-Architecture/_category_.json +7 -0
  164. package/docs/academy/05-Architecture/images/image.png +0 -0
  165. package/docs/academy/06-Cookbook.md +905 -0
  166. package/docs/academy/07-Glossary.md +50 -0
  167. package/docs/bookofpowerhouse/01-Overview.md +29 -0
  168. package/docs/bookofpowerhouse/02-GeneralFrameworkAndPhilosophy.md +15 -0
  169. package/docs/bookofpowerhouse/03-PowerhouseSoftwareArchitecture.md +33 -0
  170. package/docs/bookofpowerhouse/04-DevelopmentApproaches.md +36 -0
  171. package/docs/bookofpowerhouse/05-SNOsandANewModelForOSSandPublicGoods.md +73 -0
  172. package/docs/bookofpowerhouse/06-SNOsInActionAndPlatformEconomies.md +17 -0
  173. package/docs/renown/01-intro.md +18 -0
  174. package/docs/renown/02-renown-login-flow.md +60 -0
  175. package/docusaurus +0 -0
  176. package/docusaurus.config.ts +170 -0
  177. package/package.json +50 -0
  178. package/powerhouse-docs@0.0.0 +0 -0
  179. package/sidebars.ts +33 -0
  180. package/src/components/HomepageFeatures/index.tsx +250 -0
  181. package/src/components/HomepageFeatures/styles.module.css +267 -0
  182. package/src/css/custom.css +450 -0
  183. package/src/pages/index.module.css +37 -0
  184. package/src/pages/index.tsx +42 -0
  185. package/src/pages/markdown-page.md +7 -0
  186. package/static/.nojekyll +0 -0
  187. package/static/fonts/FranieBold.otf +0 -0
  188. package/static/fonts/FranieRegular.otf +0 -0
  189. package/static/img/Powerhouse Website Drive.png +0 -0
  190. package/static/img/Powerhouse Website Storage Layer (1).png +0 -0
  191. package/static/img/Powerhouse Website Storage Layer.png +0 -0
  192. package/static/img/Powerhouse-main-light.svg +13 -0
  193. package/static/img/Powerhouse-main.svg +13 -0
  194. package/static/img/Renown Intro Diagram.png +0 -0
  195. package/static/img/Union.svg +3 -0
  196. package/static/img/academy/icons/Advanced.svg +4 -0
  197. package/static/img/academy/icons/Book.svg +5 -0
  198. package/static/img/academy/icons/Cookbook.svg +3 -0
  199. package/static/img/academy/icons/Create.svg +3 -0
  200. package/static/img/academy/icons/Data.svg +3 -0
  201. package/static/img/academy/icons/Editor.svg +3 -0
  202. package/static/img/academy/icons/Flash.svg +3 -0
  203. package/static/img/academy/icons/Launch.svg +3 -0
  204. package/static/img/academy-icon.png +0 -0
  205. package/static/img/connect-icon.png +0 -0
  206. package/static/img/connect.png +0 -0
  207. package/static/img/docusaurus-social-card.jpg +0 -0
  208. package/static/img/docusaurus.png +0 -0
  209. package/static/img/empty-background.png +0 -0
  210. package/static/img/favicon.ico +0 -0
  211. package/static/img/fusion-icon.png +0 -0
  212. package/static/img/fusion.png +0 -0
  213. package/static/img/ph-icon-light.svg +3 -0
  214. package/static/img/powerhouse-layer.png +0 -0
  215. package/static/img/powerhouse-storage-layer.png +0 -0
  216. package/static/img/reactor.png +0 -0
  217. package/static/img/renown-icon.png +0 -0
  218. package/static/img/renown.png +0 -0
  219. package/static/img/switchboard-icon.png +0 -0
  220. package/static/img/switchboard.png +0 -0
  221. package/static/img/undraw_docusaurus_mountain.svg +171 -0
  222. package/static/img/undraw_docusaurus_react.svg +170 -0
  223. package/static/img/undraw_docusaurus_tree.svg +40 -0
  224. package/static/img/video-placeholder.svg +16 -0
  225. package/static.json +7 -0
  226. package/tsconfig.json +7 -0
@@ -0,0 +1,188 @@
1
+ # What is a Document Model?
2
+
3
+ A Document Model is:
4
+ - A structured framework that represents and **manages business logic** within a digital environment.
5
+ - A sophisticated template that **encapsulates the essential aspects of a digital process or a set of data**.
6
+ - A blueprints that define how data is **captured, manipulated, and visualised** within a system.
7
+ - A **standardized way to store, modify, and query data** in scalable, decentralized applications.
8
+
9
+ ### **How does a document model function?**
10
+
11
+ #### **Structure and Composition**
12
+
13
+ Each document model consists of three key components:
14
+
15
+ 1. **State Schema** – Defines the structure of the document.
16
+ 2. **Document Operations** – Defines how the document can be modified.
17
+ 3. **Event History** – Maintains an append-only log of changes.
18
+
19
+ Document models leverage **event sourcing, CQRS (Command Query Responsibility Segregation), and an append-only architecture** to ensure immutability, auditability, and scalability.
20
+
21
+ ---
22
+
23
+ ## **1. Structure of a Document Model**
24
+
25
+ A document model consists of the following key components:
26
+
27
+ ### **1.1 State Schema**
28
+
29
+ The **state schema** defines the structure of the document, including its fields and data types. It serves as a blueprint for how data is stored and validated.
30
+
31
+ Example of a **GraphQL-like state schema** for an invoice document:
32
+
33
+ ```graphql
34
+ type InvoiceState {
35
+ id: OID! # Unique identifier for the invoice
36
+ issuer: OID! # Reference to the issuing entity
37
+ recipient: OID! # Reference to the recipient entity
38
+ status: String @default(value: "DRAFT") # Invoice status
39
+ dueDate: DateTime # Payment due date
40
+ lineItems: [LineItem!]! # List of line items
41
+ totalAmount: Currency # Computed field for total invoice value
42
+ }
43
+
44
+ type LineItem {
45
+ id: OID!
46
+ description: String
47
+ quantity: Int @default(value: 1)
48
+ unitPrice: Currency
49
+ }
50
+ ```
51
+
52
+ ### **State Schema Features:**
53
+
54
+ - Uses **GraphQL-like definitions** for a **clear, structured schema**.
55
+ - Supports **custom scalar types** like `OID`, `Currency`, and `DateTime`. Or other Web3 specific scalars
56
+ - Allows **default values** using `@default(value: "DRAFT")`.
57
+ - Defines **relationships** using object references (`OID!`).
58
+
59
+ The state schema acts as a **template** for document instances. Every new invoice created will follow this structure.
60
+
61
+ ---
62
+
63
+ ### **1.2 Document Operations**
64
+
65
+ Document models are **append-only**, meaning changes are not made directly to the document state. Instead, **document operations** define valid state transitions.
66
+
67
+ Example operations for modifying an invoice:
68
+
69
+ ```graphql
70
+ input AddLineItemInput {
71
+ invoiceId: OID!
72
+ description: String
73
+ quantity: Int @default(value: 1)
74
+ unitPrice: Currency
75
+ }
76
+
77
+ input UpdateRecipientInput {
78
+ invoiceId: OID!
79
+ newRecipient: OID!
80
+ }
81
+
82
+ input MarkAsPaidInput {
83
+ invoiceId: OID!
84
+ }
85
+ ```
86
+
87
+ Each operation **modifies the document state** without altering past data. Instead, a new event is appended to the document history.
88
+
89
+ ---
90
+
91
+ ### **1.3 Event History (Append-Only Log)**
92
+
93
+ Every operation applied to a document is **stored as an event** in an append-only log.
94
+
95
+ #### **Example event log for an invoice document:**
96
+
97
+ ```json
98
+ [
99
+ { "timestamp": 1700000001, "operation": "CREATE_INVOICE", "data": { "id": "inv-001", "issuer": "company-123", "recipient": "client-456" } },
100
+ { "timestamp": 1700000100, "operation": "ADD_LINE_ITEM", "data": { "description": "Software Development", "quantity": 10, "unitPrice": 100 } },
101
+ { "timestamp": 1700000200, "operation": "MARK_AS_PAID", "data": {}
102
+ ```
103
+
104
+ ### **Event History Benefits:**
105
+
106
+ - Provides a **transparent audit trail** of changes.
107
+ - Enables **time travel debugging** by reconstructing past states.
108
+ - Supports **event sourcing**, allowing developers to **replay events** to restore state.
109
+
110
+ ---
111
+
112
+ ## **2. How Document Models Work Technically**
113
+
114
+ Document models in Powerhouse rely on **event-driven architecture, event sourcing, and CQRS principles**. Here’s a step-by-step breakdown:
115
+
116
+ ### **2.1 Document Creation**
117
+
118
+ 1. A user (or system) **submits an operation** to create a new document.
119
+ 2. The document model **validates** the input data against the state schema.
120
+ 3. The system **appends the operation** as an event in the document history.
121
+ 4. The **initial state is computed** by applying the recorded events.
122
+
123
+ **Example:**
124
+
125
+ ```json
126
+ {
127
+ "operation": "CREATE_INVOICE",
128
+ "data": { "id": "inv-001", "issuer": "company-123", "recipient": "client-456" }
129
+ }
130
+ ```
131
+
132
+ ---
133
+
134
+ ### **2.2 Document Modification**
135
+
136
+ 1. A user submits an **operation** (e.g., `ADD_LINE_ITEM`).
137
+ 2. The **event is appended** to the document history.
138
+ 3. The **state transition logic updates the computed state**.
139
+ 4. The UI re-renders the updated document.
140
+
141
+ **Example:**
142
+ Adding a line item:
143
+
144
+ ```json
145
+ {
146
+ "operation": "ADD_LINE_ITEM",
147
+ "data": { "description": "Software Development", "quantity": 10, "unitPrice": 100 }
148
+ }
149
+ ```
150
+
151
+ Since changes are **not applied directly**, this model is **highly scalable and auditable**.
152
+
153
+ ---
154
+
155
+ ### **2.3 Querying Document Models**
156
+
157
+ Powerhouse uses **GraphQL queries** to fetch document states efficiently. Because documents store structured data, developers can instantly query:
158
+
159
+ ```graphql
160
+ query {
161
+ invoice(id: "inv-001") {
162
+ issuer
163
+ recipient
164
+ status
165
+ lineItems {
166
+ description
167
+ quantity
168
+ unitPrice
169
+ }
170
+ }
171
+ }
172
+ ```
173
+
174
+ This removes the need for **complex database joins** and allows for **fast, structured access to data**.
175
+
176
+ ---
177
+
178
+ ### **What do document models unlock?**
179
+
180
+ Document Models offer a range of features that can be leveraged to create sophisticated, automated, and data-driven solutions:
181
+
182
+ - **API Integration**: Document Models can be integrated with Switchboard API or external APIs, allowing for the exchange of data between Connect and other systems or services.
183
+
184
+ - **Data Analysi**s**: The structured nature of Document Models makes them ideal for data analysis and reporting. Users can extract insights and generate reports based on the data captured within the models which is accessible through read models. (Operational data + Analytics data which takes into account time series of the data).
185
+
186
+ - **Version Control**: Similar to how Git manages changes to source code, Document Models in Connect will support version control, enabling users to track changes, compare different versions, and ensure data integrity over time.
187
+
188
+ Document Models are a powerful primitive within the Powerhouse vision, offering a flexible, structured, and efficient way to manage business logic and data.
@@ -0,0 +1,177 @@
1
+ # Q&A Guide for DAO's
2
+
3
+ ## **1. Introduction to Powerhouse and Document Models**
4
+
5
+ ### **1.1 What is Powerhouse?**
6
+
7
+ Powerhouse is an open-source initiative focused on optimizing decentralized operations. It provides a structured **DAO operating system** designed to help organizations **automate processes, integrate AI**, and establish scalable workflows.
8
+
9
+ ### **1.2 What is Powerhouse’s ultimate goal?**
10
+
11
+ Powerhouse aims to **transform decentralized operations** by providing a structured **organizational framework** and technology stack. It focuses on **capturing and automating workflows** through Document Models, enabling DAOs to function more efficiently.
12
+
13
+ ### **1.3 What are the five host apps that form Powerhouse’s ecosystem**
14
+
15
+ Powerhouse’s ecosystem consists of **five core applications**:
16
+
17
+ - **Fusion** – A public collaboration platform.
18
+ - **Connect** – A private workspace for contributors.
19
+ - **Renown** – A decentralized identity and reputation hub.
20
+ - **Switchboard** – An open data API that enables data-driven workflows.
21
+ - **Academy** – A learning and onboarding platform for contributors.
22
+
23
+ ---
24
+
25
+ ## **2. Understanding Document Models**
26
+
27
+ ### **2.1 What is a Document Model in simple terms?**
28
+
29
+ Think of a **Document Model** as a **smart template**. It structures work, ensures **consistency**, and helps **capture necessary data** systematically—like an **intelligent checklist** that guides workflows and enforces best practices.
30
+
31
+ ### **2.2 How do Document Models differ from traditional documents?**
32
+
33
+ - Traditional documents (.docx, .pdf) offer flexibility but **lack structure**.
34
+ - Document Models are **structured templates** that follow predefined **business logic**.
35
+ - They are **interactive, machine-readable, and optimized** for automation.
36
+
37
+ ### **2.3 Why are Document Models essential for DAOs and decentralized organizations?**
38
+
39
+ DAOs often struggle with **disorganization, inconsistent data, and inefficient workflows**. Document Models help by:
40
+
41
+ - **Structuring workflows** to avoid confusion.
42
+ - **Ensuring data consistency** for decision-making.
43
+ - **Automating repetitive processes** to reduce errors.
44
+
45
+ ### **2.4 How do Document Models help individuals working in DAOs?**
46
+
47
+ Instead of **overcomplicating** workflows, Document Models:
48
+
49
+ - **Streamline** operations.
50
+ - Reduce the need for **manual coordination**.
51
+ - Allow contributors to focus on **core work** without worrying about administrative overhead.
52
+
53
+ ---
54
+
55
+ ## **3. Document Models in Action**
56
+
57
+ ### **3.1 How do stakeholders interact with Document Models in their daily tasks?**
58
+
59
+ Stakeholders use Document Models to:
60
+
61
+ - **Input structured data** rather than free text.
62
+ - Follow **predefined steps** to ensure completeness.
63
+ - **Collaborate seamlessly**, reducing the risk of miscommunication.
64
+
65
+ ### **3.2 How do Document Models improve DAO efficiency?**
66
+
67
+ - They serve as a **central reference point**, reducing confusion.
68
+ - They **prevent knowledge loss** by capturing business logic.
69
+ - They **enhance operational transparency**, making it easier to track contributions and changes.
70
+
71
+ ### **3.3 Can Document Models adapt to the changing needs of an organization?**
72
+
73
+ Yes, Document Models are **flexible**. They evolve alongside the DAO, ensuring:
74
+
75
+ - **New processes and policies** are easily integrated.
76
+ - Workflows remain **aligned with organizational goals**.
77
+
78
+ ---
79
+
80
+ ## **4. Technical Aspects of Document Models**
81
+
82
+ ### **4.1 What is the architecture of a Document Model?**
83
+
84
+ A Document Model consists of:
85
+
86
+ - **State schema** – Defines the structure of the document.
87
+ - **Operations** – Specify how the document can change over time.
88
+ - **History tracking** – Ensures that all changes are recorded for traceability.
89
+
90
+ ### **4.2 How do Document Models support process automation?**
91
+
92
+ Document Models operate on a **transaction-based design**, similar to blockchain:
93
+
94
+ - Each modification is stored as a **transaction**.
95
+ - Changes synchronize across instances, ensuring **data consistency**.
96
+ - This enables **machine-readability**, making automation **seamless**.
97
+
98
+ ### **4.3 What makes Document Models better than traditional manual processes?**
99
+
100
+ Traditional processes rely on **manual coordination and fragmented tools**, which lead to:
101
+
102
+ - **Miscommunication and errors**.
103
+ - **Time-consuming, manual work**.
104
+ - **Lack of visibility into workflows**.
105
+
106
+ With Document Models:
107
+
108
+ - **Processes are automated**.
109
+ - **Errors are minimized**.
110
+ - **Workflows are unified**, allowing seamless collaboration.
111
+
112
+ ### **4.4 How do Document Models drive real-time actions like dashboards and reports?**
113
+
114
+ Since Document Models are **machine-readable**, they:
115
+
116
+ - Provide data to **dashboards, widgets, and analytics tools**.
117
+ - Enable **real-time process automation**, like task assignments and payments.
118
+ - Function similarly to **Zapier for DAOs**, triggering automated workflows.
119
+
120
+ ---
121
+
122
+ ## **5. The Role of Document Models in Powerhouse’s Ecosystem**
123
+
124
+ ### **5.1 How do Document Models integrate with Powerhouse’s applications?**
125
+
126
+ - **Connect** – Users interact with Document Models for daily operations.
127
+ - **Fusion** – Public-facing collaborations use structured Document Models.
128
+ - **Switchboard** – Serves as the API that pulls and organizes data.
129
+ - **Renown** – Uses Document Models for decentralized reputation tracking.
130
+ - **Academy** – Trains new users on how to use Document Models effectively.
131
+
132
+ ### **5.2 How do Document Models bridge the gap between business analysts and software developers?**
133
+
134
+ Document Models **standardize** business logic in a format that both **business stakeholders and developers** can understand, ensuring:
135
+
136
+ - Clear **documentation of workflows**.
137
+ - Efficient **translation of business needs into software**.
138
+
139
+ ### **5.3 Why is historical data access important for DAOs?**
140
+
141
+ Running a DAO on a Document Model-based system allows:
142
+
143
+ - **Version control** – Understanding past decisions.
144
+ - **Easy audits** – Ensuring compliance and transparency.
145
+ - **Better forecasting** – Using historical data for informed decisions.
146
+
147
+ ### **5.4 How do Document Models prepare organizations for AI integration and automation?**
148
+
149
+ - Clean **data flows** allow AI models to **learn from structured information**.
150
+ - Document Models **train AI assistants** to automate workflows.
151
+ - This paves the way for **custom AI-powered DAOs**.
152
+
153
+ ### **5.5 Why is organization-specific data crucial for AI and automation?**
154
+
155
+ - Generic AI models lack **deep organizational context**.
156
+ - Organization-specific data enables **highly accurate AI-driven decision-making**.
157
+ - Document Models help structure this data for AI **readiness and automation**.
158
+
159
+ ---
160
+
161
+ ## **6. The Future of Document Models in DAOs**
162
+
163
+ ### **6.1 What happens if a DAO doesn’t use Document Models?**
164
+
165
+ Without Document Models, DAOs risk:
166
+
167
+ - **Disorganization** – Lack of structured processes.
168
+ - **Inefficiency** – Time-consuming manual work.
169
+ - **Data inconsistency** – Making decisions harder.
170
+
171
+ ### **6.2 How do Document Models contribute to the long-term success of decentralized organizations?**
172
+
173
+ By **providing structure, automation, and transparency**, Document Models:
174
+
175
+ - Reduce **operational overhead**.
176
+ - Improve **decision-making** through structured data.
177
+ - Enable **scalability**, allowing DAOs to grow efficiently.
@@ -0,0 +1,103 @@
1
+ ---
2
+ id: Domain Modeling
3
+ title: Domain Modeling
4
+ description: This guide will introduce you to the principles of domain modeling and provide a step-by-step process for creating your first GraphQL state schema for a document model.
5
+ slug: /domain-modeling
6
+ ---
7
+
8
+ # Introduction to Domain Modeling with Powerhouse
9
+
10
+ This guide will introduce you to the principles of domain modeling and provide a step-by-step process for creating your first GraphQL state schema for a document model.
11
+
12
+ ## What is Domain Modeling?
13
+
14
+ Domain modeling in Powerhouse revolves around defining the structure and behavior of business data using **document models**. Each document model specifies:
15
+ 1. **State Schema**: The data structure.
16
+ 2. **Operations**: Valid transformations of the state.
17
+
18
+ Document models are at the core of Powerhouse's event-sourcing architecture, enabling robust and transparent workflows for specific **"business domain's**. Which can range from finances, people-ops or development, but can get as specific as 'invoicing', 'reporting' or 'quality-assurance-checklist'.
19
+
20
+ ## The analysis and design process
21
+
22
+ The process for business analysts is a user-centered and iterative approach to problem-solving within a specific business domain. It involves collaboration with expert stakeholders to understand their needs, define problem statements, and develop actionable solutions. The process might include steps such as:
23
+
24
+ - Interviewing users & business domain experts
25
+ - Documenting user journeys to come to a problem statements
26
+ - Ideation & solution exploration
27
+ - Defining new use case scenario's
28
+ - Protyping and wireframing for user validation
29
+ - Implement the document model schema definition.
30
+
31
+ The team at Powerhouse is currently welcoming new business partners to support them in their analysis and design needs via our [discord server](https://discord.com/invite/h7GKvqDyDP)
32
+
33
+ For our introduction to domain modeling we will instead of an intense analysis and design process stick to a domain that's quite familiar to most of us: 'Invoicing'.
34
+
35
+ ---
36
+
37
+ ## Steps to Create Your First GraphQL Document Model Schema Definition
38
+
39
+ First we'll guide you through the necessary steps of reaching your end goal. At the end we'll introduce our custom tooling, "the document-model-editor" which you can use inside Connect to define your document model schema definition.
40
+
41
+ ### Step 1: Understand the Basics of a Document Model
42
+ A document model consists of:
43
+ - **Document State Schema**: Defines the shape of the data.
44
+ - **Document Operations**: Specify how the state can change.
45
+
46
+ For example, an `Invoice` document might include:
47
+ - **State Schema**: Recipient, line items, status.
48
+ - **Operations**: Add line item, update recipient.
49
+
50
+ ### Step 2: Define the GraphQL State Schema
51
+ Use GraphQL to model the document state. All fields should:
52
+ 1. Be **optional** to allow creating an empty document.
53
+ 2. Have **defaults** where required using custom directives.
54
+
55
+ #### Example
56
+ ```graphql
57
+ type InvoiceState {
58
+ id: OID!
59
+ status: String @default(value: "DRAFT")
60
+ recipient: String
61
+ dueDate: DateTime
62
+ lineItems: [LineItem!]!
63
+ }
64
+
65
+ type LineItem {
66
+ id: OID!
67
+ description: String
68
+ quantity: Int @default(value: 1)
69
+ unitPrice: Currency
70
+ }
71
+ ```
72
+
73
+ ### Step 3: Define Document Operations
74
+ Operations represent user actions as state transitions. Define these with GraphQL input types.
75
+
76
+ #### Example
77
+ ```graphql
78
+ input AddLineItemInput {
79
+ invoiceId: OID!
80
+ description: String
81
+ quantity: Int @default(value: 1)
82
+ unitPrice: Currency
83
+ }
84
+ ```
85
+
86
+ ### Step 4: Implement Reducer Functions
87
+ Each operation requires a reducer function to handle state transitions. Start by scaffolding the reducers, then implement specific business logic.
88
+
89
+ #### Example
90
+ ```typescript
91
+ function addLineItem(state, { input }) {
92
+ const { description, quantity, unitPrice } = input;
93
+ const lineItem = { id: generateOID(), description, quantity, unitPrice };
94
+ return {
95
+ ...state,
96
+ lineItems: [...state.lineItems, lineItem],
97
+ };
98
+ }
99
+ ```
100
+
101
+ ### Step 6: Test Your Document Model
102
+ Validate the operations by simulating state transitions.
103
+ Use the Powerhouse Reactor for local-first development, enabling offline editing and testing. Ensure the document history maintains an immutable audit trail of all operations.
@@ -0,0 +1,95 @@
1
+ # Benefits of Document Models
2
+
3
+ As you might have read in our introduction, domain modeling is a foundational practice in the Powerhouse ecosystem, enabling developers to build scalable, structured, and maintainable applications. At the core of Powerhouse's domain modeling approach is the **document model**, a powerful abstraction that encapsulates data, document-operations, and lifecycle management in an append-only data structure.
4
+
5
+ For developers, this means:
6
+
7
+ - **Less boilerplate code** to manage state.
8
+ - **More focus on building intuitive front-end applications**.
9
+ - **Greater flexibility** in designing custom workflows.
10
+ - **Seamless blockchain and decentralized system integrations**.
11
+
12
+ Document models seamlessly integrate with decentralized, blockchain-based architectures because of their append-only nature, providing a structured and event-driven framework that supports real-time collaboration, efficient data retrieval, and modular UI development. This chapter explores the key benefits of document models in Powerhouse and how they empower developers to build robust applications. Soon that will be you!
13
+
14
+ ---
15
+
16
+ ## **1. Append-Only Structure and Blockchain Compatibility**
17
+
18
+ One of the fundamental advantages of document models is their **append-only** nature, which aligns perfectly with blockchain transaction-based patterns. In this model:
19
+
20
+ - Every modification to a document is stored as a new **document operation**, rather than overwriting existing data.
21
+ - The full history of a document remains **immutable**, creating a transparent and auditable record.
22
+ - This structure makes it easier to integrate with blockchain-based storage or decentralized state machines, where **transactions are recorded in sequential order**.
23
+
24
+ By leveraging append-only principles, document models ensure **data integrity, transparency, and recoverability**, making them ideal for decentralized applications and trustless environments.
25
+
26
+ ## **2. Leveraging Flux Patterns and Event Sourcing Principles**
27
+
28
+ Document models in Powerhouse naturally fit into an **event-driven architecture**, benefiting from:
29
+
30
+ - **Flux Patterns**: Changes to a document follow a **unidirectional data flow**, where:
31
+ - The **user triggers an action** (e.g., updates a field in an invoice).
32
+ - The action is **dispatched** as a document operation.
33
+ - The **state updates** based on the append-only event history.
34
+ - The **UI re-renders** with the updated state.
35
+ - **Event Sourcing Principles**:
36
+ - Every document operation is **logged as an immutable event**, rather than modifying the state directly.
37
+ - This enables **time travel debugging**, where developers can inspect historical document states.
38
+ - Read models can be **reconstructed from past events**, allowing flexible data recovery and analytics.
39
+
40
+ This event-driven approach provides **high scalability, resilience, and better debugging capabilities**, making it ideal for complex applications with many state changes.
41
+
42
+ ---
43
+
44
+ ## **3. Querying with the Schema Definition Language**
45
+
46
+ Powerhouse document models are defined using a **schema definition language (SDL)**, which provides a structured format for defining:
47
+
48
+ - Document state schemas
49
+ - The set of allowed operations
50
+ - Relationships between entities or data objects in the SDL
51
+
52
+ Because document models are well-structured, they enable immediate queryability. Developers can therefor:
53
+
54
+ - **Instantly retrieve document states** based on their schemas.
55
+ - **Use GraphQL queries** to access document data via the Switchboard API
56
+ - **Aggregate read models** from document operations to optimize data fetching.
57
+ - Run data processors to analyse, slice and redirect data as you like.
58
+
59
+ This built-in queryability allows for real-time, on-demand access to structured data.
60
+
61
+ ---
62
+
63
+ ## **4. Automated State Management for Developers**
64
+
65
+ Traditionally, handling state management is one of the most complex aspects of front-end development. Powerhouse's document model framework simplifies this by:
66
+
67
+ - Providing **built-in state tracking** for every document.
68
+ - Automatically maintaining **document revisions** and update history.
69
+ - Ensuring **eventual consistency** across distributed systems.
70
+
71
+ By **abstracting away state management**, developers can **focus purely on front-end development** without worrying about manual state synchronization, conflict resolution, or data integrity issues.
72
+
73
+ ---
74
+
75
+ ## **5. Modular and Extensible System**
76
+
77
+ Powerhouse’s document model framework is designed for **extensibility**:
78
+
79
+ - **Custom plugins** can introduce new document operations.
80
+ - **Computed fields** enable derived data without modifying the core schema.
81
+ - **Integration with AI contributors** allows automated data processing.
82
+
83
+ By decoupling data models from UI implementations and extending them with **custom plugins**, Powerhouse offers a flexible architecture that evolves with the needs of the organization.
84
+
85
+ ---
86
+
87
+ ## **7. Simplified Collaboration and Auditability**
88
+
89
+ Since document models maintain **immutable histories**, they offer:
90
+
91
+ - **Built-in audit trails**, making it easy to track changes over time.
92
+ - **Multi-user collaboration**, where contributors can asynchronously modify documents.
93
+ - **Role-based access control**, defining who can append which operations.
94
+
95
+ This structured collaboration makes document models ideal for **decentralized governance**, **cross-team workflows**, and **regulated industries** where transparency is critical.