|
1 | 1 | # Exoscale Academy |
2 | 2 |
|
| 3 | +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. |
3 | 4 |
|
| 5 | +## Table of Contents |
4 | 6 |
|
5 | | -### Contributing |
| 7 | +- [Prerequisites](#prerequisites) |
| 8 | +- [Getting Started](#getting-started) |
| 9 | +- [Repository Structure](#repository-structure) |
| 10 | +- [Content Authoring Workflow](#content-authoring-workflow) |
| 11 | +- [Managing Assets (Images & Videos)](#managing-assets-images--videos) |
| 12 | +- [Local Development](#local-development) |
| 13 | +- [Deploying & Going Live](#deploying--going-live) |
| 14 | +- [Contributing](#contributing) |
| 15 | +- [Site Framework](#site-framework) |
| 16 | +- [License](#license) |
6 | 17 |
|
7 | | -To learn to create and publish learning paths, courses, chapters, challenges, and so on see the documentation at https://docs.layer5.io/cloud/academy. |
| 18 | +## Prerequisites |
8 | 19 |
|
| 20 | +Before you begin, ensure you have: |
9 | 21 |
|
10 | | -#### Site Framework |
11 | | -Using Golang, built on Hugo, integrated with Layer5 Cloud. See the https://github.com/layer5io/academy-theme and https://github.com/layer5io/academy-template as relevant resources. |
| 22 | +- [**Hugo**](https://gohugo.io/getting-started/installing/) (extended version, recommended v0.147.9 or later) |
| 23 | +- [**Go**](https://go.dev/doc/install) (v1.12 or later) |
| 24 | + |
| 25 | +## Getting Started |
| 26 | + |
| 27 | +1. **Clone the Repository** |
| 28 | + |
| 29 | + ```bash |
| 30 | + git clone https://github.com/layer5io/exoscale-academy.git |
| 31 | + cd exoscale-academy |
| 32 | + ``` |
| 33 | + |
| 34 | +2. **(Optional: If contributing from a fork)** |
| 35 | + - Edit `go.mod` and update the module path to match your fork. Save and commit. |
| 36 | + |
| 37 | +3. **Organization UID** |
| 38 | + - All Exoscale Academy content is namespaced under the UID: |
| 39 | + ``` |
| 40 | + 98e16360-a366-4b78-8e0a-031da07fdacb |
| 41 | + ``` |
| 42 | +
|
| 43 | +## Repository Structure |
| 44 | +
|
| 45 | +``` |
| 46 | +layer5io-exoscale-academy/ |
| 47 | +├── README.md |
| 48 | +├── LICENSE |
| 49 | +├── go.mod, go.sum |
| 50 | +├── hugo.yaml |
| 51 | +├── Makefile, flake.nix, flake.lock, package.json, postcss.config.js |
| 52 | +├── content/ |
| 53 | +│ └── en/ |
| 54 | +│ └── learning-paths/ |
| 55 | +│ └── 98e16360-a366-4b78-8e0a-031da07fdacb/ |
| 56 | +│ └── / |
| 57 | +│ └── / |
| 58 | +│ └── / |
| 59 | +│ └── content/ |
| 60 | +│ └── .md |
| 61 | +├── static/ |
| 62 | +│ └── 98e16360-a366-4b78-8e0a-031da07fdacb/ |
| 63 | +│ └── images/ |
| 64 | +├── layouts/ |
| 65 | +│ └── shortcodes/ |
| 66 | +│ └── 98e16360-a366-4b78-8e0a-031da07fdacb/ |
| 67 | +│ └── custom-org-shortcode.html |
| 68 | +└── .github/ |
| 69 | + └── ISSUE_TEMPLATE/, workflows/, config, etc. |
| 70 | +``` |
| 71 | +> **Learning Path → Course → Chapter → Lesson** is the core structure. |
| 72 | +Each level uses `_index.md` and lessons use `.md` files with [Hugo frontmatter](https://gohugo.io/content-management/front-matter/). |
| 73 | +
|
| 74 | +## Content Authoring Workflow |
| 75 | +
|
| 76 | +1. **Create Content** |
| 77 | +
|
| 78 | + - Authoring takes place inside: |
| 79 | + ``` |
| 80 | + content/en/learning-paths/98e16360-a366-4b78-8e0a-031da07fdacb/ |
| 81 | + ``` |
| 82 | + - Structure: |
| 83 | + ``` |
| 84 | + <learning-path>/ |
| 85 | + <course>/ |
| 86 | + <chapter>/ |
| 87 | + content/ |
| 88 | + lesson1.md |
| 89 | + lesson2.md |
| 90 | + ``` |
| 91 | +
|
| 92 | + - **Frontmatter Required** (example for any `_index.md` or lesson .md): |
| 93 | +
|
| 94 | + ```yaml |
| 95 | + --- |
| 96 | + title: "Title of Section or Lesson" |
| 97 | + description: "One-liner summary" |
| 98 | + weight: 10 # for menu order, lower numbers appear first |
| 99 | + --- |
| 100 | + ``` |
| 101 | +
|
| 102 | +2. **Delete Example Content** |
| 103 | + - Remove any demo/example files not relevant to your new material. |
| 104 | +
|
| 105 | +3. **Organize Lessons** |
| 106 | + - Add new folders and markdown files for each learning path, course, chapter, and lesson. |
| 107 | +
|
| 108 | +## Managing Assets (Images & Videos) |
| 109 | +
|
| 110 | +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. |
| 111 | +
|
| 112 | +### How to Add an Image |
| 113 | +
|
| 114 | +1. Place your image (example: `exoscale-logo.png`) in the organization’s static directory: |
| 115 | +
|
| 116 | + ``` |
| 117 | + static/98e16360-a366-4b78-8e0a-031da07fdacb/images/exoscale-logo.png |
| 118 | + ``` |
| 119 | +
|
| 120 | +2. In lesson markdown, embed your image using the `usestatic` shortcode (path is relative to your org’s folder): |
| 121 | +
|
| 122 | + ```markdown |
| 123 | +  |
| 124 | + ``` |
| 125 | +
|
| 126 | +> When you build the site, this shortcode automatically resolves to a working, tenant-aware asset path. |
| 127 | +
|
| 128 | +### How to Add a Video |
| 129 | +
|
| 130 | +Embed videos in a visually distinct `card` using: |
| 131 | +
|
| 132 | +```markdown |
| 133 | +{{</* card title="Video: Example" */>}} |
| 134 | +<video width="100%" height="100%" controls> |
| 135 | + <source src="https://example.com/your-video.mp4" type="video/mp4"> |
| 136 | + Your browser does not support the video tag. |
| 137 | +</video> |
| 138 | +{{</* /card */>}} |
| 139 | +``` |
| 140 | + |
| 141 | +> Always use these shortcodes for images and videos so assets remain portable, visible, and cloud-ready. |
| 142 | +
|
| 143 | +## Local Development |
| 144 | + |
| 145 | +To preview your content locally, run: |
| 146 | + |
| 147 | +```bash |
| 148 | +hugo server |
| 149 | +``` |
| 150 | + |
| 151 | +- Open the local URL displayed in your terminal browser. |
| 152 | +- Local preview uses plain styling; full Layer5 Cloud branding is applied on production. |
| 153 | + |
| 154 | +## Deploying & Going Live |
| 155 | + |
| 156 | +1. **Commit and push** your changes to a branch or `main`. |
| 157 | +2. **Contact Layer5** via [Slack](https://slack.layer5.io/), email, or by opening a GitHub issue. |
| 158 | +3. Provide your repository URL. |
| 159 | +4. Once reviewed, a Layer5 admin will synchronize your content to the [Layer5 Cloud Academy](https://cloud.layer5.io/academy/overview). |
| 160 | + |
| 161 | +## Contributing |
| 162 | + |
| 163 | +- See [Academy Docs](https://docs.layer5.io/cloud/academy) for best practices on creating and publishing learning paths, courses, chapters, and challenges. |
| 164 | +- Refer to [CONTRIBUTING.md](./CONTRIBUTING.md) for branching, committing, and PR workflow. |
| 165 | +- Review [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) and [SECURITY.md](./SECURITY.md) prior to contributing. |
| 166 | + |
| 167 | +## Site Framework |
| 168 | + |
| 169 | +- **Stack:** Built with [Golang](https://golang.org/) and [Hugo](https://gohugo.io/), fully integrated with [Layer5 Cloud](https://cloud.layer5.io/academy/overview). |
| 170 | +- **Theme & Template:** Refer to [academy-theme](https://github.com/layer5io/academy-theme) and [academy-template](https://github.com/layer5io/academy-template) for advanced customization. |
| 171 | + |
| 172 | +## License |
| 173 | + |
| 174 | +Distributed under the [Apache 2.0 License](./LICENSE). |
| 175 | + |
| 176 | +For questions or help, open a [GitHub Issue](https://github.com/layer5io/exoscale-academy/issues) or join the [Layer5 Slack Community](https://slack.layer5.io/). |
| 177 | + |
| 178 | +**Happy Learning!** |
| 179 | +_The Layer5 & Exoscale Academy Team_ |
0 commit comments