Skip to content

Commit 6b72c18

Browse files
feat: add Holodeck blogs page with card layout and update README with Zensical
1 parent b3e01b1 commit 6b72c18

4 files changed

Lines changed: 264 additions & 3 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[![Links](https://github.com/vmware/Holodeck/actions/workflows/links.yml/badge.svg)](https://github.com/vmware/Holodeck/actions/workflows/links.yml)
55
[![GitHub Pages](https://img.shields.io/badge/docs-live-blue)](https://vmware.github.io/Holodeck/)
66

7-
This repository contains the source for the [Holodeck documentation site](https://vmware.github.io/Holodeck/), built with [MkDocs Material](https://squidfunk.github.io/mkdocs-material/).
7+
This repository contains the source for the [Holodeck documentation site](https://vmware.github.io/Holodeck/), built with [Zensical](https://zensical.org/).
88

99
Holodeck is a toolkit for deploying nested VMware Cloud Foundation (VCF) environments on a single ESX host or vSphere cluster. It automates the provisioning of fully self-contained VCF labs for testing, training, and capability exploration.
1010

@@ -42,7 +42,7 @@ pip install -r requirements.txt
4242
### Preview
4343

4444
```bash
45-
mkdocs serve
45+
zensical serve
4646
```
4747

4848
The site will be available at `http://127.0.0.1:8000`. Changes to Markdown files are reflected automatically.
@@ -51,7 +51,7 @@ The site will be available at `http://127.0.0.1:8000`. Changes to Markdown files
5151

5252
1. Fork the repository and create a feature branch.
5353
2. Make your changes in the `docs/` directory.
54-
3. Preview locally with `mkdocs serve` to verify formatting.
54+
3. Preview locally with `zensical serve` to verify formatting.
5555
4. Submit a pull request against the `main` branch.
5656

5757
For bug reports and feature requests related to Holodeck itself, please use [GitHub Issues](https://github.com/vmware/Holodeck/issues).

docs/blogs.md

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Blogs
2+
3+
Welcome to the Holodeck blog directory! Here you can find a curated list of articles, tutorials, and community posts related to Holodeck.
4+
5+
## Simplified Identity Management with Authentik for Holodeck 9.1 {: .toc-hidden }
6+
<div class="blog-card-container">
7+
<div class="blog-card">
8+
<div class="blog-card-image">
9+
<img src="https://blogs.vmware.com/cloud-foundation/wp-content/uploads/sites/75/2026/07/Screenshot-165.png" alt="Identity Management with Authentik for Holodeck 9.1">
10+
</div>
11+
<div class="blog-card-content">
12+
<div class="blog-card-date">July 20, 2026</div>
13+
<div class="blog-card-title">Simplified Identity Management with Authentik for Holodeck 9.1</div>
14+
<div class="blog-card-desc">Holodeck 9.1 ships Authentik as a first-class service on the Holorouter. Two commands are all it takes to stand up a fully federated identity layer for your VMware Cloud Foundation (VCF) lab.</div>
15+
<a href="https://blogs.vmware.com/cloud-foundation/2026/07/20/identity-mgmt-for-holodeck/" target="_blank" class="blog-card-link-text">Read Article</a>
16+
</div>
17+
</div>
18+
</div>
19+
20+
## Announcing the General Availability of Holodeck 9.1 {: .toc-hidden }
21+
<div class="blog-card-container">
22+
<div class="blog-card">
23+
<div class="blog-card-image">
24+
<img src="https://blogs.vmware.com/cloud-foundation/wp-content/uploads/sites/75/2025/10/holodeck9.0.1_98a0a8.png" alt="Holodeck 9.1 Release">
25+
</div>
26+
<div class="blog-card-content">
27+
<div class="blog-card-date">July 1, 2026</div>
28+
<div class="blog-card-title">Announcing the General Availability of Holodeck 9.1</div>
29+
<div class="blog-card-desc">We’re thrilled to announce the General Availability of Holodeck 9.1, a major release that brings significant new capabilities to your nested VMware Cloud Foundation (VCF) toolkit, including support for VCF 9.1!</div>
30+
<a href="https://blogs.vmware.com/cloud-foundation/2026/07/01/announcing-the-general-availability-of-holodeck-9-1/" target="_blank" class="blog-card-link-text">Read Article</a>
31+
</div>
32+
</div>
33+
</div>
34+
35+
## Simplify Multisite PoCs Using Holodeck {: .toc-hidden }
36+
<div class="blog-card-container">
37+
<div class="blog-card">
38+
<div class="blog-card-image">
39+
<img src="https://blogs.vmware.com/cloud-foundation/wp-content/uploads/sites/75/2026/03/Screenshot-2026-03-10-115010.png" alt="Multisite PoCs using Holodeck">
40+
</div>
41+
<div class="blog-card-content">
42+
<div class="blog-card-date">March 10, 2026</div>
43+
<div class="blog-card-title">Simplify Multisite PoCs Using Holodeck</div>
44+
<div class="blog-card-desc">By leveraging nested virtualization, Holodeck enables the deployment of a fully functional, dual-site VCF environment on a comparatively smaller hardware footprint. Master complex multi-instance operations!</div>
45+
<a href="https://blogs.vmware.com/cloud-foundation/2026/03/10/holodeck-multisite/" target="_blank" class="blog-card-link-text">Read Article</a>
46+
</div>
47+
</div>
48+
</div>
49+
50+
## Announcing the General Availability of Holodeck 9.0.2 {: .toc-hidden }
51+
<div class="blog-card-container">
52+
<div class="blog-card">
53+
<div class="blog-card-image">
54+
<img src="https://blogs.vmware.com/cloud-foundation/wp-content/uploads/sites/75/2025/10/holodeck9.0.1_98a0a8.png" alt="Holodeck 9.0.2 Release">
55+
</div>
56+
<div class="blog-card-content">
57+
<div class="blog-card-date">March 5, 2026</div>
58+
<div class="blog-card-title">Announcing the General Availability of Holodeck 9.0.2</div>
59+
<div class="blog-card-desc">The latest maintenance release that builds on the robust foundation established by Holodeck 9.0 and 9.0.1. Delivering enhanced capabilities, improved reliability, and expanded Day 2 operations.</div>
60+
<a href="https://blogs.vmware.com/cloud-foundation/2026/03/05/announcing-the-general-availability-of-holodeck-9-0-2/" target="_blank" class="blog-card-link-text">Read Article</a>
61+
</div>
62+
</div>
63+
</div>
64+
65+
## Scaling VMware Cloud Foundation 9.0 Lab Environments using Holodeck 9.0 {: .toc-hidden }
66+
<div class="blog-card-container">
67+
<div class="blog-card">
68+
<div class="blog-card-image">
69+
<img src="https://blogs.vmware.com/cloud-foundation/wp-content/uploads/sites/75/2025/11/holodeckBanner.png" alt="Add Clusters and Hosts in VCF">
70+
</div>
71+
<div class="blog-card-content">
72+
<div class="blog-card-date">November 9, 2025</div>
73+
<div class="blog-card-title">Scaling VMware Cloud Foundation 9.0 Lab Environments using Holodeck 9.0</div>
74+
<div class="blog-card-desc">Learn how to easily scale your existing nested lab environment. Walk through adding additional ESXi hosts or full clusters to your Holodeck 9.0 instance using the automated cmdlets.</div>
75+
<a href="https://blogs.vmware.com/cloud-foundation/2025/11/09/add-clusters-and-hosts-in-vcf-using-holodeck/" target="_blank" class="blog-card-link-text">Read Article</a>
76+
</div>
77+
</div>
78+
</div>
79+
80+
## Announcing the General Availability of Holodeck 9.0.1.0 {: .toc-hidden }
81+
<div class="blog-card-container">
82+
<div class="blog-card">
83+
<div class="blog-card-image">
84+
<img src="https://blogs.vmware.com/cloud-foundation/wp-content/uploads/sites/75/2025/10/holodeck9.0.1_98a0a8.png" alt="Holodeck 9.0.1.0 Release">
85+
</div>
86+
<div class="blog-card-content">
87+
<div class="blog-card-date">October 21, 2025</div>
88+
<div class="blog-card-title">Announcing the General Availability of Holodeck 9.0.1.0</div>
89+
<div class="blog-card-desc">Building upon the success of Holodeck 9.0 to further empower your teams in deploying standardized and automated nested VMware Cloud Foundation (VCF) environments.</div>
90+
<a href="https://blogs.vmware.com/cloud-foundation/2025/10/21/announcing-the-general-availability-of-holodeck-9-0-1-0/" target="_blank" class="blog-card-link-text">Read Article</a>
91+
</div>
92+
</div>
93+
</div>
94+
95+
## Announcing the General Availability of Holodeck 9.0 {: .toc-hidden }
96+
<div class="blog-card-container">
97+
<div class="blog-card">
98+
<div class="blog-card-image">
99+
<img src="https://blogs.vmware.com/cloud-foundation/wp-content/uploads/sites/75/2025/06/HDEck.png" alt="Holodeck 9.0 Release">
100+
</div>
101+
<div class="blog-card-content">
102+
<div class="blog-card-date">June 30, 2025</div>
103+
<div class="blog-card-title">Announcing the General Availability of Holodeck 9.0</div>
104+
<div class="blog-card-desc">Your ultimate toolkit for deploying standardized and automated nested VMware Cloud Foundation (VCF) environments. Virtualize the entire VCF management and workload domains on a single host.</div>
105+
<a href="https://blogs.vmware.com/cloud-foundation/2025/06/30/announcing-the-general-availability-of-holodeck-9-0/" target="_blank" class="blog-card-link-text">Read Article</a>
106+
</div>
107+
</div>
108+
</div>

docs/stylesheets/extra.css

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,158 @@
8282
color: #e2e8f0;
8383
}
8484

85+
/* Blog Cards */
86+
.toc-hidden {
87+
position: absolute;
88+
width: 1px;
89+
height: 1px;
90+
padding: 0;
91+
margin: -1px;
92+
overflow: hidden;
93+
clip: rect(0, 0, 0, 0);
94+
border: 0;
95+
}
96+
97+
.blog-card-container {
98+
margin-bottom: 1.5rem;
99+
}
100+
101+
.blog-card {
102+
display: flex;
103+
flex-direction: row; /* Always horizontal */
104+
border: 1px solid var(--vmware-gray-200);
105+
border-radius: 8px;
106+
background-color: var(--vmware-white);
107+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04), 0 4px 6px rgba(0, 0, 0, 0.02);
108+
transition: transform 0.2s ease, box-shadow 0.2s ease;
109+
overflow: hidden;
110+
position: relative; /* Ensure the stretched link stays inside the card */
111+
}
112+
113+
/* Make the entire card clickable by stretching the link */
114+
.blog-card-link-text::before {
115+
content: "";
116+
position: absolute;
117+
top: 0;
118+
right: 0;
119+
bottom: 0;
120+
left: 0;
121+
z-index: 10; /* Cover the whole card and any glightbox links inside */
122+
cursor: pointer;
123+
}
124+
125+
/* Remove media query for flex-direction to ensure it stays horizontal on all screens */
126+
/* @media (min-width: 768px) {
127+
.blog-card {
128+
flex-direction: row;
129+
}
130+
} */
131+
132+
.blog-card:hover {
133+
transform: translateY(-2px);
134+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08), 0 8px 12px rgba(0, 0, 0, 0.04);
135+
}
136+
137+
[data-md-color-scheme="slate"] .blog-card {
138+
background-color: var(--vmware-gray-850);
139+
border-color: var(--vmware-gray-700);
140+
}
141+
142+
[data-md-color-scheme="slate"] .blog-card:hover {
143+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
144+
}
145+
146+
.blog-card-image {
147+
width: 350px; /* Made slightly wider to better balance the cards */
148+
max-width: 42%;
149+
background-color: var(--vmware-dark-blue); /* Deep blue to blend with slide backgrounds */
150+
flex-shrink: 0;
151+
display: flex;
152+
align-items: center;
153+
justify-content: center;
154+
position: relative;
155+
overflow: hidden;
156+
}
157+
158+
.blog-card-image img {
159+
width: 100%;
160+
height: 100%;
161+
object-fit: contain; /* Absolutely no cropping */
162+
object-position: center;
163+
display: block;
164+
}
165+
166+
.blog-card-content {
167+
padding: 1.25rem 1.5rem; /* Restored some breathing room */
168+
display: flex;
169+
flex-direction: column;
170+
justify-content: center;
171+
flex: 1;
172+
}
173+
174+
.blog-card-date {
175+
font-size: 0.7rem;
176+
color: var(--vmware-cool-gray-7);
177+
margin-bottom: 0.4rem;
178+
text-transform: uppercase;
179+
letter-spacing: 0.05em;
180+
font-weight: 600;
181+
}
182+
183+
[data-md-color-scheme="slate"] .blog-card-date {
184+
color: var(--vmware-gray-400);
185+
}
186+
187+
.md-typeset h3.blog-card-title {
188+
color: var(--vmware-blue);
189+
font-size: 1.0rem;
190+
font-weight: 700 !important;
191+
margin-top: 0 !important;
192+
margin-bottom: 0.25rem !important;
193+
line-height: 1.3;
194+
}
195+
196+
[data-md-color-scheme="slate"] .md-typeset h3.blog-card-title {
197+
color: var(--vmware-blue-light);
198+
}
199+
200+
.blog-card-desc {
201+
color: var(--vmware-dark-gray);
202+
margin: 0 !important;
203+
font-size: 0.75rem !important; /* Reduced from 0.8rem */
204+
line-height: 1.4; /* Reduced from 1.5 */
205+
flex: 1;
206+
}
207+
208+
[data-md-color-scheme="slate"] .blog-card-desc {
209+
color: var(--vmware-gray-300);
210+
}
211+
212+
.blog-card-link-text {
213+
margin-top: 0.25rem; /* Reduced from 0.5rem */
214+
font-weight: 600;
215+
font-size: 0.8rem; /* Reduced from 0.85rem */
216+
color: var(--vmware-blue) !important;
217+
display: inline-flex;
218+
align-items: center;
219+
gap: 0.25rem;
220+
text-decoration: none;
221+
width: fit-content;
222+
}
223+
224+
[data-md-color-scheme="slate"] .blog-card-link-text {
225+
color: var(--vmware-blue-light);
226+
}
227+
228+
.blog-card-link-text::after {
229+
content: "→";
230+
transition: transform 0.2s;
231+
}
232+
233+
.blog-card:hover .blog-card-link-text::after {
234+
transform: translateX(4px);
235+
}
236+
85237
/* Contributing Section - Custom Right Sidebar */
86238
.md-sidebar--contributing {
87239
position: sticky;

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ nav:
5252
- Offline Depot: offline_depot.md
5353
- Support: support_community.md
5454
- FAQ: faq.md
55+
- Blogs: blogs.md
5556

5657
extra:
5758
version:

0 commit comments

Comments
 (0)