@powerhousedao/academy 5.0.0-staging.2 → 5.0.0-staging.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +1 -1
- package/CHANGELOG.md +115 -0
- package/README.md +3 -3
- package/babel.config.js +1 -1
- package/blog/BeyondCommunication-ABlueprintForDevelopment.md +25 -24
- package/blog/TheChallengeOfChange.md +21 -21
- package/docs/academy/01-GetStarted/00-ExploreDemoPackage.mdx +61 -24
- package/docs/academy/01-GetStarted/01-CreateNewPowerhouseProject.md +21 -12
- package/docs/academy/01-GetStarted/02-DefineToDoListDocumentModel.md +24 -19
- package/docs/academy/01-GetStarted/03-ImplementOperationReducers.md +44 -41
- package/docs/academy/01-GetStarted/04-BuildToDoListEditor.md +10 -10
- package/docs/academy/01-GetStarted/05-SpecDrivenAI.md +143 -0
- package/docs/academy/01-GetStarted/home.mdx +185 -90
- package/docs/academy/01-GetStarted/styles.module.css +5 -5
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/01-Prerequisites.md +46 -18
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/02-StandardDocumentModelWorkflow.md +118 -68
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/03-BuilderTools.md +75 -33
- package/docs/academy/02-MasteryTrack/01-BuilderEnvironment/_category_.json +6 -6
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/01-WhatIsADocumentModel.md +30 -21
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/02-SpecifyTheStateSchema.md +41 -37
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/03-SpecifyDocumentOperations.md +29 -25
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/04-UseTheDocumentModelGenerator.md +36 -37
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/05-ImplementDocumentReducers.md +128 -109
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/06-ImplementDocumentModelTests.md +95 -86
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/07-ExampleToDoListRepository.md +7 -9
- package/docs/academy/02-MasteryTrack/02-DocumentModelCreation/_category_.json +6 -6
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/01-BuildingDocumentEditors.md +65 -47
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/02-ConfiguringDrives.md +77 -62
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/03-BuildingADriveExplorer.md +360 -349
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/06-DocumentTools/00-DocumentToolbar.mdx +16 -10
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/06-DocumentTools/01-OperationHistory.md +10 -7
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/06-DocumentTools/02-RevisionHistoryTimeline.md +26 -11
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/06-DocumentTools/_category_.json +6 -6
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/07-Authorization/01-RenownAuthenticationFlow.md +14 -7
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/07-Authorization/02-Authorization.md +0 -1
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/07-Authorization/_category_.json +5 -5
- package/docs/academy/02-MasteryTrack/03-BuildingUserExperiences/_category_.json +1 -1
- package/docs/academy/02-MasteryTrack/04-WorkWithData/01-GraphQLAtPowerhouse.md +45 -33
- package/docs/academy/02-MasteryTrack/04-WorkWithData/02-UsingTheAPI.mdx +61 -18
- package/docs/academy/02-MasteryTrack/04-WorkWithData/03-UsingSubgraphs.md +50 -54
- package/docs/academy/02-MasteryTrack/04-WorkWithData/04-analytics-processor.md +126 -110
- package/docs/academy/02-MasteryTrack/04-WorkWithData/05-RelationalDbProcessor.md +75 -45
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/GraphQL References/QueryingADocumentWithGraphQL.md +23 -21
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/best-practices.md +9 -9
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/graphql/index.md +11 -23
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/graphql/integration.md +25 -9
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/intro.md +10 -10
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/typescript/benchmarks.md +1 -1
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/typescript/index.md +16 -11
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/typescript/memory.md +6 -5
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/typescript/schema.md +2 -2
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/typescript/utilities.md +7 -5
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/use-cases/maker.md +32 -58
- package/docs/academy/02-MasteryTrack/04-WorkWithData/06-Analytics Engine/use-cases/processors.md +1 -1
- package/docs/academy/02-MasteryTrack/04-WorkWithData/07-drive-analytics.md +105 -71
- package/docs/academy/02-MasteryTrack/04-WorkWithData/_ARCHIVE-AnalyticsProcessorTutorial/_01-SetupBuilderEnvironment.md +22 -0
- package/docs/academy/02-MasteryTrack/04-WorkWithData/_ARCHIVE-AnalyticsProcessorTutorial/_02-CreateNewPowerhouseProject.md +9 -8
- package/docs/academy/02-MasteryTrack/04-WorkWithData/_ARCHIVE-AnalyticsProcessorTutorial/_03-GenerateAnAnalyticsProcessor.md +28 -32
- package/docs/academy/02-MasteryTrack/04-WorkWithData/_ARCHIVE-AnalyticsProcessorTutorial/_04-UpdateAnalyticsProcessor.md +25 -26
- package/docs/academy/02-MasteryTrack/04-WorkWithData/_ARCHIVE-AnalyticsProcessorTutorial/_category_.json +1 -1
- package/docs/academy/02-MasteryTrack/04-WorkWithData/_category_.json +7 -7
- package/docs/academy/02-MasteryTrack/05-Launch/01-IntroductionToPackages.md +3 -4
- package/docs/academy/02-MasteryTrack/05-Launch/02-PublishYourProject.md +69 -45
- package/docs/academy/02-MasteryTrack/05-Launch/03-SetupEnvironment.md +70 -40
- package/docs/academy/02-MasteryTrack/05-Launch/04-ConfigureEnvironment.md +1 -0
- package/docs/academy/02-MasteryTrack/05-Launch/_category_.json +7 -7
- package/docs/academy/02-MasteryTrack/_category_.json +6 -6
- package/docs/academy/03-ExampleUsecases/Chatroom/02-CreateNewPowerhouseProject.md +5 -3
- package/docs/academy/03-ExampleUsecases/Chatroom/03-DefineChatroomDocumentModel.md +38 -37
- package/docs/academy/03-ExampleUsecases/Chatroom/04-ImplementOperationReducers.md +45 -41
- package/docs/academy/03-ExampleUsecases/Chatroom/05-ImplementChatroomEditor.md +14 -14
- package/docs/academy/03-ExampleUsecases/Chatroom/06-LaunchALocalReactor.md +6 -6
- package/docs/academy/03-ExampleUsecases/Chatroom/_category_.json +1 -1
- package/docs/academy/04-APIReferences/00-PowerhouseCLI.md +14 -7
- package/docs/academy/04-APIReferences/01-ReactHooks.md +177 -129
- package/docs/academy/04-APIReferences/04-RelationalDatabase.md +121 -113
- package/docs/academy/04-APIReferences/05-PHDocumentMigrationGuide.md +48 -41
- package/docs/academy/04-APIReferences/_category_.json +6 -6
- package/docs/academy/05-Architecture/00-PowerhouseArchitecture.md +1 -2
- package/docs/academy/05-Architecture/01-WorkingWithTheReactor.md +11 -8
- package/docs/academy/05-Architecture/05-DocumentModelTheory/_category_.json +1 -1
- package/docs/academy/05-Architecture/_category_.json +6 -6
- package/docs/academy/06-ComponentLibrary/00-DocumentEngineering.md +25 -23
- package/docs/academy/06-ComponentLibrary/02-CreateCustomScalars.md +105 -93
- package/docs/academy/06-ComponentLibrary/03-IntegrateIntoAReactComponent.md +1 -0
- package/docs/academy/06-ComponentLibrary/_category_.json +7 -7
- package/docs/academy/07-Cookbook.md +267 -34
- package/docs/academy/08-Glossary.md +7 -1
- package/docs/bookofpowerhouse/01-Overview.md +2 -2
- package/docs/bookofpowerhouse/02-GeneralFrameworkAndPhilosophy.md +1 -7
- package/docs/bookofpowerhouse/03-PowerhouseSoftwareArchitecture.md +10 -7
- package/docs/bookofpowerhouse/04-DevelopmentApproaches.md +10 -4
- package/docs/bookofpowerhouse/05-SNOsandANewModelForOSSandPublicGoods.md +23 -30
- package/docs/bookofpowerhouse/06-SNOsInActionAndPlatformEconomies.md +0 -7
- package/docusaurus.config.ts +64 -66
- package/package.json +1 -1
- package/scripts/generate-combined-cli-docs.ts +43 -13
- package/sidebars.ts +1 -0
- package/src/components/HomepageFeatures/index.tsx +171 -78
- package/src/components/HomepageFeatures/styles.module.css +1 -2
- package/src/css/custom.css +89 -89
- package/src/pages/_archive-homepage.tsx +17 -16
- package/src/theme/DocCardList/index.tsx +9 -8
- package/static.json +6 -6
|
@@ -12,11 +12,33 @@ async function generateCombinedCliDocs() {
|
|
|
12
12
|
const __dirname = path.dirname(__filename);
|
|
13
13
|
|
|
14
14
|
// Define paths
|
|
15
|
-
const academyDocsDir = path.resolve(
|
|
15
|
+
const academyDocsDir = path.resolve(
|
|
16
|
+
__dirname,
|
|
17
|
+
"..",
|
|
18
|
+
"docs",
|
|
19
|
+
"academy",
|
|
20
|
+
"04-APIReferences",
|
|
21
|
+
);
|
|
16
22
|
const targetDocFile = path.join(academyDocsDir, "00-PowerhouseCLI.md");
|
|
17
23
|
|
|
18
|
-
const phCliCommandsPath = path.resolve(
|
|
19
|
-
|
|
24
|
+
const phCliCommandsPath = path.resolve(
|
|
25
|
+
__dirname,
|
|
26
|
+
"..",
|
|
27
|
+
"..",
|
|
28
|
+
"..",
|
|
29
|
+
"clis",
|
|
30
|
+
"ph-cli",
|
|
31
|
+
"COMMANDS.md",
|
|
32
|
+
);
|
|
33
|
+
const phCmdCommandsPath = path.resolve(
|
|
34
|
+
__dirname,
|
|
35
|
+
"..",
|
|
36
|
+
"..",
|
|
37
|
+
"..",
|
|
38
|
+
"clis",
|
|
39
|
+
"ph-cmd",
|
|
40
|
+
"COMMANDS.md",
|
|
41
|
+
);
|
|
20
42
|
|
|
21
43
|
// Read COMMANDS.md files
|
|
22
44
|
const phCliCommandsContent = fs.readFileSync(phCliCommandsPath, "utf8");
|
|
@@ -27,13 +49,18 @@ async function generateCombinedCliDocs() {
|
|
|
27
49
|
const tocHeader = "## Table of Contents";
|
|
28
50
|
const tocIndex = content.indexOf(tocHeader);
|
|
29
51
|
if (tocIndex === -1) {
|
|
30
|
-
console.warn(
|
|
52
|
+
console.warn(
|
|
53
|
+
`Warning: "## Table of Contents" not found in ${cliName} COMMANDS.md. Including entire file.`,
|
|
54
|
+
);
|
|
31
55
|
return content;
|
|
32
56
|
}
|
|
33
|
-
let commandsSection = content
|
|
34
|
-
|
|
57
|
+
let commandsSection = content
|
|
58
|
+
.substring(tocIndex + tocHeader.length)
|
|
59
|
+
.trim();
|
|
60
|
+
|
|
35
61
|
// Remove the auto-generation footer
|
|
36
|
-
const footerRegex =
|
|
62
|
+
const footerRegex =
|
|
63
|
+
/---\\n\\n\\\*This document was automatically generated from the help text in the codebase\\\.\\\*\\n?$/m;
|
|
37
64
|
commandsSection = commandsSection.replace(footerRegex, "").trim();
|
|
38
65
|
return commandsSection;
|
|
39
66
|
};
|
|
@@ -42,7 +69,7 @@ async function generateCombinedCliDocs() {
|
|
|
42
69
|
const phCmdDocs = extractCommands(phCmdCommandsContent, "ph-cmd");
|
|
43
70
|
|
|
44
71
|
// Prepare the combined markdown
|
|
45
|
-
|
|
72
|
+
const combinedDocs = `### ph-cmd Commands\\n\\n${phCmdDocs}\\n\\n### ph-cli Commands\\n\\n${phCliDocs}`;
|
|
46
73
|
|
|
47
74
|
// Read the target documentation file
|
|
48
75
|
let targetDocContent = fs.readFileSync(targetDocFile, "utf8");
|
|
@@ -54,11 +81,13 @@ async function generateCombinedCliDocs() {
|
|
|
54
81
|
const endIndex = targetDocContent.indexOf(endPlaceholder);
|
|
55
82
|
|
|
56
83
|
if (startIndex === -1 || endIndex === -1) {
|
|
57
|
-
console.error(
|
|
84
|
+
console.error(
|
|
85
|
+
`Error: Placeholders not found in ${targetDocFile}. Please ensure the file contains:\\n${startPlaceholder}\\n...\\n${endPlaceholder}`,
|
|
86
|
+
);
|
|
58
87
|
process.exit(1);
|
|
59
88
|
}
|
|
60
89
|
|
|
61
|
-
targetDocContent =
|
|
90
|
+
targetDocContent =
|
|
62
91
|
targetDocContent.substring(0, startIndex + startPlaceholder.length) +
|
|
63
92
|
"\\n<!-- This content is automatically generated. Do not edit directly. -->\\n" +
|
|
64
93
|
combinedDocs +
|
|
@@ -68,8 +97,9 @@ async function generateCombinedCliDocs() {
|
|
|
68
97
|
// Write the updated content back to the target file
|
|
69
98
|
fs.writeFileSync(targetDocFile, targetDocContent);
|
|
70
99
|
|
|
71
|
-
console.log(
|
|
72
|
-
|
|
100
|
+
console.log(
|
|
101
|
+
`✅ Combined CLI documentation has been generated at ${targetDocFile}`,
|
|
102
|
+
);
|
|
73
103
|
} catch (error) {
|
|
74
104
|
console.error("Failed to generate combined CLI documentation:", error);
|
|
75
105
|
process.exit(1);
|
|
@@ -77,4 +107,4 @@ async function generateCombinedCliDocs() {
|
|
|
77
107
|
}
|
|
78
108
|
|
|
79
109
|
// Run the script
|
|
80
|
-
generateCombinedCliDocs();
|
|
110
|
+
generateCombinedCliDocs();
|
package/sidebars.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import clsx from "clsx";
|
|
2
2
|
import Heading from "@theme/Heading";
|
|
3
3
|
import Link from "@docusaurus/Link";
|
|
4
|
-
import React from "react";
|
|
4
|
+
import type React from "react";
|
|
5
5
|
import styles from "./styles.module.css";
|
|
6
6
|
|
|
7
7
|
type FeatureItem = {
|
|
@@ -16,11 +16,7 @@ const FeatureList: FeatureItem[] = [
|
|
|
16
16
|
title: "Connect",
|
|
17
17
|
imageSrc: require("@site/static/img/connect.png").default,
|
|
18
18
|
docPath: "docs/academy/Architecture/PowerhouseArchitecture",
|
|
19
|
-
description:
|
|
20
|
-
<>
|
|
21
|
-
Learn about the private contributor tool Connect
|
|
22
|
-
</>
|
|
23
|
-
),
|
|
19
|
+
description: <>Learn about the private contributor tool Connect</>,
|
|
24
20
|
},
|
|
25
21
|
{
|
|
26
22
|
title: "Switchboard",
|
|
@@ -32,29 +28,20 @@ const FeatureList: FeatureItem[] = [
|
|
|
32
28
|
title: "Fusion",
|
|
33
29
|
imageSrc: require("@site/static/img/fusion.png").default,
|
|
34
30
|
docPath: "docs/academy/Architecture/PowerhouseArchitecture",
|
|
35
|
-
description:
|
|
36
|
-
<>
|
|
37
|
-
Setup Fusion as your organizations dashboard
|
|
38
|
-
</>
|
|
39
|
-
),
|
|
31
|
+
description: <>Setup Fusion as your organizations dashboard</>,
|
|
40
32
|
},
|
|
41
33
|
{
|
|
42
34
|
title: "Renown",
|
|
43
35
|
imageSrc: require("@site/static/img/renown.png").default,
|
|
44
|
-
docPath:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
Dive into the customizable reputation system
|
|
48
|
-
</>
|
|
49
|
-
),
|
|
36
|
+
docPath:
|
|
37
|
+
"/docs/academy/MasteryTrack/BuildingUserExperiences/Authorization/RenownAuthenticationFlow",
|
|
38
|
+
description: <>Dive into the customizable reputation system</>,
|
|
50
39
|
},
|
|
51
40
|
{
|
|
52
41
|
title: "Reactor",
|
|
53
42
|
imageSrc: require("@site/static/img/reactor.png").default,
|
|
54
43
|
docPath: "/docs/academy/Architecture/WorkingWithTheReactor",
|
|
55
|
-
description:
|
|
56
|
-
<>Find out how a Powerhouse Reactor node works</>
|
|
57
|
-
),
|
|
44
|
+
description: <>Find out how a Powerhouse Reactor node works</>,
|
|
58
45
|
},
|
|
59
46
|
];
|
|
60
47
|
|
|
@@ -67,7 +54,9 @@ function Feature({ title, imageSrc, description, docPath }: FeatureItem) {
|
|
|
67
54
|
<img src={imageSrc} alt={title} className={styles.featureImage} />
|
|
68
55
|
</div>
|
|
69
56
|
<div className={styles.featureText}>
|
|
70
|
-
<Heading as="h4" className={styles.featureTitle}>
|
|
57
|
+
<Heading as="h4" className={styles.featureTitle}>
|
|
58
|
+
{title}
|
|
59
|
+
</Heading>
|
|
71
60
|
<p className={styles.featureDescription}>{description}</p>
|
|
72
61
|
</div>
|
|
73
62
|
</div>
|
|
@@ -84,34 +73,54 @@ export default function HomepageFeatures() {
|
|
|
84
73
|
<div className={styles.learningPath}>
|
|
85
74
|
{/* Get Started Card - Full Width */}
|
|
86
75
|
<div className={`${styles.pathCard} ${styles.fullWidth}`}>
|
|
87
|
-
<div
|
|
76
|
+
<div
|
|
77
|
+
className={styles.cardHeader}
|
|
78
|
+
style={{ justifyContent: "center" }}
|
|
79
|
+
>
|
|
88
80
|
<div className={styles.cardIconWrapper}>
|
|
89
81
|
<img src="/img/academy/icons/Flash.svg" alt="" />
|
|
90
82
|
</div>
|
|
91
83
|
<h3 className={styles.cardTitle}>Get started</h3>
|
|
92
84
|
</div>
|
|
93
85
|
<div className={styles.cardContent}>
|
|
94
|
-
<div
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
86
|
+
<div
|
|
87
|
+
style={{
|
|
88
|
+
maxWidth: "960px",
|
|
89
|
+
margin: "0 auto",
|
|
90
|
+
textAlign: "center",
|
|
91
|
+
}}
|
|
92
|
+
>
|
|
93
|
+
<div style={{ marginBottom: "1.5rem" }}>
|
|
94
|
+
<p style={{ fontSize: "1.1rem", marginBottom: "1rem" }}>
|
|
95
|
+
<strong>Welcome to Powerhouse!</strong>
|
|
96
|
+
</p>
|
|
97
|
+
<p style={{ lineHeight: "1.6", color: "#444" }}>
|
|
98
|
+
As a developer, you're about to dive into a{" "}
|
|
99
|
+
<strong>
|
|
100
|
+
unique ecosystem built to empower decentralized
|
|
101
|
+
organizations
|
|
102
|
+
</strong>
|
|
103
|
+
. Powerhouse provides the software, infrastructure, and
|
|
104
|
+
frameworks that enable scalable network organizations to
|
|
105
|
+
operate efficiently.
|
|
106
|
+
</p>
|
|
98
107
|
</div>
|
|
99
|
-
<div style={{ margin:
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
108
|
+
<div style={{ margin: "20px 0", textAlign: "center" }}>
|
|
109
|
+
<iframe
|
|
110
|
+
src="https://drive.google.com/file/d/17dDKy-hQeI4ZlLiUZ4xhnXL4bDhJB0N-/preview"
|
|
111
|
+
frameBorder="0"
|
|
112
|
+
allow="autoplay; fullscreen"
|
|
113
|
+
allowFullScreen
|
|
114
|
+
title="Powerhouse Introduction Video"
|
|
115
|
+
style={{
|
|
116
|
+
width: "100%",
|
|
117
|
+
maxWidth: "960px",
|
|
118
|
+
aspectRatio: "16 / 9",
|
|
119
|
+
borderRadius: "8px",
|
|
120
|
+
display: "block",
|
|
121
|
+
margin: "0 auto",
|
|
122
|
+
}}
|
|
123
|
+
></iframe>
|
|
115
124
|
</div>
|
|
116
125
|
</div>
|
|
117
126
|
</div>
|
|
@@ -126,11 +135,16 @@ export default function HomepageFeatures() {
|
|
|
126
135
|
<h3 className={styles.cardTitle}>New Link</h3>
|
|
127
136
|
</div>
|
|
128
137
|
<div className={styles.cardContent}>
|
|
129
|
-
<a href="@callmeT" className={styles.pathButton}>
|
|
138
|
+
<a href="@callmeT" className={styles.pathButton}>
|
|
139
|
+
The Vision of Powerhouse
|
|
140
|
+
</a>
|
|
130
141
|
</div>
|
|
131
142
|
</div>
|
|
132
143
|
|
|
133
|
-
<div
|
|
144
|
+
<div
|
|
145
|
+
className={styles.pathCard}
|
|
146
|
+
style={{ border: "1px solid #4FC86F" }}
|
|
147
|
+
>
|
|
134
148
|
<div className={styles.cardHeader}>
|
|
135
149
|
<div className={styles.cardIconWrapper}>
|
|
136
150
|
<img src="/img/academy/icons/Create.svg" alt="" />
|
|
@@ -138,7 +152,12 @@ export default function HomepageFeatures() {
|
|
|
138
152
|
<h3 className={styles.cardTitle}>Create</h3>
|
|
139
153
|
</div>
|
|
140
154
|
<div className={styles.cardContent}>
|
|
141
|
-
<a
|
|
155
|
+
<a
|
|
156
|
+
href="/docs/academy/GetStarted/CreateNewPowerhouseProject"
|
|
157
|
+
className={styles.pathButton}
|
|
158
|
+
>
|
|
159
|
+
Build a Todo-list Document Model
|
|
160
|
+
</a>
|
|
142
161
|
</div>
|
|
143
162
|
</div>
|
|
144
163
|
|
|
@@ -150,12 +169,20 @@ export default function HomepageFeatures() {
|
|
|
150
169
|
<h3 className={styles.cardTitle}>Document Model Theory</h3>
|
|
151
170
|
</div>
|
|
152
171
|
<div className={styles.cardContent}>
|
|
153
|
-
<a
|
|
172
|
+
<a
|
|
173
|
+
href="/docs/academy/GetStarted/DocumentModelTheory/WhatIsADocumentModel"
|
|
174
|
+
className={styles.pathButton}
|
|
175
|
+
>
|
|
176
|
+
Deep Dive into Document Modelling
|
|
177
|
+
</a>
|
|
154
178
|
</div>
|
|
155
179
|
</div>
|
|
156
180
|
|
|
157
181
|
{/* Left Column Card with 2 buttons */}
|
|
158
|
-
<div
|
|
182
|
+
<div
|
|
183
|
+
className={styles.pathCard}
|
|
184
|
+
style={{ border: "1px solid #4FC86F" }}
|
|
185
|
+
>
|
|
159
186
|
<div className={styles.cardHeader}>
|
|
160
187
|
<div className={styles.cardIconWrapper}>
|
|
161
188
|
<img src="/img/academy/icons/Editor.svg" alt="" />
|
|
@@ -163,36 +190,61 @@ export default function HomepageFeatures() {
|
|
|
163
190
|
<h3 className={styles.cardTitle}>Build User Experiences</h3>
|
|
164
191
|
</div>
|
|
165
192
|
<div className={styles.cardContent}>
|
|
166
|
-
<a
|
|
167
|
-
|
|
168
|
-
|
|
193
|
+
<a
|
|
194
|
+
href="/docs/academy/GetStarted/BuildToDoListEditor"
|
|
195
|
+
className={styles.pathButton}
|
|
196
|
+
>
|
|
197
|
+
Building a Todo-list Editor
|
|
198
|
+
</a>
|
|
199
|
+
<a
|
|
200
|
+
href="/docs/academy/BuildingUserExperiences/BuildingDocumentEditors"
|
|
201
|
+
className={styles.pathButton}
|
|
202
|
+
>
|
|
203
|
+
Building Beautiful Document Editors
|
|
204
|
+
</a>
|
|
205
|
+
<a
|
|
206
|
+
href="/docs/academy/MasteryTrack/BuildingUserExperiences/BuildingADriveExplorer"
|
|
207
|
+
className={styles.pathButton}
|
|
208
|
+
>
|
|
209
|
+
Building Custom Drive Explorers
|
|
210
|
+
</a>
|
|
169
211
|
</div>
|
|
170
212
|
</div>
|
|
171
213
|
|
|
172
214
|
{/* Middle column with Union.svg */}
|
|
173
|
-
<div
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
215
|
+
<div
|
|
216
|
+
className={styles.middleColumn}
|
|
217
|
+
style={{
|
|
218
|
+
display: "flex",
|
|
219
|
+
justifyContent: "center",
|
|
220
|
+
alignItems: "flex-start",
|
|
221
|
+
paddingTop: "-20px",
|
|
222
|
+
position: "relative",
|
|
223
|
+
}}
|
|
224
|
+
>
|
|
180
225
|
<img src="/img/Union.svg" alt="Powerhouse Union" width="250" />
|
|
181
|
-
<div
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
226
|
+
<div
|
|
227
|
+
style={{
|
|
228
|
+
position: "absolute",
|
|
229
|
+
top: "18px",
|
|
230
|
+
backgroundColor: "white",
|
|
231
|
+
padding: "8px 16px",
|
|
232
|
+
borderRadius: "8px",
|
|
233
|
+
textAlign: "center",
|
|
234
|
+
zIndex: 2,
|
|
235
|
+
}}
|
|
236
|
+
>
|
|
237
|
+
<h3 className={styles.cardTitle} style={{ margin: 0 }}>
|
|
238
|
+
Builder Track
|
|
239
|
+
</h3>
|
|
191
240
|
</div>
|
|
192
241
|
</div>
|
|
193
242
|
|
|
194
243
|
{/* Right Column Card with 3 buttons */}
|
|
195
|
-
<div
|
|
244
|
+
<div
|
|
245
|
+
className={styles.pathCard}
|
|
246
|
+
style={{ border: "1px solid #4FC86F" }}
|
|
247
|
+
>
|
|
196
248
|
<div className={styles.cardHeader}>
|
|
197
249
|
<div className={styles.cardIconWrapper}>
|
|
198
250
|
<img src="/img/academy/icons/Data.svg" alt="" />
|
|
@@ -200,15 +252,33 @@ export default function HomepageFeatures() {
|
|
|
200
252
|
<h3 className={styles.cardTitle}>Work with Data</h3>
|
|
201
253
|
</div>
|
|
202
254
|
<div className={styles.cardContent}>
|
|
203
|
-
<a
|
|
204
|
-
|
|
205
|
-
|
|
255
|
+
<a
|
|
256
|
+
href="//docs/academy/MasteryTrack/WorkWithData/UsingTheAPI"
|
|
257
|
+
className={styles.pathButton}
|
|
258
|
+
>
|
|
259
|
+
Reading & Writing through the API
|
|
260
|
+
</a>
|
|
261
|
+
<a
|
|
262
|
+
href="/docs/academy/MasteryTrack/WorkWithData/WorkingWithSubgraphs"
|
|
263
|
+
className={styles.pathButton}
|
|
264
|
+
>
|
|
265
|
+
Create your own Subgraph
|
|
266
|
+
</a>
|
|
267
|
+
<a
|
|
268
|
+
href="/docs/academy/WorkWithData/Analytics Engine/intro"
|
|
269
|
+
className={styles.pathButton}
|
|
270
|
+
>
|
|
271
|
+
Using the Analytics Engine
|
|
272
|
+
</a>
|
|
206
273
|
</div>
|
|
207
274
|
</div>
|
|
208
275
|
|
|
209
276
|
{/* Launch Card - Full Width with 3 column buttons */}
|
|
210
277
|
<div className={`${styles.pathCard} ${styles.fullWidth}`}>
|
|
211
|
-
<div
|
|
278
|
+
<div
|
|
279
|
+
className={styles.cardHeader}
|
|
280
|
+
style={{ justifyContent: "center" }}
|
|
281
|
+
>
|
|
212
282
|
<div className={styles.cardIconWrapper}>
|
|
213
283
|
<img src="/img/academy/icons/Launch.svg" alt="" />
|
|
214
284
|
</div>
|
|
@@ -216,9 +286,24 @@ export default function HomepageFeatures() {
|
|
|
216
286
|
</div>
|
|
217
287
|
<div className={styles.cardContent}>
|
|
218
288
|
<div className={styles.buttonContainer}>
|
|
219
|
-
<a
|
|
220
|
-
|
|
221
|
-
|
|
289
|
+
<a
|
|
290
|
+
href="/docs/academy/MasteryTrack/Launch/PublishYourProject"
|
|
291
|
+
className={styles.pathButton}
|
|
292
|
+
>
|
|
293
|
+
Package & Publish
|
|
294
|
+
</a>
|
|
295
|
+
<a
|
|
296
|
+
href="/docs/academy/Launch/LaunchYourBackend"
|
|
297
|
+
className={styles.pathButton}
|
|
298
|
+
>
|
|
299
|
+
Launch Back-end
|
|
300
|
+
</a>
|
|
301
|
+
<a
|
|
302
|
+
href="/docs/academy/Launch/LaunchYourFrontend"
|
|
303
|
+
className={styles.pathButton}
|
|
304
|
+
>
|
|
305
|
+
Launch Front-end
|
|
306
|
+
</a>
|
|
222
307
|
</div>
|
|
223
308
|
</div>
|
|
224
309
|
</div>
|
|
@@ -232,11 +317,19 @@ export default function HomepageFeatures() {
|
|
|
232
317
|
<Link to={props.docPath} className={styles.featureLink}>
|
|
233
318
|
<div className={styles.featureContent}>
|
|
234
319
|
<div className={styles.featureImageWrapper}>
|
|
235
|
-
<img
|
|
320
|
+
<img
|
|
321
|
+
src={props.imageSrc}
|
|
322
|
+
alt={props.title}
|
|
323
|
+
className={styles.featureImage}
|
|
324
|
+
/>
|
|
236
325
|
</div>
|
|
237
326
|
<div className={styles.featureText}>
|
|
238
|
-
<Heading as="h4" className={styles.featureTitle}>
|
|
239
|
-
|
|
327
|
+
<Heading as="h4" className={styles.featureTitle}>
|
|
328
|
+
{props.title}
|
|
329
|
+
</Heading>
|
|
330
|
+
<p className={styles.featureDescription}>
|
|
331
|
+
{props.description}
|
|
332
|
+
</p>
|
|
240
333
|
</div>
|
|
241
334
|
</div>
|
|
242
335
|
</Link>
|
|
@@ -156,10 +156,9 @@
|
|
|
156
156
|
color: var(--ifm-color-primary);
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
|
|
160
159
|
.learningPath {
|
|
161
160
|
width: 100%;
|
|
162
|
-
padding: 3rem 0 0 0;
|
|
161
|
+
padding: 3rem 0 0 0; /* Added top padding */
|
|
163
162
|
margin-bottom: 3rem;
|
|
164
163
|
display: grid;
|
|
165
164
|
grid-template-columns: repeat(3, 1fr);
|