Welcome to Exoscale Academy, the dedicated cloud education and training platform powered by Layer5. This repository provides a comprehensive framework for creating, organizing, and publishing structured learning paths, courses, and lessons tailored for Exoscale users and cloud practitioners.
To help you create professional and visually consistent content, this academy provides the official Exoscale Icons model for building custom architecture diagrams.
You can preview the full collection of icons anytime on the Meshery Catalog.
- Import the Model: Navigate to your Registry Settings in Meshery.
- Select "Import from URL".
- Paste the following URL to import the icon set:
https://meshery.io/assets/modelsFiles/exoscale-icons.tar
Once imported, the individual Exoscale icons will be available in the Designer's shapes palette for you to use.
- Prerequisites
- Getting Started
- Repository Structure
- Content Authoring Workflow
- Managing Assets: Images, Videos, and Embedded Designs
- Local Development
- Deploying & Going Live
- Contributing
- Site Framework
- License
Before you begin, ensure you have:
-
Clone the Repository
git clone https://github.com/layer5io/exoscale-academy.git cd exoscale-academy
-
(Optional: If contributing from a fork)
- Edit
go.mod
and update the module path to match your fork. Save and commit.
- Edit
-
Organization UID
- All Exoscale Academy content is namespaced under its Organization ID:
1e2a8e46-937c-47ea-ab43-5716e3bcab2e
- All Exoscale Academy content is namespaced under its Organization ID:
layer5io-exoscale-academy/
├── README.md
├── LICENSE
├── go.mod, go.sum
├── hugo.yaml
├── Makefile, flake.nix, flake.lock, package.json, postcss.config.js
├── content/
│ └── en/
│ └── learning-paths/
│ └── 1e2a8e46-937c-47ea-ab43-5716e3bcab2e/
│ └── /
│ └── /
│ └── /
│ └── content/
│ └── .md
├── static/
│ └── 1e2a8e46-937c-47ea-ab43-5716e3bcab2e/
│ └── images/
├── layouts/
│ └── shortcodes/
│ └── 1e2a8e46-937c-47ea-ab43-5716e3bcab2e/
│ └── custom-org-shortcode.html
└── .github/
└── ISSUE_TEMPLATE/, workflows/, config, etc.
Learning Path → Course → Chapter → Lesson is the core structure. Each level uses
_index.md
and lessons use.md
files with Hugo frontmatter.
-
Create Content
-
Authoring takes place inside:
content/en/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/
-
Structure:
<learning-path>/ <course>/ <chapter>/ content/ lesson1.md lesson2.md
-
Frontmatter Required (example for any
_index.md
or lesson .md):--- title: "Title of Section or Lesson" description: "One-liner summary" weight: 10 # for menu order, lower numbers appear first ---
-
-
Delete Example Content
- Remove any demo/example files not relevant to your new material.
-
Organize Lessons
- Add new folders and markdown files for each learning path, course, chapter, and lesson.
Enhance your courses with images and rich visual content. For compatibility with the Layer5 Academy’s multi-tenant architecture, do not use standard Markdown image links. Use shortcodes as described below.
-
Place your image (example:
exoscale-logo.png
) in the organization’s static directory:static/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/images/exoscale-logo.png
-
In lesson markdown, embed your image using the
usestatic
shortcode (path is relative to your org’s folder):
When you build the site, this shortcode automatically resolves to a working, tenant-aware asset path.
Embed videos in a visually distinct card
using:
{{</* card title="Video: Example" */>}}
<video width="100%" height="100%" controls>
<source src="https://example.com/your-video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
{{</* /card */>}}
-
Place Design Assets Put your design files (e.g.,
cdn.js
, design YAMLs) alongside your course or lesson content, ideally following the same directory conventions used for images. -
Embed Using the meshery-design-embed Shortcode In your lesson markdown, use:
{{< meshery-design-embed
id="embedded-design-0e3abb9c-39e7-4d09-b46f-26a0238c3c3d"
src="cdn.js"
>}}
- Replace
id
with the unique identifier for your design. - Replace
src
with the path to your JS asset responsible for rendering.
Always use these shortcodes for images, videos, and embedded designs. This keeps assets portable, ensures they resolve correctly for each organization, and integrates properly with the Academy platform’s build and deployment flow.
To preview your content locally, run:
hugo server
- Open the local URL displayed in your terminal browser.
- Local preview uses plain styling; full Layer5 Cloud branding is applied on production.
- Commit and push your changes to a branch or
main
. - Contact Layer5 via Slack, email, or by opening a GitHub issue.
- Provide your repository URL.
- Once reviewed, a Layer5 admin will synchronize your content to the Layer5 Cloud Academy.
- See Academy Docs for best practices on creating and publishing learning paths, courses, chapters, and challenges.
- Refer to CONTRIBUTING.md for branching, committing, and PR workflow.
- Review CODE_OF_CONDUCT.md and SECURITY.md prior to contributing.
- Stack: Built with Golang and Hugo, fully integrated with Layer5 Cloud.
- Theme & Template: Refer to academy-theme and academy-template for advanced customization.
Distributed under the Apache 2.0 License.
For questions or help, open a GitHub Issue or join the Layer5 Slack Community.
Happy Learning! The Layer5 & Exoscale Academy Team