@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,79 @@
1
+ # Intro to Packages
2
+
3
+ Packages of document models are a core structuring mechanism in the Powerhouse framework, allowing developers to group and manage related document models efficiently. These packages serve as modular collections of document definitions, ensuring consistency, scalability, and reusability across different applications.
4
+
5
+ By packaging document models together, developers can create well-organized, interoperable sets of data structures that capture the specific needs of various operational processes. Whether used for financial operations, governance, or contributor management, these packages streamline development and integration within Powerhouse's decentralized framework.
6
+
7
+ ### Key Features
8
+
9
+ - **Modular Structure** – Packages encapsulate related document models, making it easier to manage and deploy them as a cohesive unit.
10
+ - **Standardized Definitions** – Each document model within a package follows Powerhouse's structured schema approach, ensuring consistency in data representation.
11
+ - **Reusability and Extensibility** – Packages can be shared across different projects or extended with additional models as needed.
12
+ - **Dependency Management** – Developers can define dependencies between document models, ensuring proper relationships and data flows between interconnected components.
13
+ - **Automated Schema Evolution** – Versioning mechanisms allow document models within a package to evolve over time without breaking existing functionality.
14
+
15
+ ### Example Use Cases
16
+
17
+ - **Finance Package** – A set of document models handling invoices, payments, budgets, and financial reporting. link
18
+ - **Contributor Billing Package** – Defines document models for tracking work, invoicing, and facilitating payments (in both fiat and crypto) for contributors in decentralized organizations. link
19
+ - **Governance Package** – Models for proposals, voting, contributor agreements, and decision-making processes. link
20
+ - **People Ops Package** – Documents managing contributor profiles, roles, task assignments, and reputation tracking. link
21
+ - **Project Management Package** – Models for task tracking, milestones, resource allocation, and deliverables. link
22
+
23
+
24
+ A **Powerhouse Package** is a **modular unit** that defines and automates **data structures and workflows** within the Powerhouse ecosystem. Each package includes several components that work together to ensure **seamless interaction, data processing, and automation** for different areas of decentralized operations.
25
+
26
+ Packages follow a **scoped naming convention** based on the organization that owns them or created the package:
27
+
28
+ - `@powerhousedao` The organization behind Powerhouse.
29
+ - `@sky-ph` The Sky / MakerDAO organization with a -ph suffix to indicate it concerns Powerhouse ecosystem packages.
30
+ - `@myorg-ph` Your organization with the -ph suffix included.
31
+
32
+ Within a package, you'll find **several key modules**, each serving a distinct role in structuring and processing data.
33
+
34
+ ---
35
+
36
+ ## **Modules of a Powerhouse Package**
37
+
38
+ ### **1. Document Model**
39
+
40
+ The **core component** of any package, defining how data is structured and manipulated.
41
+
42
+ - Specifies **schemas** (data structures) and **state transitions** (operations).
43
+ - Serves as the foundation for decentralized workflows.
44
+ - **Example:** An **Invoice** document model might define fields like `issuer`, `recipient`, `amount`, and operations like `ADD_LINE_ITEM` or `MARK_AS_PAID`.
45
+
46
+ ### **2. Document Model Editor**
47
+
48
+ A **UI component** that allows users to **interact with document models visually**.
49
+
50
+ - Enables users to **create, modify, and manage** documents without coding.
51
+ - Supports multiple editors for a single document model, offering different **UI experiences** tailored to specific roles.
52
+
53
+ ### **3. Scripts**
54
+
55
+ **Automated actions** that run on demand or on a schedule.
56
+
57
+ - Executes **one-time or recurring tasks** within a package.
58
+ - Not continuously running—activated manually or at predefined intervals.
59
+ - **Example:** A script that **generates a weekly financial report** from invoice data.
60
+
61
+ ### **4. Processors**
62
+
63
+ **Event-driven background tasks** that react to document changes.
64
+
65
+ - Subscribes to **document operations or system events** and processes data automatically.
66
+ - Supports real-time **data updates, analytics, and workflow automation**.
67
+ - **Example:** A processor that **monitors new invoices** and updates an **analytics dashboard** in real-time.
68
+
69
+ ### **5. Drive-Apps**
70
+
71
+ **Custom interfaces** that provide enhanced ways to interact with a package's document models.
72
+
73
+ - Allows **visualization, sorting, and organization** of drive contents (e.g., **Kanban boards, list views**).
74
+ - Can aggregate data and display **key insights** from document models.
75
+ - **Example:** A Drive-App for **People Ops** might show a **dashboard of contributor profiles, role assignments, and activity logs**.
76
+
77
+ ---
78
+
79
+ Each of these modules plays a crucial role in making **Powerhouse Packages extensible, reusable, and efficient**, allowing developers and organizations to **streamline operations and automate workflows** within decentralized environments.
@@ -0,0 +1,230 @@
1
+ # Publish Your Package
2
+
3
+ This tutorial is a step by step guide tackling the following topics:
4
+ 1. the process of **building a powerhouse project**
5
+ 2. the process of **publishing it as a package**
6
+
7
+ :::info
8
+ Let's start with some **key concepts** that will help you understand the process we're going to go through in this tutorial.
9
+
10
+ - **Powerhouse Project**: The construction site of your package: A project is built with document models and editors which you will publish to NPM as a package with modules.
11
+ - **Powerhouse Modules**: The modules that are part of your project, such as the document models, editors, processors or scripts.
12
+ - **Powerhouse Drive Apps**: Customized drive interfaces that function as a drive add and enhance or augment the functionality of your documents and workflows within the drive.
13
+ - **Powerhouse Package**: A package is a collection of modules that are published to NPM and can be installed on a server instance or locally on your machine with help of the host apps such as Connect, Switchboard & Fusion. Organizations build packages for specific purposes or workflows.
14
+
15
+ ![Key Concepts](images/keyconcepts.png)
16
+ :::
17
+
18
+
19
+ ## 1. Building your project
20
+
21
+ To start building your project with it's dedicated document models and editors we'll run the following command:
22
+
23
+ ```bash
24
+ ph init
25
+ ```
26
+
27
+ <details>
28
+ <summary> Command not working? Did you install `ph-cmd`? </summary>
29
+
30
+ The Powerhouse CLI (`ph-cmd`) is a command-line interface tool that provides essential commands for managing Powerhouse projects. You can get access to the Powerhouse Ecosystem tools by installing them globally using:
31
+ ```bash
32
+ pnpm install -g ph-cmd
33
+ ```
34
+
35
+ For experimental features, use --version [version] which allows selecting a specific branch of our document-model-boilerplate. There are --dev and --staging options. Select `ph init --dev` to use the latest development version. Please be aware that this version can contain bugs and experimental features that aren't fully tested.
36
+
37
+ Key commands include:
38
+ - `ph connect` for running the Connect application locally
39
+ - `ph switchboard` or `ph reactor` for starting the API service
40
+ - `ph init` to start a new project and build a document model
41
+ - `ph help` to get an overview of all the available commands
42
+
43
+ This tool will be fundamental on your journey when creating, building, and running document models
44
+
45
+ </details>
46
+
47
+ <details>
48
+ <summary> Got `ph-cmd` installed, but command not working? Reset your package manager cache</summary>
49
+
50
+ If you need to reset your package manager, you can run the following commands for your package manager: (pnpm, npm, yarn)
51
+
52
+ ```bash
53
+ pnpm cache verify
54
+ pnpm store prune
55
+ pnpm cache clean --force
56
+
57
+ npx clear-npx-cache
58
+
59
+ npm cache verify
60
+ npm cache clean --force
61
+ npm cache verify
62
+
63
+ yarn cache list
64
+ yarn cache clean --force
65
+ yarn cache list
66
+ ```
67
+ </details>
68
+
69
+ <details>
70
+ <summary> How to make use of different branches? </summary>
71
+
72
+ When installing or using the Powerhouse CLI commands you are able to make use of the dev & staging branches. These branches contain more experimental features then the latest stable release the PH CLI uses by default. They can be used to get access to a bugfix or features under development.
73
+
74
+ | Command | Description |
75
+ |---------|-------------|
76
+ | **pnpm install -g ph-cmd** | Install latest stable version |
77
+ | **pnpm install -g ph-cmd@dev** | Install development version |
78
+ | **pnpm install -g ph-cmd@staging** | Install staging version |
79
+ | **ph init** | Use latest stable version of the boilerplate |
80
+ | **ph init --dev** | Use development version of the boilerplate |
81
+ | **ph init --staging** | Use staging version of the boilerplate |
82
+ | **ph use** | Switch all dependencies to latest production versions |
83
+ | **ph use dev** | Switch all dependencies to development versions |
84
+ | **ph use prod** | Switch all dependencies to production versions |
85
+
86
+ Please be aware that these versions can contain bugs and experimental features that aren't fully tested.
87
+ </details>
88
+
89
+ ### 1.1. Specifying your project details
90
+
91
+ When you are creating your own project, you will be asked to name your project.
92
+ Which will also become the package name when someone else wants to install it in a cloud environment via npm in the future.
93
+
94
+ Please feel free to navigate to the package.json file and fill in all the other available fields such as `name`, `version`, `author`, `license` and `main`.
95
+
96
+ ```bash
97
+ {
98
+ "name": "@your-org-ph/package-name", #Your organization name with the -ph suffix to indicate it's a powerhouse related organization & package.
99
+ "version": "1.0.0",
100
+ "author": "Your Name",
101
+ "license": "AGPL-3.0-only",
102
+ "main": "index.js"
103
+ }
104
+ ```
105
+
106
+ Now that you've created your powerhouse project you are ready to generate the necessary directory and file structure to add your document models.
107
+
108
+ ```bash
109
+ ph generate
110
+ ```
111
+ The **generate** command will start the configuration of your powerhouse project and generates a directory with the necessary files and folders to build your project.
112
+ These include:
113
+ - `document-models`: A folder containing the document models schemas you've defined in Connect Studio Mode.
114
+ - `editors`: A folder containing the editors you've defined in react, potentially making use of the reusable components.
115
+ - `processors`: A folder containing the processors you might be running on your document models later on.
116
+ - `scripts`: A folder containing the scripts you might use.
117
+ - `tests`: A folder containing your unit tests.
118
+
119
+ ### 1.2. Adding Document Models, editors and unit tests
120
+
121
+ Now that you've set up your directory.
122
+ Go ahead and add the document models you'd like to add by going through the standard document model building flow:
123
+
124
+ :::info
125
+ These steps are explained more in depth in any of our tutorials. Follow along with one of the tutorials that matches your project the most.
126
+ :::
127
+
128
+ 1. Defining your Document Model **GraphQL Schema** in the document model document editor by launching the document model editor in Connect Studio Mode with the `ph connect` command.
129
+ 2. Defining your Document Model **Operations** in the document model document operations editor and their graphQL counterparts.
130
+ 3. Generating the scaffolding code by **exporting** the Zip file from connect and **importing** it into your project. (Save it in the directory you've created in the previous step) Run `ph generate <zipfile>`.
131
+ 4. Implementing the **reducer code** and unit tests of your document models reducers.
132
+ 5. Implementing the **document editors** to visualize and interact with your document models.
133
+ 6. Run **unit tests** and verify the editor functionality via `ph connect` for local testing.
134
+ 7. Add a **manifest file** to your project and updating your index.js file to export your modules.
135
+
136
+ ### 1.3. Verifying your project
137
+ Now that we've completed our directory with the reducers, tests and editors, and your project is populated with modules we'll verify the build output and see if everything is working correctly.
138
+
139
+ Let's **verify the package build output** with the following command:
140
+ ```bash
141
+ pnpm build
142
+ ```
143
+
144
+ This command will **build** the project and create a build directory with the output. The code gets optimized and minified. It optimizes the code for production and distribution so different environments can use it as a package.
145
+
146
+ This command will **start a local server** and serve the build output.
147
+ Inspect the build output and verify that the document models are working correctly.
148
+
149
+ ```bash
150
+ pnpm serve (Not working yet)
151
+ ```
152
+
153
+ ### 1.4 Storing your project in a git repository
154
+
155
+ Now that you've verified your project is working correctly, you can store your project in a git repository.
156
+ Why?
157
+ - So you can track the changes of your project in a remote repository and benefit from the collaboration features of git.
158
+ - So you can publish your project to the npm registry and install it on a server instance or locally on your machine.
159
+
160
+ If you stick to the layout generated by the `ph init` command, where its folders for document models and editors, you should later be able to install your package with `ph install @<your-org/package-name>` once it's published to the npm registry.
161
+
162
+ ```bash
163
+ git init
164
+ git add .
165
+ git commit -m "Initial commit"
166
+ ```
167
+
168
+ This will initialize a git repository and add all the files to the repository.
169
+
170
+ ## 2. Publishing your project
171
+
172
+ For this step you'll need to register your organization on npm.
173
+ If you haven't already registered your organization on npm, you can do so by running the following command:
174
+ ```bash
175
+ pnpm adduser
176
+ ```
177
+ Create an organization on [NPM](https://www.npmjs.com/) using the naming convention: `@yourorganization-ph`
178
+ - The `-ph` suffix indicates its a Powerhouse ecosystem package to help you and others identify it from regular NPM packages.
179
+ - Example: `@acme-ph`
180
+
181
+ To make sure you can differentiate between Powerhouse ecosystem packages and other packages we recommend setting up a separate npm account for your organization with the -ph suffix. **example: @yourorg-ph**
182
+ We advise you to **use a dedicated npm account for your organization and not your personal account**.
183
+
184
+ Once you've registered your organization on npm, you can now publish your project to the npm registry.
185
+ Log in via the command line:
186
+ ```bash
187
+ npm login
188
+ ```
189
+ You'll be prompted for your username, password, and email in a separate browser window.
190
+
191
+ Once you've logged in, you can configure your package.json for npm before publishing.
192
+ If you're publishing a package under a scope (like @your-org/my-package), you might need to add the `publishConfig` to ensure it's public, otherwise scoped packages default to private:
193
+
194
+ ```json
195
+ {
196
+ "name": "@your-org/my-package",
197
+ "version": "1.0.0",
198
+ "main": "index.js",
199
+ "publishConfig": {
200
+ "access": "public"
201
+ }
202
+ }
203
+ ```
204
+
205
+ For the actual publishing step, run the following command to publish your project to the npm registry:
206
+ ```bash
207
+ npm publish
208
+ ```
209
+
210
+ Optionally, if you are publishing a scoped package and you want it public, run:
211
+ ```bash
212
+ npm publish --access public
213
+ ```
214
+
215
+ Now let's verify that the package(s) get published in the package repository, next to pre-existing packages that you might have been publishing before.
216
+
217
+ ## 3. Deploying the host apps & project.
218
+ Now that we've installed all the necessary services on our server instance, we can start deploying the host apps & our packaged project from npm.
219
+
220
+ Install your project package we've published earlier on your local connect (`ph connect`) instance by running the following command:
221
+
222
+ ```bash
223
+ ph install @<your-org/package-name>
224
+ ```
225
+ Alternatively you can also install the package in the settings of Connect in the 'package manager' section. (Not available yet)
226
+ Where you'll be able to use the same package name as you've used in the `package.json` file and install it at the click of a button.
227
+
228
+ ![package manager](images/homedesign.png)
229
+
230
+ Got this far? Congratulations on publishing your first package!
@@ -0,0 +1,279 @@
1
+ # Run it on a EC2 instance
2
+
3
+ ## Tutorial Workflow
4
+
5
+ This tutorial guides you through the process of deploying your Powerhouse project on a cloud server.
6
+
7
+ To help you navigate the steps involved, the diagram below illustrates the overall workflow. It shows the different environments and actions we'll cover.
8
+
9
+ ![tutorial schema](images/tutorialschema.png)
10
+
11
+ Understanding this process is key because, within the Powerhouse ecosystem, users typically start by installing pre-built packages onto their Connect or Switchboard instances. These packages are often sourced from a central repository, similar to an app store. In the previous tutorial, we have [created and published our package](/docs/academy/AdvancedTutorial/Launch/PublishYourProject) on the Node Package Manager (NPM) registry as our "app store", and now you'll learn how to deploy your own package to a cloud environment.
12
+
13
+ ## 1. Setting up your cloud environment
14
+ ### 1.1. Launching your server instance (AWS \- EC2 \- Ubuntu)
15
+
16
+ Let's have a look at how to set up Connect & Switchboard apps on a cloud server.
17
+ Ask your IT provider to get access to the AWS environment to set up a server.
18
+ Launch a new server instance for Connect and Switchboard with the specific specs that fit your project.
19
+
20
+ The steps to create an EC2 instance:
21
+ - Make sure your region is set to eu-west-1 (Ireland)
22
+ - Name your instance something like `cloud-server` or your project's name
23
+ - Select Ubuntu 24.04 LTS
24
+ - Architecture 64-bit (x86)
25
+ - Scroll down to Instance type and select t2.medium (recommended)
26
+ - 2 vCPUs and 4 GiB of memory are the recommended minimum specs
27
+ - For larger projects or higher load, consider t2.large or t2.xlarge
28
+ - Create a new key pair and save it in a secure location from which you can connect to your instance with the SSH client later.
29
+ - Configure the security group to allow inbound traffic:
30
+ - SSH (Port 22) from your IP address
31
+ - HTTP (Port 80) from anywhere
32
+ - HTTPS (Port 443) from anywhere
33
+ - Custom TCP (Port 8442) for Connect
34
+ - Custom TCP (Port 8441) for Switchboard
35
+ - **Launch the instance**
36
+
37
+ Now click on your instance ID, which will open a new window with the instance details. Hit the 'Connect' button to get the connection details.
38
+ Within the instance details, you'll find the public IP address of your server instance. We'll use this to connect to our server instance later.
39
+
40
+ :::warning
41
+ Make sure to keep your key pair file (.pem) secure and never share it. Without it, you won't be able to access your instance. Also, consider setting up AWS IAM roles and policies for better security management.
42
+ :::
43
+
44
+ ### 1.2. Setting up your SSH connection
45
+
46
+ Once you've generated your key pairs and added them to the designated folder, you can set up the SSH connections to start the process.
47
+
48
+ SSH, which stands for **Secure Shell**, is a cryptographic network protocol used to securely access and manage devices over an unsecured network. It provides a secure channel over an unsecured network by using encryption, ensuring that data transmitted between your computer and the server remains confidential and tamper-proof.
49
+
50
+ To establish an SSH connection, you'll typically use an SSH client. On Unix-like systems (Linux, macOS), the SSH client is usually pre-installed.
51
+ Follow the instructions for the AWS instance you've configured with Ubuntu and set up your connection by adding the necessary commands in your terminal.
52
+
53
+ ![Setting up your SSH connection](images/SSHConnection.png)
54
+
55
+ Your Ubuntu instance is usually always a little out of date. So use the following commands to get it up to speed.
56
+
57
+ ```bash
58
+ sudo apt update && sudo apt upgrade
59
+ ```
60
+
61
+ ### 1.3. Installing the required software with a script
62
+
63
+ Now that we've connected to our Ubuntu instance, we'll need to install the necessary services on our server to get things going, such as NVM, Node, NPM, etc.
64
+
65
+ For this, our team has set up a small script that will help you to automate a series of installations.
66
+
67
+ Enter the base command, which will start installing the necessary services on your server by downloading the install script and running it directly in the bash shell for execution.
68
+
69
+ ```bash
70
+ curl -o- https://raw.githubusercontent.com/powerhouse-inc/powerhouse/refs/heads/main/clis/ph-cli/scripts/setup.sh | bash
71
+ ```
72
+
73
+ The script contains the following commands and will help you set up a series of services on your server.
74
+
75
+ - **NVM**: Node Version Manager for managing node.js 22 versions
76
+ - **node.js 22**: JavaScript runtime
77
+ - **PM2**: Process manager for node.js 22 applications
78
+ - **ph-cmd**: Powerhouse CLI tool for managing projects.
79
+ - **pnpm**: Fast, disk-space-efficient package manager
80
+
81
+ :::info
82
+ ph-cmd is a tool that helps you manage your Powerhouse projects. It's a command-line interface package that you can install globally on your server and personal machine. It gives you access to a series of powerful commands to create or manage your projects, start or stop your services, install your project on a server instance, etc. Visit this page to learn more about the [Powerhouse builder tooling](/docs/academy/AdvancedTutorial/Create/BuilderTools)
83
+
84
+ <details>
85
+ <summary> How to make use of different branches? </summary>
86
+
87
+ When installing or using the Powerhouse CLI commands you are able to make use of the dev & staging branches. These branches contain more experimental features then the latest stable release the PH CLI uses by default. They can be used to get access to a bugfix or features under development.
88
+
89
+ | Command | Description |
90
+ |---------|-------------|
91
+ | **pnpm install -g ph-cmd** | Install latest stable version |
92
+ | **pnpm install -g ph-cmd@dev** | Install development version |
93
+ | **pnpm install -g ph-cmd@staging** | Install staging version |
94
+ | **ph init** | Use latest stable version of the boilerplate |
95
+ | **ph init --dev** | Use development version of the boilerplate |
96
+ | **ph init --staging** | Use staging version of the boilerplate |
97
+ | **ph use** | Switch all dependencies to latest production versions |
98
+ | **ph use dev** | Switch all dependencies to development versions |
99
+ | **ph use prod** | Switch all dependencies to production versions |
100
+
101
+ Please be aware that these versions can contain bugs and experimental features that aren't fully tested.
102
+ </details>
103
+
104
+ :::
105
+
106
+ Let's have a look at the other commands that are part of the script that will help you install the necessary services on your server.
107
+
108
+ #### 1. Load NVM into the current shell session
109
+ ```bash
110
+ export NVM_DIR="$HOME/.nvm"
111
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
112
+ ```
113
+
114
+ #### 2. Checks if the file nvm.sh exists and loads it if the condition is true.
115
+ ```bash
116
+ [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
117
+ ```
118
+ #### 3. Loading & Verifying NVM
119
+ ```bash
120
+ nvm --version
121
+ ```
122
+
123
+ #### 4. Install node.js 22 by using NVM
124
+ ```bash
125
+ nvm install 22
126
+ ```
127
+
128
+ #### 5. Install pnpm package manager globally
129
+ ```bash
130
+ nvm install 22
131
+ pnpm setup
132
+ source $HOME/.bashrc
133
+ ```
134
+ Now follow the instructions of your Ubuntu server at the end of the installation.
135
+
136
+ #### 6. Install Powerhouse CLI 'globally' using pnpm, making it available for command-line use anywhere. This makes it available for command-line use anywhere, not just locally within the project directory.
137
+
138
+ ```bash
139
+ pnpm install -g ph-cmd
140
+ ```
141
+
142
+ ## 2. Deploying the host apps & project.
143
+
144
+ Now that we've installed all the necessary services on our server instance, we can start deploying the host apps & our packaged project from npm.
145
+
146
+ 1. **Install your project package** that we published earlier on npm, onto the server instance.
147
+ ```bash
148
+ ph install @your-org/package-name
149
+ ```
150
+
151
+ 2. **Start the Connect service** so that we can start interacting with our project.
152
+ ```bash
153
+ ph connect --https --port 8442
154
+ ```
155
+ Let's verify that the Connect service is running. Since we can't make use of localhost and we're running the Connect service on the server instance, we'll need to use the public IP address of our server instance to start interacting with our project. Copy the public IP address of your server instance and paste it into your browser. Now add the port `:8442` to the end of the URL and you should see your project running.
156
+
157
+ Create a new document and start interacting with it. Add a new item to the list so you can query the document through the GraphQL playground in Switchboard in the next step.
158
+
159
+ 3. **Start the Switchboard service** and run the following command to boot the Reactor.
160
+ ```bash
161
+ ph switchboard --port 8441
162
+ ```
163
+ Let's verify that the Reactor has detected your project and is ready to start by navigating to the GraphQL playground.
164
+ Since we can't make use of localhost and we're running the Switchboard service on the server instance, we'll need to use the public IP address of our server instance to start interacting with our project. Copy the public IP address of your server instance and paste it into your browser. Now add the port `:8441` to the end of the URL and you should get access to the GraphQL playground.
165
+
166
+
167
+ ## 3. Setup the host apps as system services
168
+
169
+ Now that we've installed the host apps and our project on the server instance, we'll configure them to run as system services. This ensures that:
170
+ - Services automatically start when the server boots up
171
+ - Services automatically restart if they crash
172
+ - Services continue running after you log out of SSH
173
+ - System resources are properly managed through PM2
174
+
175
+ ### 3.1. Register services for automatic startup
176
+
177
+ Use the following command to register both Connect and Switchboard as system services:
178
+
179
+ ```bash
180
+ ph service startup
181
+ ```
182
+
183
+ To remove the services from automatic startup:
184
+
185
+ ```bash
186
+ ph service unstartup
187
+ ```
188
+ <details>
189
+ <summary>Read the ph service --help command</summary>
190
+
191
+ Usage: ph service [options] `<action>` [service]
192
+
193
+ Manage services
194
+
195
+
196
+ Command Overview:
197
+ The service command manages Powerhouse services, allowing you to start, stop, check status,
198
+ and more. It provides a centralized way to control the lifecycle of services in your project.
199
+
200
+ This command:
201
+ 1. Controls service lifecycle (start, stop, status, etc.)
202
+ 2. Manages multiple services from a single interface
203
+ 3. Provides detailed information about running services
204
+ 4. Uses PM2 under the hood for process management
205
+
206
+ Arguments:
207
+ `<action>` The action to perform. Available actions:
208
+ - start: Launch the specified service
209
+ - stop: Terminate the specified service
210
+ - status: Check the current status of services
211
+ - list: List all managed services (default)
212
+ - startup: Configure services to start on system boot
213
+ - unstartup: Remove services from system startup
214
+
215
+ [service] Optional. The service to act upon. Available services:
216
+ - switchboard: The document processing engine
217
+ - connect: The Connect Studio interface
218
+ - all: Act on all services (default)
219
+
220
+ Examples:
221
+ $ ph service # List all services (same as 'ph service list all')
222
+ $ ph service start switchboard # Start the Switchboard service
223
+ $ ph service stop connect # Stop the Connect service
224
+ $ ph service start all # Start all services
225
+ $ ph service status # Check status of all services
226
+ $ ph service startup # Configure services to start on system boot
227
+ $ ph service unstartup # Remove services from system startup
228
+
229
+ Notes:
230
+ - Services are managed using PM2, a process manager for node.js 22 applications
231
+ - The 'status' action shows uptime, memory usage, CPU usage, and other metrics
232
+ - The 'list' action is the default when no action is specified
233
+ - The 'all' service is the default when no service is specified
234
+
235
+ </details>
236
+
237
+ ### 3.2. Managing individual services
238
+
239
+ You can control each service independently:
240
+
241
+ ```bash
242
+ # Start individual services
243
+ ph service start connect # Starts only Connect
244
+ ph service start switchboard # Starts only Switchboard
245
+
246
+ # Stop individual services
247
+ ph service stop connect # Stops only Connect
248
+ ph service stop switchboard # Stops only Switchboard
249
+ ```
250
+
251
+ ### 3.3. Managing all services together
252
+
253
+ To control both services at once:
254
+
255
+ ```bash
256
+ ph service start # Starts both Connect and Switchboard
257
+ ph service stop # Stops both Connect and Switchboard
258
+ ```
259
+
260
+ :::tip
261
+ You can check the status of your services at any time using:
262
+ ```bash
263
+ ph service status
264
+ ```
265
+ This will show you if services are running, their uptime, and resource usage.
266
+ :::
267
+
268
+ :::warning
269
+ After making any configuration changes to your project, remember to restart the affected services for the changes to take effect.
270
+ :::
271
+
272
+ ## 4. Verify your project is running on your server
273
+
274
+ - Open the server domain in your browser, and you should see your project running.
275
+ - Verify that synchronization is working and your document is available.
276
+ - Try to make a change to your document and see if it's reflected in another instance with that same document.
277
+ - Query the document through the GraphQL playground.
278
+
279
+ Congratulations! You've now published your project and are ready to start collaborating with your team on the same document models and editors!