Technical reference

arachnopress

Build a zero-JS static article site from hand-written HTML fragments.

DESCRIPTION

arachnopress builds a single-page or multi-page static site from articles/slug/article.html files. Run make build to generate site/, then serve it as static files or open site/index.html through file://.

The build runs in POSIX-like BSD, Linux, and macOS environments. The generated interface uses HTML and CSS only; it requires no client-side scripting or server-side processing.

FEATURES

DOWNLOADS

REQUIREMENTS

BUILD

  1. Work from the project root, which contains Makefile.
  2. Edit PUBLIC_SITE_ENV in the Makefile for the site's identity, appearance, and feed settings. Set its own SITE_URL and SITE_AUTHOR, or disable SITE_FEED. If removing the bundled article, replace its SVG paths or disable the SVG icon and backdrop.
  3. Add or edit articles below articles/.
  4. Run make build. Deploy or inspect site/index.html.

    

For generator release packaging, see MAINTENANCE.

ARTICLE FORMAT

Article structure

Create articles/slug/article.html with this structure:


    

    

Headings and links



    

Dates

Article, h2, and h3 attributes accept auto or a value beginning with a valid YYYY-MM-DD date. Metadata, date sorting, and feed timestamps use the date portion.

Article data-created
Missing, empty, or auto: current UTC build date.
Article data-modified
Missing or empty: resolved creation date. auto: UTC build date.
Heading dates
data-modified takes precedence over data-created. auto uses the UTC build date. An undated h2 inherits the article's resolved modification date; an undated h3 contributes no date. A newer child h3 date updates its parent section's effective date.

GENERATED BLOCKS

Code blocks


    
    

HIGHLIGHTER selects pygments (default), source-highlight, or none:



    

Download blocks


    

    

Image blocks

A file creates a single image; a directory creates a gallery. Both use the same size, alignment, frame, header, and footer options.


    
data-alt / data-caption
Alternative text / visible caption. A gallery caption covers the whole block; its alternative text prefixes each readable filename.
data-open / data-header
As for code blocks: open and headed by default; false collapses the block or removes its header.
data-footer
Shown with a header unless false. Headerless images require explicit true.
data-scale
small (20rem), medium (32rem), large (48rem), or full (default). Caps image/gallery width within available space; frame padding is additional.
data-border
full (default): full-width frame. fit: frame fitted to the image or gallery, with equal-width header and footer. none: no frame, padding, header, or footer; the block retains an opaque article-background surface.
data-align
start, center (default), or end. Aligns the image inside a full frame, or the entire fit/borderless block.

Galleries and viewers

Text beside images

  1. Place the image marker directly inside an article section, before the text that should flow beside it.
  2. Use data-border="fit" or "none" with data-align="start" or "end".

CONFIGURATION

Edit Makefile defaults or override individual values with make build NAME=value.

Site and navigation

SITE_TITLE
Header brand, site page title, and contact-marker prefix. Default: public arachnogoat; release arachnopress.
SITE_MODE
single-page (default): all generated articles in index.html. multi-page: one article per slug.html, plus index.html containing the first listed article. Each page embeds its navigation rules and shares the CSS.
SITE_URL_STYLE
html: page links retain .html. extensionless: multi-page navigation and contact actions use slug and ./; files retain .html. Requires a server rewrite. Single-page output is unaffected. Default: public extensionless; release html.
ARTICLE_ORDER
Initial index order: title (default), created, or modified. Title sorting is case-insensitive; date sorting is newest first. Ties use the slug. Visitors can switch order with the index controls; sections and subsections retain source order.

Unlisted articles

Mark an article data-listed="false". SITE_MODE_UNLISTED=true generates it; false excludes it from generated pages and navigation. Default: public true; release false.

Themes and controls

DEFAULT_THEME
Theme input ID from tools/theme-menu.html, with or without theme-. Default: public everforest-hard-dark; release solarized-dark.
DEFAULT_THEME_MODE
off: no mode control; use the selected theme unchanged. exact, auto, light, or dark: show all four controls and select that initial mode. Default: public exact; release off.
DEFAULT_THEME_SELECTOR
true (default): show the Theme popover in either page mode. false: fix the theme, corners, and opacity to build values. The separate mode control remains governed by DEFAULT_THEME_MODE.
DEFAULT_ROUNDING
square, soft, rounded, or round. Applies across controls, highlights, blocks, images, and popovers. Default: public soft; release square.
DEFAULT_BACKGROUND_OPACITY
Initial SVG backdrop opacity: 0 to 100 percent in steps of 10. Default: 30. Its selector appears above Corners when SITE_BACKGROUND=true.


    

Logo and favicon

SITE_ICON_PATH
Custom SVG path relative to the build tree. Used as the header logo and copied unchanged to favicon.svg. Default: public articles/arachnopress/arachnogoatsundual.svg; release empty.
SITE_ICON_PATH_THEME
true: embed and theme the header SVG; requires SITE_ICON_PATH. false: display it as an external image. The favicon always keeps its original colours. Default: public true; release false.
SITE_ICON
Single Unicode symbol for the header and generated favicon when SITE_ICON_PATH is empty. Default: public U+4DEA; release U+4DD6.
SITE_ICON_COLOUR
Optional #rgb or #rrggbb override for the Unicode icon. Empty (default): header uses the article-title colour; generated favicon uses SVG's default text fill. Unused with a custom SVG.


    

