The public website for AtomVM, published at https://atomvm.org via GitHub Pages.
To build the site locally you will need:
Change your working directory to the directory containing this README:
cd <path-to-this-directory>
Create a Gemfile (intentionally not committed) with the following content:
source "https://rubygems.org"
gem "github-pages", group: :jekyll_plugins
gem "webrick", "~> 1.7" # Required for Ruby 3.0+Create a _config_dev.yml file for local development:
host: "127.0.0.1"
port: 4000
url: "http://localhost:4000"[Optional] Install gems locally under vendor/bundle:
bundle config set --local path 'vendor/bundle'
Install all needed gems (may take some time):
bundle install
Serve the site locally on http://127.0.0.1:4000:
bundle exec jekyll serve --host 127.0.0.1 --config _config.yml,_config_dev.yml
Or build to _site/:
bundle exec jekyll build [-d <path-to-output>] [--watch]
The site uses a small custom Jekyll theme that lives directly in this repository (no remote_theme:, no separate theme repo). The relevant directories are:
_config.yml Jekyll config (sass + defaults).
_data/home.yml Navbar, hero, feature cards, news config, footer columns.
_includes/ Reusable HTML fragments (head, navbar, drawer, footer, cards).
_layouts/ Page templates: default, home, news, post, page.
_sass/ SCSS partials (tokens, themes, layout, components).
assets/css/ Single SCSS entry (main.scss) compiled by Jekyll.
assets/js/ Single ~25 LOC theme.js (light/dark toggle + drawer).
_posts/ News posts (YYYY-MM-DD-Title.md).
Design tokens (colors, typography, radius, stroke) live as CSS custom properties in _sass/_tokens.scss. Light and dark themes are defined as variable overrides in _sass/_themes.scss; the active theme is controlled by a data-theme attribute on <html> that respects prefers-color-scheme and persists user choice in localStorage. The footer band is locked to light colours regardless of theme.
Fonts are loaded once from Google Fonts (Manrope variable + IBM Plex Mono — both OFL-licensed).
The Extensions, Sample Code, Tutorials and 404 pages use the same page layout as a thin variant of the news-post layout — they were not designed separately; treat them as derived templates.
Create a file in _posts/ named YYYY-MM-DD-Your-Title.md with this front matter:
---
layout: post
title: Your Headline
author: Optional Author Name
excerpt_separator: <!--more-->
---
Short intro shown on the /news/ list and in the home page news teaser.
<!--more-->
Full article body shown only on the post's own page.The <!--more--> marker separates the news-index excerpt from the full article. If you omit it, the whole body is used as the excerpt.
_data/home.ymlis the single source of truth for navbar entries, hero text/buttons, feature cards, news teaser config, and footer content. Editing copy on the home page does not require touchingindex.md.- Adding a new top-level page is two steps: create
mypage.mdwithtitle:+permalink:in front matter (nolayout:needed — thedefaultsrule applieslayout: page), and link to it from_data/home.ymlif it should appear in the navbar or footer. bundle exec jekyll buildis the only build step. No Node.js, no npm, no Tailwind.