Summary
I'm opening this issue to propose migrating zarr.dev from Jekyll + Minimal Mistakes to VitePress, following the approach successfully used by zarrs.github.io (live at zarrs.dev).
Motivation
The current Jekyll setup has several pain points:
Why VitePress
- Node.js-only — aligns with the JS tooling already used across Zarr repos like conventions and the zarrs website.
- Fast — near-instant hot module replacement in dev, optimized static output in production.
- Vue components — easy to add interactive elements (tabbed examples, live demos) when needed.
- Proven in the ecosystem — zarrs.dev and geozarr-site already use VitePress successfully.
- Minimal dependencies — zarrs.github.io runs on just
vitepress + one syntax highlighting package.
- Built-in features — search, dark mode, sidebar navigation, and responsive design come out of the box with the default theme.
Scope
Content pages to migrate:
| Page |
Source |
Home (/) |
index.md |
Adopters (/adopters) |
adopters/index.md + adopters/logos/ |
Community (/community) |
community/index.md |
Conventions (/conventions) |
conventions/index.md |
Datasets (/datasets) |
datasets/index.md |
Implementations (/implementations) |
implementations/index.md |
Office Hours (/office-hours) |
office_hours/index.md |
Slides (/slides) |
slides.md + slides/ directory (Reveal.js assets) |
| Blog posts |
_posts/ (2 posts) |
Additional migration tasks:
- Navigation — Convert
_data/navigation.yml to VitePress config.mts (nav + sidebar)
- Redirects — Preserve
numcodecs_redirects/ (23 redirect pages) using static meta redirects
- Static assets — Move
images/, favicons, and CNAME to public/
- GitHub Pages deployment — Replace Jekyll build with VitePress build in GitHub Actions (reference: zarrs deploy workflow)
- Social links — Map footer links (Bluesky, Mastodon, GitHub, Zulip) to VitePress social links config
Reference implementation
zarrs.github.io (source, live) demonstrates the target setup:
.vitepress/
├── config.mts # Site config, nav, sidebar, analytics
└── theme/
├── index.js # Theme entry
├── Layout.vue # Custom layout (optional)
├── custom.css # Brand colors and overrides
└── components/ # Custom Vue components (optional)
public/ # Static assets (logos, CNAME, etc.)
index.md # Home page (VitePress hero layout)
package.json # Just vitepress as devDependency
.github/workflows/deploy.yml # Node 20 + npm ci + vitepress build
Files to remove after migration
_config.yml, Gemfile, Gemfile.lock
Dockerfile, pixi.toml, pixi.lock, .readthedocs.yml
_data/, _includes/, _posts/
vendor/, .pixi/
Open questions
- Should we take this opportunity to redesign the homepage with a VitePress hero layout (like zarrs.dev), or do a 1:1 content migration first?
- Should the Reveal.js slide decks be kept as-is in
public/slides/, or converted/dropped?
- Do we want to continue using Google analytics?
Summary
I'm opening this issue to propose migrating zarr.dev from Jekyll + Minimal Mistakes to VitePress, following the approach successfully used by zarrs.github.io (live at zarrs.dev).
Motivation
The current Jekyll setup has several pain points:
Why VitePress
vitepress+ one syntax highlighting package.Scope
Content pages to migrate:
/)index.md/adopters)adopters/index.md+adopters/logos//community)community/index.md/conventions)conventions/index.md/datasets)datasets/index.md/implementations)implementations/index.md/office-hours)office_hours/index.md/slides)slides.md+slides/directory (Reveal.js assets)_posts/(2 posts)Additional migration tasks:
_data/navigation.ymlto VitePressconfig.mts(nav + sidebar)numcodecs_redirects/(23 redirect pages) using static meta redirectsimages/, favicons, andCNAMEtopublic/Reference implementation
zarrs.github.io (source, live) demonstrates the target setup:
Files to remove after migration
_config.yml,Gemfile,Gemfile.lockDockerfile,pixi.toml,pixi.lock,.readthedocs.yml_data/,_includes/,_posts/vendor/,.pixi/Open questions
public/slides/, or converted/dropped?