Article backdrop

SITE_BACKGROUND
Enable the fixed article-pane SVG background. Default: public true; release false.
SITE_BACKGROUND_PATH
SVG path relative to the build tree, with the same file and class requirements as a themed logo. Default: articles/arachnopress/arachnogoatsundual.svg.
SITE_BACKGROUND_RANDOM
true (default): browsers supporting CSS random() choose a scale and crop on document load. Unsupported browsers, or false, retain the SVG's base fit.

Highlighting and local CSS

HIGHLIGHTER
pygments (default), source-highlight, or none. See Code blocks under GENERATED BLOCKS.
CODE_FOOTER_LINES
Non-negative source-line threshold for automatic code footers. Default: 23; blocks at or below it omit the footer.

Create custom-styles.css in the project root for site-local styling:

Feed identity

SITE_FEED
Generate feed.atom, discovery metadata, and the header's Atom link. Default: public true; release false.
SITE_URL
Canonical site root, including any deployment subdirectory. Required when the feed is enabled: absolute HTTP(S), with no whitespace, query, or fragment. Trailing slashes are removed. Default: public https://arachnogoat.com; release empty.
SITE_AUTHOR
Atom author name. Default: public musol@arachnogoat.com; release SITE_TITLE.

ATOM FEED

Enable SITE_FEED, set the feed identity, and opt listed articles in with data-feed-sections:

none
No entries; also used when the attribute is missing or empty.
h1
One entry with the article title, link, and available plain-text summary.
h2
One entry per section, titled "Article title - Section heading", with its section link as content.
h3
As h2, adding a linked list of that section's h3 headings.

SERVING

The OpenBSD httpd(8) example supplies the Atom MIME type and rewrite. Replace its host, certificate, and document-root paths; validate before reloading. Keep specific location rules before the final rewrite.



    

Contact messages


  

MAINTENANCE

Generator releases

These targets package the generator; routine site updates use make build.

GENERATOR_LABEL
Generator name displayed in site and Atom metadata. Default: arachnopress; archive names remain arachnopress.
GENERATOR_VERSION
Dot-separated digits used in metadata and archive names. Default: 1.0.70.
make release
Builds only articles/arachnopress with RELEASE_FILES, leaving a working release tree in site/. Creates arachnopress_VERSION.tar.gz at the project root, under a matching top-level directory. Its own download is absent inside that tree/archive.
make full
Requires the matching root release archive. Builds all articles with RELEASE_FILES and installs the archive into the staged generator article. Leaves that complete tree in site/.
  1. Update GENERATOR_VERSION and run make release.
  2. Copy the root archive into articles/arachnopress/, then run make build to publish it with other articles. Alternatively, make full integrates it into staged output.

Failures and cleanup


    
Missing release archive
Run make release with the same version before make full, from the same source root.
No listed articles found
Provide at least one article with data-listed="true" or no data-listed attribute.
Invalid theme, SVG, heading, marker, or path
Check the named input against CONFIGURATION, ARTICLE FORMAT, or GENERATED BLOCKS. Diagnostics identify the rejected value or source.

Build environment

PATH
Locates build utilities, highlighters, and checksum programs.
TMPDIR
Parent of private static-site-build.* rendering directories; default /tmp. Target staging uses .site-build.* beneath the source root.
LC_ALL / SOURCE_HIGHLIGHT_DATADIR
The scripts set LC_ALL=C; the generator unsets SOURCE_HIGHLIGHT_DATADIR.

FILES

Maintained inputs

Makefile
Targets, profile defaults, and inclusion lists.
articles/slug/article.html / articles/slug/*
Article fragments and their code, image, gallery, and download assets.
styles.css / custom-styles.css
Shared layout, palettes, and syntax roles / optional site-local overrides.
tools/build.sh / tools/build-profile.sh
Article renderer / target staging and packaging.
tools/theme-menu.html
Theme controls and light/dark pair mappings.
tools/html-fragment.outlang
Source-highlight HTML-fragment output definition.
tools/license.txt / THIRD_PARTY_NOTICES.txt / licenses/
Static project license / palette sources and retained third-party notices.
README.arachnopress
Plain-text edition of this reference.

Generated output

site/index.html / site/slug.html
Entry page / additional multi-page articles, with embedded navigation rules.
site/articles/
Copied article directories, including source HTML and published assets.
site/styles.css / site/custom-styles.css
Copied shared stylesheet / optional custom stylesheet.
site/theme-auto.css
Derived theme-mode rules; present when the mode control is enabled and a selectable theme has a light/dark mapping.
site/favicon.svg / site/feed.atom
Generated or copied favicon / optional Atom feed.
site/THIRD_PARTY_NOTICES.txt / site/licenses/
Copied notices required by the published site.

  

LICENSE