Skip to content

feelpp/antora-ui

Repository files navigation

Feel++ Antora UI

Generate Antora UI with Gulp

This project produces a UI bundle that can be used by Antora to generate a documentation site. You can see a preview of the UI at feelpp.github.io/antora-ui/.

Test gmsh highlight support

Usage

If you want to simply use the UI for your Antora-generated site, add the following UI configuration to your playbook:

ui:
  bundle:
    url: https://github.com/feelpp/antora-ui/releases/download/v0.7/ui-bundle.zip
Note
Update the version in the download URL. Here, we are using version v0.7.

Development Quickstart

This section offers a basic tutorial to teach you how to set up the default UI project, preview it locally, and bundle it for use with Antora.

Prerequisites

To preview and bundle the default UI, you need the following software on your computer:

  • git (command: git)

  • Node.js (commands: node and npm)

git

First, make sure you have git installed.

$ git --version

If not, download and install the git package for your system.

Node.js

Next, make sure that you have Node.js installed (which also provides npm).

$ node --version

If this command fails with an error, you don’t have Node.js installed. If the command doesn’t report an LTS version of Node.js (e.g., v10.15.3), it means you don’t have a suitable version of Node.js installed. In this guide, we’ll be installing Node.js 10.

While you can install Node.js from the official packages, we strongly recommend that you use nvm (Node Version Manager) to manage your Node.js installation(s). Follow the nvm installation instructions to set up nvm on your machine.

Once you’ve installed nvm, open a new terminal and install Node.js 16 using the following command:

$ nvm install 16

You can switch to this version of Node.js at any time using the following command:

$ nvm use 16

To make Node.js 16 the default in new terminals, type:

$ nvm alias default 16

Clone and Initialize the UI Project

Clone the default UI project using git:

$ git clone [email protected]:feelpp/antora-ui.git &&
  cd "`basename $_`"

The example above clones the project and then switches to the project folder on your filesystem. Stay in this project folder when executing all subsequent commands.

Use npm to install the project’s dependencies inside the project. In your terminal, execute the following command:

$ npm install

This command installs the dependencies listed in package.json into the node_modules/ folder inside the project. This folder does not get included in the UI bundle and should not be committed to the source control repository.

Preview the UI

The project is configured to preview offline. The files in the preview-src/ folder provide the sample content that allow you to see the UI in action. In this folder, you’ll primarily find pages written in AsciiDoc. These pages provide a representative sample and kitchen sink of content from the real site.

To build the UI and preview it in a local web server, run the start command:

$ npm start

You’ll see a URL listed in the output of this command:

[12:00:00] Starting server...
[12:00:00] Server started http://localhost:5252
[12:00:00] Running server

Navigate to this URL to preview the site locally.

While this command is running, any changes you make to the source files will be instantly reflected in the browser.

Press Ctrl+C to stop the preview server and end the continuous build.

Package for Use with Antora

If you need to package the UI, so you can use it to generate the documentation site locally, run the following command:

$ npm run build

If any errors are reported by lint, you’ll need to fix them.

When the command completes successfully, the UI bundle will be available at build/ui-bundle.zip. You can point Antora at this bundle using the --ui-bundle-url command-line option.

Source Maps

The build consolidates all the CSS and client-side JavaScript into combined files, site.css and site.js, respectively, in order to reduce the size of the bundle. Source maps correlate these combined files with their original sources.

This “source mapping” is accomplished by generating additional map files that make this association. These map files sit adjacent to the combined files in the build folder. The mapping they provide allows the debugger to present the original source rather than the obfuscated file, an essential tool for debugging.

In preview mode, source maps are enabled automatically, so there’s nothing you have to do to make use of them. If you need to include source maps in the bundle, you can do so by setting the SOURCEMAPS environment variable to true when you run the bundle command:

$ SOURCEMAPS=true npm run build

In this case, the bundle will include the source maps, which can be used for debugging your production site.

Search Functionality

This UI supports two search systems and automatically selects the appropriate one:

Algolia DocSearch (External Service)

For sites with Algolia DocSearch configured (like docs.feelpp.org), the UI will automatically use Algolia DocSearch when these site attributes are set in your Antora playbook:

asciidoc:
  attributes:
    docsearch-api-key: your-algolia-api-key
    docsearch-app-id: your-algolia-app-id
    docsearch-index-name: your-algolia-index-name

Lunr.js Client-Side Search (Default)

For sites without Algolia configuration, the UI falls back to client-side search using Lunr.js, which provides fast search without requiring external services.

Available Build Scripts

The project includes several build scripts for different purposes:

Script Purpose

npm run build:ui

Build only the UI bundle (same as npm run build)

npm run build:site

Generate the Antora site using the current UI bundle

npm run build:search

Generate the search index from the built site

npm run build:full

Complete build: UI → Site → Search index (recommended for production)

npm run generate-search-index

Generate search index (alias for build:search)

Full Website Build

To build the complete website with search functionality:

$ npm run build:full

This command will:

  1. Build the UI bundle (includes both Algolia DocSearch and Lunr.js support)

  2. Generate the Antora documentation site

  3. Create the search index for client-side search (only used if Algolia is not configured)

The resulting site in build/site/ will have fully functional search that automatically selects the appropriate search system.

Search Index Generation

The search functionality requires a search index to be generated after the site is built. This index is created by crawling the generated HTML files and extracting content.

You can customize the search behavior by modifying:

  • src/js/07-search.js - Search functionality and UI

  • src/css/lunr-search.css - Search results styling

  • tasks/generate-search-index.js - Index generation logic

Manual Search Index Generation

You can also generate the search index manually:

$ node tasks/generate-search-index.js [site-directory] [output-file]

For example:

$ node tasks/generate-search-index.js ./build/site ./build/site/search-index.json

CI/CD Integration

For automated builds, use the full build command:

# Example GitHub Actions step
- name: Build website with search
  run: npm run build:full