These are the main sources of the website for Apache Beam, hosted at https://beam.apache.org/.
The Apache Beam website is built using Hugo, a fast and flexible static site generator, and uses the Docsy theme, which is designed specifically for technical documentation and open-source projects.
For additional layout, styling, and responsive design capabilities, the site integrates Twitter Bootstrap. This allows the documentation to maintain a consistent appearance across different devices and screen sizes.
The website content is primarily written in Markdown and organized according to Hugo’s content structure, making it easy for contributors to add or update documentation.
Documentation generated directly from source code—such as Javadoc for Java APIs and Pydoc for Python APIs—is stored and maintained separately in the beam-site repository. This separation ensures that API reference documentation remains versioned and consistent with official releases.
Website development requires Docker installed if you wish to preview changes and run website tests.
The Docsy theme required for the site to work properly is included as a git submodule. This means that after you already cloned the repository, you need to update submodules at <ROOT_DIRECTORY>.
$ git submodule update --init --recursive
The following command is used to build and serve the website locally. Note: you should run the command at <ROOT_DIRECTORY>.
$ ./gradlew :website:serveWebsite
Any changes made locally will trigger a rebuild of the website.
Websites tests may be run using this command:
$ ./gradlew :website:testWebsite
For a more detailed description, please refer to the contribution guide.
After a PR is merged, a background Jenkins job will automatically generate and push website content to the asf-site branch. This content is later picked up and pushed to https://beam.apache.org/.
If you'd like to contribute to the Apache Beam website, read our contribution guide where you can find detailed instructions on how to work with the website.
If you're developing the site, you should know a little bit about Hugo and Docsy. The following external resources will help you get up and running:
To fix the Docker Error 255 during the Website launch on Apple Silicon:
The Hugo dev server waits for changes in site content, static files, configuration, and other resources. On change, the server rebuilds and reloads the site in your browser. If you‘re making changes to static files, and those changes are detected by the server but don’t appear in the browser, you may have a caching issue.
You can tell that the server has detected a change by looking at the output. For example, if you make a change to website/www/site/static/js/section-nav.js, you should see something like:
Change of Static files detected, rebuilding site. 2021-07-16 15:25:29.730 +0000 Syncing js/section-nav.js to /
If the change does not appear in the browser, even after a hard refresh, try disabling the cache. For example, to disable the cache in Chrome, open dev tools, select the Network tab, and check the box labeled “Disable cache”.