Skip to content

Commit 7bb9af4

Browse files
authored
Merge pull request #725 from zihanKuang/update-academy
Update Academy Docs for Content Hierarchy and Frontmatter
2 parents 8b4f8de + 6754659 commit 7bb9af4

File tree

4 files changed

+61
-54
lines changed

4 files changed

+61
-54
lines changed
-52.2 KB
Loading

content/en/cloud/academy/creating-your-learning-path/index.md

Lines changed: 55 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ This guide provides a step-by-step walkthrough for creating and organizing a new
1414
Before you dive into creating your first learning path, it's helpful to be familiar with the core technologies and concepts used by the Academy platform.
1515

1616
- **Git and GitHub**: All learning content is managed in a Git repository.
17-
- **Markdown**: All course and chapter content is written in standard Markdown.
17+
- **Markdown**: All content is written in standard Markdown.
1818
- **Hugo**: The entire Academy platform is built on the [Hugo](https://gohugo.io/) static site generator.
1919
- **Academy Template & Theme**: We provide an `academy-example` repository that serves as a pre-configured template. [Layer5 Academy theme](https://github.com/layer5io/academy-theme) to ensure your content is styled correctly right out of the box.
2020
- **A Layer5 Cloud Account**: Required to obtain your Organization ID and Personal Access Token for publishing.
@@ -65,7 +65,7 @@ The Academy uses a specific directory layout to keep each organization's content
6565
Each learning path is tied to a specific organization and secured by a unique identifier (UUID). This is a system-generated ID that ensures your content is scoped only to your organization.
6666
6767
{{< alert type="info" title="How to Find Your Organization UUID?" >}}
68-
You can find and copy your Organization UUID from your organization page on [Layer5 Cloud](https://cloud.layer5.io/identity/organizations).
68+
You can find and copy your Organization UUID from your organization page on [Academy](https://cloud.layer5.io/academy).
6969
{{< /alert >}}
7070
7171
2. **Create the Core Directories**
@@ -79,80 +79,89 @@ You can find and copy your Organization UUID from your organization page on [Lay
7979
8080
3. **Build the Content Hierarchy**
8181
82-
With the main folders in place, you can now structure your first course inside the `content` directory. The content is organized in a clear hierarchy: **Learning Path → Course → Chapter**.
82+
With the main folders in place, you can now structure your first course inside the `content` directory. The content is organized in a clear hierarchy: **Learning Path → Course → Module → Page, Quiz, or Lab.**
8383
8484
A high-level view of the structure looks like this:
8585
8686
```text
87-
content/
88-
└── learning-paths/
89-
├── _index.md
90-
└── ea124d12-234a-6f78-9df0-1fa2b3e4d567/ // <-- Organization UID
91-
└── mastering-kubernetes/ // <-- Learning Path
92-
├── _index.md
93-
└── advanced-networking/ // <-- Course 1
94-
└── core-concepts/ // <-- Course 2
95-
├── _index.md
96-
├── 01-pods.md // <-- Chapter 1
97-
└── 02-services.md // <-- Chapter 2
98-
└── arch.png // <-- Image
87+
learning-paths/
88+
└── mastering-kubernetes/ // <-- Learning Path
89+
├── _index.md
90+
├── advanced-networking/ // <-- Course 1
91+
│ └── _index.md
92+
└── core-concepts/ // <-- Course 2
93+
├── _index.md
94+
└── 01-pods-and-services/ // <-- Module
95+
├── _index.md
96+
├── 01-pods.md // <-- Page 1
97+
├── 02-services.md // <-- Page 2
98+
├── 03-knowledge-check.md // <-- Quiz
99+
├── 04-hands-on-lab.md // <-- Lab
100+
└── arch.png // <-- Image
99101
```
100-
101-
Each folder represents a level in the hierarchy, and the `_index.md` file within a folder defines the metadata (like title and description) for that level. The final `.md` files are your individual Chapter.
102+
Each folder represents a level in the hierarchy. The `_index.md` file within a folder is crucial as it defines the metadata for that level, such as its `title`, `description`, and `type` (e.g., `type: "course"`). The final `.md` files at the lowest level are your individual **Pages**, **Quizzes**, or **Labs**.
102103
103104
> For a deeper understanding of how Hugo uses `_index.md` to create content sections, you can refer to the official [Hugo Page Bundles documentation](https://gohugo.io/content-management/page-bundles/).
104105
105106
4. **Front matter**
106107
107-
Use this at the top of each **Learning Path** page (`learning-paths/<orgId>/<slug>/_index.md` or similar):
108+
Front matter is the configuration block at the top of every content file that defines its metadata. The most critical field is type, which tells the Academy how to render the content.
109+
110+
The front matter configuration varies slightly depending on whether you are creating a Learning Path/Challengs, Course, Module, or Page. The following examples for a Learning Path and a Course illustrate a typical setup.
111+
112+
**Learing Path Frontmatter**
108113
109114
```yaml
110115
---
111-
title: "Advanced Course"
112-
description: "This ADVANCED - Course is where to get the technical knowledge."
116+
type: "learning-paths"
117+
title: "Cloud Fundamentals"
118+
description: "A learning path focused on providing the technical knowledge required for advanced topics."
113119
weight: 5
114-
banner: "images/exoscale-icon.svg"
115-
id: "754627a3-7993-4b01-a7f0-c66c0212a1a1"
116-
tags: [orchestration]
117-
categories: [introductory]
120+
banner: "images/kubernetes-icon.svg"
121+
id: "754627a3-2323-4545-a7f0-c66c0212a1a1"
122+
tags: [kubernetes, infrastructure]
123+
categories: "cloud"
118124
---
119125
```
120126
121-
> Place this frontmatter in the Markdown file that represents the learning path index page.
122-
123-
**Course Frontmatter (Optional Individual Course Pages)**
127+
**Course Frontmatter**
124128
125129
If each course has its own markdown page, you can use this frontmatter:
126130
127131
```yaml
128132
---
129-
id: "Networks"
130-
title: "Networks"
131-
description: "This course clear your Network concept"
133+
type: "course"
134+
title: "Intro Sustainability"
135+
description: "An introductory course exploring the core concepts of sustainability."
132136
weight: 2
133137
banner: "images/kubernetes-icon.svg"
134-
tags: [network]
135-
categories: [introductory]
138+
tags: [network, infrastructure]
139+
level: "beginner"
140+
categories: "compliance"
136141
---
137142
```
138143
139144
**Summary of Required Fields**
140145
141-
| Applicable To | Field | Required | Notes |
142-
| --------------- | ------------- | :------: | -------------------------------------------------------------------------- |
143-
| All | `title` | ✅ | The main display title. |
144-
| All | `description` | ✅ | A brief summary of the content. |
145-
| All | `weight` | ✅ | Controls the display order (lower numbers appear first). |
146-
| All | `banner` | ❌ | Path to an image in the `static` folder, e.g., `images/icon.svg`. |
147-
| All | `tags` | ❌ | Keywords for content discovery. |
148-
| All | `categories` | ❌ | The main categories for the content. |
149-
| All | `draft` | ❌ | If `true`, the page will not be published. |
150-
| **Learning Path** | `id` | ✅ | **Crucial.** A stable UUID for tracking progress. **Do not change.** [^1]|
151-
| **Course** | `id` | ❌ | A simple, human-readable string identifier for the course. |
152-
| **Course** | `prerequisites` | ❌ | Optional list of prerequisites for the course. |
146+
| Applicable To | Field | Required | Notes |
147+
| ----------------------------- | ------------- | :------: | ------------------------------------------------------------------------------------------------------------- |
148+
| All | `title` | ✅ | The main display title. |
149+
| All | `description` | ✅ | A brief summary of the content. |
150+
| All | `weight` | ✅ | Controls the display order (lower numbers appear first). |
151+
| All | `draft` | ❌ | If `true`, the page will not be published. |
152+
| All | `type` | | Defines the content's role. Optional values: `challenge`, `learning-path`, `course`, `module`, `page`, `quiz`, or `lab`. |
153+
| **Course** | `level` | ❌ | The difficulty level of the content. Optional values: `beginner`, `intermediate`, `advanced`. |
154+
| **Learning Path** | `id` | | **Crucial.** A stable UUID for tracking progress. **Do not change.** [^1] |
155+
| **Learning Path**, **Course**, **module** | `tags` | ❌ | Keywords for content discovery. Multiple tags can be selected. |
156+
| **Learning Path**, **Course**, **module** | `categories` | | The main categories for the content. Only one can be selected. |
157+
| **Learning Path**, **Course** | `banner` | ❌ | Path to an image in the `static` folder, e.g., `images/icon.svg`. |
153158

154159
> For a complete list of all predefined variables and advanced usage, please refer to the official [Hugo Front Matter documentation](https://gohugo.io/content-management/front-matter/).
155160

161+
{{< alert type="info" title="Be Careful About Name Changes" >}}
162+
Renaming a course or module after publication would break the learning path tracking for enrolled learners. It's like changing pages while someone is following the story. Consider updating the module’s description, adding an introductory note, or creating a versioned copy.
163+
{{< /alert >}}
164+
156165
## 3. Add Assets and Interactive Content
157166
158167
Enhance your course with images and other visual aids. The recommended and standard method for adding images is Page Bundling. This approach involves placing your image files directly alongside the Markdown content they belong to, which is simpler and keeps content organized.
@@ -163,9 +172,9 @@ For all assets, please use the Page Bundling method. It simplifies asset managem
163172
164173
**How to Add an Image**
165174
166-
1. Place your image file (e.g., `hugo-logo.png`) in the **same directory** as your Markdown file (e.g., `Chapter-1.md`).
175+
1. Place your image file (e.g., `hugo-logo.png`) in the **same directory** as your Markdown file (e.g., `01-pods.md`).
167176
168-
2. In your `Chapter-1.md` file, embed the image using a **standard Markdown link**. The path should just be the filename.
177+
2. In your `01-pods.md` file, embed the image using a **standard Markdown link**. The path should just be the filename.
169178
170179
```markdown
171180
![The Hugo Logo](hugo-logo.png)
@@ -311,9 +320,6 @@ This command first deletes the local build cache (`public` directory) and then r
311320
```bash
312321
make clean
313322
```
314-
{{< alert type="info" title="Be Careful About Name Changes" >}}
315-
Renaming a course or module after publication would break the learning path tracking for enrolled learners. It's like changing chapters while someone is following the story. Consider updating the module’s description, adding an introductory note, or creating a versioned copy.
316-
{{< /alert >}}
317323
318324
## Frequently Asked Questions
319325
68.7 KB
Loading

content/en/cloud/academy/extending-the-academy/index.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,13 @@ You don't need to be a web developer to create beautiful and effective learning
3939

4040
Your content is structured hierarchically to create a clear and logical learning experience for your users.
4141

42-
At the highest level, you have a **Learning Path**, which serves as a container for a specific specialization or topic. Each Learning Path is made up of one or more **Courses**, and each Course is further broken down into individual **Chapters**. This modular structure makes your content easy to navigate, manage, and update.
42+
At the highest level, you have a **Learning Path**, which contains one or more **Courses**. Each Course is broken down into **Modules**, and each Module consists of individual learning activities like **Pages** (for text), **Quizzes** (for knowledge checks), and **Labs** (for hands-on practice). This modular structure makes your content easy to navigate, manage, and update.
4343

44-
For example, a Learning Path titled "Mastering Kubernetes" might contain:
45-
- A Course named "Core Concepts", which includes Chapters on "Pods", "Services", and "Deployments".
46-
- Another Course named "Advanced Networking", with Chapters on "Ingress" and "Service Mesh".
44+
For example, a **Learning Path** named **"Mastering Kubernetes"** might contain:
45+
* A **Course** on **"Core Concepts"**, which is broken down into multiple modules:
46+
* **Module 1: "Workload Fundamentals"**, containing a **Page** on the "Anatomy of a Pod" and a hands-on **Lab** for "Scaling Deployments".
47+
* **Module 2: "Networking Principles"**, containing a **Page** that covers "Services and Ingress" and a **Quiz** on networking concepts.
4748

4849
{{< alert type="warning" title="Content Isolation" >}}
4950
To ensure security and isolation, all of your content files must be placed within a directory named for your organization UUID. You'll learn the specifics of how to do this in our [hands-on tutorial](/cloud/academy/creating-your-learning-path/).
50-
{{< /alert >}}
51+
{{< /alert >}}

0 commit comments

Comments
 (0)