The OpenVox website — a static marketing site built with
Jekyll for page templates/content and Vite for JS/CSS bundling,
on top of the @openvoxproject/voxblocks web
component library.
Prerequisites: Node.js 26+ and Ruby 3.4+ with Bundler.
npm install
bundle install
npm run devnpm run dev runs Vite in watch mode and jekyll serve --livereload concurrently; the site is served at
http://localhost:4000.
If you don't have Node or Ruby installed, you can still build and view the site with only Docker (no livereload — rebuild the image to see changes) using the commands under Deployment.
Vite must run before Jekyll — it bundles src/ into assets/ and writes _data/manifest.json, which the
default layout uses to look up hashed asset filenames:
npm run build
bundle exec jekyll buildThe finished site lands in _site/.
index.html,products.html, etc. — Jekyll pages using thedefaultlayout_products/— one Markdown file per product, rendered as cards and pages from its front matter plus its Markdown body (the body becomes the card text and the product page's hero description). To add a product, copy an entire existing file (e.g._products/openvox.md) to a new_products/*.mdand edit both the front matter and the body; no template changes needed.src/— JS and CSS bundled by Vite (main.jsimports voxblocks components as a side effect)_layouts/,_includes/— Jekyll templates
Pushes to main deploy to GitHub Pages via deploy.yml. A multi-stage
Dockerfile (Node → Jekyll → nginx, serving on port 8080) is also built and published to
ghcr.io by docker-publish.yml on pushes to main and v*.*.* tags:
docker build -t openvox-site .
docker run -p 8080:8080 openvox-site