|
1 | | -# Docsy Example |
| 1 | +Reusable hugo theme module that powers the layer5 academy . |
| 2 | +this modules provides the layouts , shortcodes and partials to get academy up and running |
2 | 3 |
|
3 | | -[Docsy][] is a [Hugo theme module][] for technical documentation sites, providing easy |
4 | | -site navigation, structure, and more. This **Docsy Example Project** uses the Docsy |
5 | | -theme component as a hugo module and provides a skeleton documentation structure for you to use. |
6 | | -You can clone/copy this project and edit it with your own content, or use it as an example. |
| 4 | +The recommended approach to use this theme is through the academy starter template . |
7 | 5 |
|
8 | | -In this project, the Docsy theme is pulled in as a Hugo module, together with |
9 | | -its dependencies: |
| 6 | +## Getting started with this theme |
10 | 7 |
|
11 | | -```console |
12 | | -$ hugo mod graph |
13 | | -... |
14 | | -``` |
15 | | - |
16 | | -For Docsy documentation, see [Docsy user guide][]. |
17 | | - |
18 | | -This Docsy Example Project is hosted on [Netlify][] at [example.docsy.dev][]. |
19 | | -You can view deploy logs from the [deploy section of the project's Netlify |
20 | | -dashboard][deploys], or this [alternate dashboard][]. |
21 | | - |
22 | | -This is not an officially supported Google product. This project is currently maintained. |
23 | | - |
24 | | -## Using the Docsy Example Project as a template |
25 | | - |
26 | | -A simple way to get started is to use this project as a template, which gives you a site project that is set up and ready to use. To do this: |
27 | | - |
28 | | -1. Use the dropdown for switching branches/tags to change to the **latest** released tag. |
29 | | - |
30 | | -2. Click **Use this template**. |
31 | | - |
32 | | -3. Select a name for your new project and click **Create repository from template**. |
33 | | - |
34 | | -4. Make your own local working copy of your new repo using git clone, replacing https://github.com/me/example.git with your repo’s web URL: |
35 | | - |
36 | | -```bash |
37 | | -git clone --depth 1 https://github.com/me/example.git |
38 | | -``` |
39 | | - |
40 | | -Depending on your environment you may need to adjust the top-level `module` settings in your project's Hugo config file, for example, by adding a proxy to use when downloading remote modules. |
41 | | -You can find details of what these configuration settings do in the [Hugo modules documentation](https://gohugo.io/hugo-modules/configuration/#module-config-top-level). |
42 | | - |
43 | | -Once your settings are adjusted, you can edit your own versions of the site’s source files. |
44 | | - |
45 | | -If you want to do SCSS edits and want to publish these, you need to install `PostCSS` |
46 | | - |
47 | | -```bash |
48 | | -npm install |
49 | | -``` |
50 | | - |
51 | | -## Running the website locally |
52 | | - |
53 | | -Building and running the site locally requires a recent `extended` version of [Hugo](https://gohugo.io). |
54 | | -You can find out more about how to install Hugo for your environment in our |
55 | | -[Getting started](https://www.docsy.dev/docs/getting-started/#prerequisites-and-installation) guide. |
56 | | - |
57 | | -Once you've made your working copy of the site repo, from the repo root folder, run: |
58 | | - |
59 | | -```bash |
60 | | -hugo server |
61 | | -``` |
62 | | - |
63 | | -## Running a container locally |
64 | | - |
65 | | -You can run docsy-example inside a [Docker](https://docs.docker.com/) |
66 | | -container, the container runs with a volume bound to the `docsy-example` |
67 | | -folder. This approach doesn't require you to install any dependencies other |
68 | | -than [Docker Desktop](https://www.docker.com/products/docker-desktop) on |
69 | | -Windows and Mac, and [Docker Compose](https://docs.docker.com/compose/install/) |
70 | | -on Linux. |
71 | 8 |
|
72 | | -1. Build the docker image |
| 9 | +The recommended approach to use this theme is through the academy starter template . |
73 | 10 |
|
74 | | - ```bash |
75 | | - docker-compose build |
76 | | - ``` |
77 | 11 |
|
78 | | -1. Run the built image |
| 12 | +## 📄 `tenant-context.html` (Required Partial) |
79 | 13 |
|
80 | | - ```bash |
81 | | - docker-compose up |
82 | | - ``` |
| 14 | +**Location:** `layouts/partials/tenant-context.html` |
| 15 | +**Purpose:** Provides a hardcoded tenant UUID (`orgId`) for shortcodes and templates to use. This enables tenant-aware content in a multi-tenant Hugo theme. |
83 | 16 |
|
84 | | - > NOTE: You can run both commands at once with `docker-compose up --build`. |
| 17 | +--- |
85 | 18 |
|
86 | | -1. Verify that the service is working. |
| 19 | +### 📌 Why this is required |
87 | 20 |
|
88 | | - Open your web browser and type `http://localhost:1313` in your navigation bar, |
89 | | - This opens a local instance of the docsy-example homepage. You can now make |
90 | | - changes to the docsy example and those changes will immediately show up in your |
91 | | - browser after you save. |
| 21 | +This partial is **mandatory** when using this theme. Many of the theme’s built-in shortcodes (`usestatic`, `useshortcode`, etc.) internally depend on this file to fetch the correct tenant UUID. |
92 | 22 |
|
93 | | -### Cleanup |
| 23 | +Each tenant must **hardcode their own UUID** in this file to properly namespace assets, shortcodes, and logic. |
94 | 24 |
|
95 | | -To stop Docker Compose, on your terminal window, press **Ctrl + C**. |
96 | 25 |
|
97 | | -To remove the produced images run: |
| 26 | +```gohtml |
| 27 | +{{/* |
| 28 | + Partial: tenant-context |
| 29 | + Required by: usestatic, useshortcode, and other reusable shortcodes. |
| 30 | + Description: |
| 31 | + Hardcoded context for the current tenant. |
| 32 | + This file must be customized per tenant site to return the correct UUID/orgId. |
98 | 33 |
|
99 | | -```bash |
100 | | -docker-compose rm |
101 | | -``` |
102 | | -For more information see the [Docker Compose documentation][]. |
103 | | - |
104 | | -## Using a local Docsy clone |
105 | | - |
106 | | -Make sure your installed go version is `1.18` or higher. |
107 | | - |
108 | | -Clone the latest version of the docsy theme into the parent folder of your project. The newly created repo should now reside in a sibling folder of your site's root folder. |
109 | | - |
110 | | -```shell |
111 | | -cd root-of-your-site |
112 | | -git clone --branch v0.12.0 https://github.com/google/docsy.git ../docsy |
113 | | -``` |
114 | | - |
115 | | -Now run: |
116 | | - |
117 | | -```shell |
118 | | -HUGO_MODULE_WORKSPACE=docsy.work hugo server --ignoreVendorPaths "**" |
119 | | -``` |
120 | | - |
121 | | -or, when using npm, prepend `local` to the script you want to invoke, e.g.: |
122 | | - |
123 | | -```shell |
124 | | -npm run local serve |
125 | | -``` |
| 34 | + Usage in shortcodes or templates: |
| 35 | + {{ $ctx := partial "tenant-context.html" . }} |
| 36 | + {{ $uuid := $ctx.uuid }} |
| 37 | +*/}} |
126 | 38 |
|
127 | | -By using the `HUGO_MODULE_WORKSPACE` directive (either directly or via prefix `local` when using npm), the server now watches all files and directories inside the sibling directory `../docsy` , too. Any changes inside the local `docsy` theme clone are now immediately picked up (hot reload), you can instantly see the effect of your local edits. |
128 | | - |
129 | | -In the command above, we used the environment variable `HUGO_MODULE_WORKSPACE` to tell hugo about the local workspace file `docsy.work`. Alternatively, you can declare the workspace file inside your settings file `hugo.toml`: |
130 | | - |
131 | | -```toml |
132 | | -[module] |
133 | | - workspace = "docsy.work" |
134 | | -``` |
135 | | - |
136 | | -Your project's `hugo.toml` file already contains these lines, the directive for workspace assignment is commented out, however. Remove the two trailing comment characters '//' so that this line takes effect. |
137 | | - |
138 | | -## Troubleshooting |
139 | | - |
140 | | -As you run the website locally, you may run into the following error: |
141 | | - |
142 | | -```console |
143 | | -$ hugo server |
144 | | -WARN 2023/06/27 16:59:06 Module "project" is not compatible with this Hugo version; run "hugo mod graph" for more information. |
145 | | -Start building sites … |
146 | | -hugo v0.101.0-466fa43c16709b4483689930a4f9ac8add5c9f66+extended windows/amd64 BuildDate=2022-06-16T07:09:16Z VendorInfo=gohugoio |
147 | | -Error: Error building site: "C:\Users\foo\path\to\docsy-example\content\en\_index.md:5:1": failed to extract shortcode: template for shortcode "blocks/cover" not found |
148 | | -Built in 27 ms |
| 39 | +{{- dict "uuid" "123e4567-e89b-12d3-a456-426614174000" -}} |
149 | 40 | ``` |
150 | 41 |
|
151 | | -This error occurs if you are running an outdated version of Hugo. As of docsy theme version `v0.12.0`, hugo version `0.146.0` or higher is required. |
152 | | -See this [section](https://www.docsy.dev/docs/get-started/docsy-as-module/installation-prerequisites/#install-hugo) of the user guide for instructions on how to install Hugo. |
153 | | - |
154 | | -Or you may be confronted with the following error: |
155 | | - |
156 | | -```console |
157 | | -$ hugo server |
| 42 | +> 🔐 Replace `"123e4567-e89b-12d3-a456-426614174000"` with your actual tenant UUID. |
158 | 43 |
|
159 | | -INFO 2021/01/21 21:07:55 Using config file: |
160 | | -Building sites … INFO 2021/01/21 21:07:55 syncing static files to / |
161 | | -Built in 288 ms |
162 | | -Error: Error building site: TOCSS: failed to transform "scss/main.scss" (text/x-scss): resource "scss/scss/main.scss_9fadf33d895a46083cdd64396b57ef68" not found in file cache |
163 | | -``` |
164 | | - |
165 | | -This error occurs if you have not installed the extended version of Hugo. |
166 | | -See this [section](https://www.docsy.dev/docs/get-started/docsy-as-module/installation-prerequisites/#install-hugo) of the user guide for instructions on how to install Hugo. |
| 44 | +--- |
167 | 45 |
|
168 | | -Or you may encounter the following error: |
| 46 | +### 🔁 Used By |
169 | 47 |
|
170 | | -```console |
171 | | -$ hugo server |
| 48 | +| Theme Shortcode | Purpose | |
| 49 | +| --------------- | -------------------------------------- | |
| 50 | +| `usestatic` | Resolves static asset paths per tenant | |
| 51 | +| `useshortcode` | Renders tenant-specific shortcodes | |
| 52 | +| Others | Custom logic scoped by tenant | |
172 | 53 |
|
173 | | -Error: failed to download modules: binary with name "go" not found |
174 | | -``` |
| 54 | +--- |
175 | 55 |
|
176 | | -This error occurs if the `go` programming language is not available on your system. |
177 | | -See this [section](https://www.docsy.dev/docs/get-started/docsy-as-module/installation-prerequisites/#install-go-language) of the user guide for instructions on how to install `go`. |
| 56 | +### 🚨 Required per Tenant |
178 | 57 |
|
| 58 | +Each tenant site **must define** this file in their local `layouts/partials/` directory. Without it, most tenant-aware theme features will not work. |
179 | 59 |
|
180 | | -[alternate dashboard]: https://app.netlify.com/sites/Layer5 Academy/deploys |
181 | | -[deploys]: https://app.netlify.com/sites/docsy-example/deploys |
182 | | -[Docsy user guide]: https://docsy.dev/docs |
183 | | -[Docsy]: https://github.com/google/docsy |
184 | | -[example.docsy.dev]: https://example.docsy.dev |
185 | | -[Hugo theme module]: https://gohugo.io/hugo-modules/use-modules/#use-a-module-for-a-theme |
186 | | -[Netlify]: https://netlify.com |
187 | | -[Docker Compose documentation]: https://docs.docker.com/compose/gettingstarted/ |
| 60 | +--- |
0 commit comments