Skip to content

Commit 984fc4d

Browse files
authored
Merge branch 'master' into w--video-hosting
2 parents de4650c + 7bb9af4 commit 984fc4d

File tree

6 files changed

+63
-53
lines changed

6 files changed

+63
-53
lines changed
-52.2 KB
Loading

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

Lines changed: 55 additions & 46 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.
@@ -172,9 +181,9 @@ While there's no hard-coded size limit, we enforce these practical constraints:
172181

173182
### How to Add an Image
174183

175-
1. Place your image file (e.g., `hugo-logo.png`) in the **same directory** as your Markdown file (e.g., `Chapter-1.md`).
184+
1. Place your image file (e.g., `hugo-logo.png`) in the **same directory** as your Markdown file (e.g., `01-pods.md`).
176185

177-
2. In your `Chapter-1.md` file, embed the image using a **standard Markdown link**. The path should just be the filename.
186+
2. In your `01-pods.md` file, embed the image using a **standard Markdown link**. The path should just be the filename.
178187

179188
```markdown
180189
![The Hugo Logo](hugo-logo.png)
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 >}}

data/kanvas_discuss.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

static/data/csv/pricing-list.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!DOCTYPE html><html lang="en"><head><meta name="description" content="Web word processing, presentations and spreadsheets"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"><link rel="shortcut icon" href="//docs.google.com/favicon.ico"><title>Page Not Found</title><meta name="referrer" content="origin"><link href="//fonts.googleapis.com/css?family=Product+Sans" rel="stylesheet" type="text/css" nonce="aTfjggbqHKePtG1gEhVI2w"><style nonce="aTfjggbqHKePtG1gEhVI2w">.goog-inline-block{position:relative;display:-moz-inline-box;display:inline-block}* html .goog-inline-block{display:inline}*:first-child+html .goog-inline-block{display:inline}#drive-logo{margin:18px 0;position:absolute;white-space:nowrap}.docs-drivelogo-img{background-image:url(//ssl.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_116x41dp.png);-webkit-background-size:116px 41px;background-size:116px 41px;display:inline-block;height:41px;vertical-align:bottom;width:116px}.docs-drivelogo-text{color:#000;display:inline-block;opacity:.54;text-decoration:none;font-family:"Product Sans",Arial,Helvetica,sans-serif;font-size:32px;text-rendering:optimizeLegibility;position:relative;top:-6px;left:-7px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:144dpi){.docs-drivelogo-img{background-image:url(//ssl.gstatic.com/images/branding/googlelogo/2x/googlelogo_color_116x41dp.png)}}sentinel{}</style><style type="text/css" nonce="aTfjggbqHKePtG1gEhVI2w">body {background-color: #fff; font-family: Arial,sans-serif; font-size: 13px; margin: 0; padding: 0;}a, a:link, a:visited {color: #112ABB;}</style><style type="text/css" nonce="aTfjggbqHKePtG1gEhVI2w">.errorMessage {font-size: 12pt; font-weight: bold; line-height: 150%;}</style></head><body><div id="outerContainer"><div id="innerContainer"><div style="position: absolute; top: -80px;"><div style="margin: 18px 0; position: absolute; white-space: nowrap;"><a href="//support.google.com/docs/"><img height="35px" src="//ssl.gstatic.com/docs/common/product/spreadsheets_lockup2.png" alt="Google logo"/></a></div></div><div align="center"><p class="errorMessage" style="padding-top: 50px">Sorry, unable to open the file at this time.</p><p> Please check the address and try again. </p><div style="background: #F0F6FF; border: 1px solid black; margin-top: 35px; padding: 10px 125px; width: 300px;"><p><strong>Get stuff done with Google Drive</strong></p><p>Apps in Google Drive make it easy to create, store and share online documents, spreadsheets, presentations and more.</p><p>Learn more at <a href="https://drive.google.com/start/apps">drive.google.com/start/apps</a>.</p></div></div></div></div></body><style nonce="aTfjggbqHKePtG1gEhVI2w">html {height: 100%; overflow: auto;}body {height: 100%; overflow: auto;}#outerContainer {margin: auto; max-width: 750px;}#innerContainer {margin-bottom: 20px; margin-left: 40px; margin-right: 40px; margin-top: 80px; position: relative;}</style></html>
1+
<!DOCTYPE html><html lang="en"><head><meta name="description" content="Web word processing, presentations and spreadsheets"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"><link rel="shortcut icon" href="//docs.google.com/favicon.ico"><title>Page Not Found</title><meta name="referrer" content="origin"><link href="//fonts.googleapis.com/css?family=Product+Sans" rel="stylesheet" type="text/css" nonce="Pqwdh0P2DCRMNZwd53p3kA"><style nonce="Pqwdh0P2DCRMNZwd53p3kA">.goog-inline-block{position:relative;display:-moz-inline-box;display:inline-block}* html .goog-inline-block{display:inline}*:first-child+html .goog-inline-block{display:inline}#drive-logo{margin:18px 0;position:absolute;white-space:nowrap}.docs-drivelogo-img{background-image:url(//ssl.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_116x41dp.png);-webkit-background-size:116px 41px;background-size:116px 41px;display:inline-block;height:41px;vertical-align:bottom;width:116px}.docs-drivelogo-text{color:#000;display:inline-block;opacity:.54;text-decoration:none;font-family:"Product Sans",Arial,Helvetica,sans-serif;font-size:32px;text-rendering:optimizeLegibility;position:relative;top:-6px;left:-7px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:144dpi){.docs-drivelogo-img{background-image:url(//ssl.gstatic.com/images/branding/googlelogo/2x/googlelogo_color_116x41dp.png)}}sentinel{}</style><style type="text/css" nonce="Pqwdh0P2DCRMNZwd53p3kA">body {background-color: #fff; font-family: Arial,sans-serif; font-size: 13px; margin: 0; padding: 0;}a, a:link, a:visited {color: #112ABB;}</style><style type="text/css" nonce="Pqwdh0P2DCRMNZwd53p3kA">.errorMessage {font-size: 12pt; font-weight: bold; line-height: 150%;}</style></head><body><div id="outerContainer"><div id="innerContainer"><div style="position: absolute; top: -80px;"><div style="margin: 18px 0; position: absolute; white-space: nowrap;"><a href="//support.google.com/docs/"><img height="35px" src="//ssl.gstatic.com/docs/common/product/spreadsheets_lockup2.png" alt="Google logo"/></a></div></div><div align="center"><p class="errorMessage" style="padding-top: 50px">Sorry, unable to open the file at this time.</p><p> Please check the address and try again. </p><div style="background: #F0F6FF; border: 1px solid black; margin-top: 35px; padding: 10px 125px; width: 300px;"><p><strong>Get stuff done with Google Drive</strong></p><p>Apps in Google Drive make it easy to create, store and share online documents, spreadsheets, presentations and more.</p><p>Learn more at <a href="https://drive.google.com/start/apps">drive.google.com/start/apps</a>.</p></div></div></div></div></body><style nonce="Pqwdh0P2DCRMNZwd53p3kA">html {height: 100%; overflow: auto;}body {height: 100%; overflow: auto;}#outerContainer {margin: auto; max-width: 750px;}#innerContainer {margin-bottom: 20px; margin-left: 40px; margin-right: 40px; margin-top: 80px; position: relative;}</style></html>

0 commit comments

Comments
 (0)