HTMLTool Site

theme-tapestry-dev — HTML Tool Template

By anirbanbasu

Tapestry is a theme for the Zola static site generator. This repository is its development monorepo, which also builds the demo site and, on tagging, syncs themes/tapestry/ to a standalone theme repository.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-04View source

What stands out

A quick read of the recorded project description.

01

Handles both demo site build/deployment and theme source development, with theme code in themes/tapestry/

02

On tagging, a workflow syncs themes/tapestry/ to the standalone theme repository for submodule installation

03

Includes a Playwright + axe-core suite for accessibility, visual regression, and keyboard navigation testing

04

specs/ freezes contracts such as design tokens, brand logo, showcase style switcher, and third-party asset licenses

05

The theme targets Tera v2 and is not backward compatible with upstream terminus, which is kept only as a read-only reference

06

Fonts are self-hosted and not loaded from a CDN at runtime

Template Details

Tapestry is a theme for the Zola static site generator. This repository is its development monorepo and serves two purposes: first, it builds and deploys the live demo site directly using the in-repo content/ fixtures and config.toml; second, it is the sole development source for the theme itself, with theme code located in themes/tapestry/. On each tagged release, a workflow syncs that directory to the standalone anirbanbasu/tapestry repository so end users can install it as a Git submodule. Day-to-day theme development happens in themes/tapestry/** in this repository; the standalone theme repository should not be edited directly.

The repository also contains themes/terminus/ (Tapestry's upstream theme, kept as a read-only reference and not modified in place), content/ (content fixtures shared by tests and the demo), specs/ (frozen contracts: the terminus feature contract, design tokens for each style group, brand logo specifications, the showcase style switcher specification, the visual and accessibility test suite specification, and third-party asset licenses), prototypes/ (early design explorations not wired into the live theme), tests/visual-a11y/ (a Playwright + axe-core suite for accessibility, visual regression, and keyboard navigation testing), and .github/workflows/ (building and deploying the demo site, tagging and releasing the theme, running the visual and accessibility suites on relevant PRs, and updating visual regression baselines on demand).

The theme is derived from terminus and is not backward compatible with it: it targets Tera v2, which has no macros or shortcodes. Fonts are self-hosted WOFF2 files, sourced upstream from Google Fonts, and are not loaded from a CDN at runtime. Bundled assets such as icons include Font Awesome Free and an Openclipart paw print icon; full attribution and license terms are recorded in specs/third-party-licenses.md. The in-repo CLAUDE.md and CONSTITUTION.md are operational and non-negotiable design references; the latter sets standards including WCAG 2.1 AA, a no-JS policy with three exceptions, fixed terminus lineage, self-hosted fonts, a 12-column grid, and navigation collapse.

Usage constraints: this repository is a development repository, not a directly installable theme package; to install the theme, refer to themes/tapestry/README.md and the standalone theme repository. Before local development, confirm that the Zola version matches the pinned version in CONSTITUTION.md §3. PRs that modify themes/tapestry/**, content/**, tests/**, or config.toml must first run the automated test suite, and a manual keyboard operation check is still required before merging.

HTMLUtility site

Is it right for your project?

Use Cases

  • Developing or maintaining the Tapestry theme itself by modifying Tera templates, Sass, and static assets in themes/tapestry/**
  • Building and deploying the live Tapestry demo site using the in-repo content/ and config.toml
  • Syncing the theme directory to the standalone repository on tagged releases so others can install it as a Git submodule
  • Running accessibility, visual regression, and keyboard navigation tests on PRs that touch the theme, content, or configuration
  • Consulting the frozen design tokens and third-party asset licenses in specs/ to verify that changes comply with established contracts

Suitable For

  • Developers who need to choose or customize a theme for a Zola site and are willing to install it as a submodule
  • Contributors working on the Tapestry theme who need to submit changes according to the standards in CONSTITUTION.md
  • Maintainers of static site projects who need a reference for organizing accessibility and visual regression tests

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Before local development, confirm that the Zola version matches the pinned version in CONSTITUTION.md §3 before relying on any Zola/Tera feature

  2. 2

    Common commands are zola build, zola serve, and zola check; the justfile wraps workflows such as serve, installing pre-commit hooks, updating hook versions, running visual and accessibility tests, and updating visual baselines

  3. 3

    After cloning, run just install-pre-commit-hooks to install the repository's pre-commit hooks

  4. 4

    PRs that modify themes/tapestry/**, content/**, tests/**, or config.toml must first run the automated test suite, and a manual keyboard operation check is also required before merging

  5. 5

    Visual regression baselines should be updated via the update-visual-baselines.yaml workflow; local scripts are only for the test scripts themselves, because font rendering differs across machines

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version of the public repository under the MIT license; the free scope is the code of that version and does not mean that external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize, and distribute the code of this version for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; the code's MIT license alone is not sufficient to judge them.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
  • This repository is a development monorepo, not a directly installable theme package; to install Tapestry as a theme on your own Zola site, use themes/tapestry/README.md and the standalone theme repository instead.
  • Before relying on any Zola/Tera feature, you must first confirm that your local Zola version matches the pinned version in CONSTITUTION.md §3; otherwise the relevant features are unreliable.
  • A manual keyboard-only operation check is still required before merging, and this step cannot be fully automated in CI.
  • Visual regression baselines should be updated via the update-visual-baselines.yaml GitHub Actions workflow; local scripts are only for the test scripts themselves, because font rendering differs across machines.
  • Tapestry is not backward compatible with upstream terminus: it targets Tera v2, which has no macros or shortcodes, so terminus macro/shortcode usage cannot be carried over.
  • Assets such as fonts are not loaded from a CDN at runtime; self-hosted assets must be used, and runtime CDN references cannot be substituted.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

This is the **development monorepo**. If you're looking to install Tapestry as a theme for your own Zola site, see [themes/tapestry/README.md](themes/tapestry/README.md) instead

Original README

Confirm your local Zola version matches the pin in `CONSTITUTION.md` §3 before relying on any Zola/Tera feature

Original README

A manual keyboard-only pass is still required before merge

Original README

real baseline updates should go through the `update-visual-baselines.yaml` GitHub Actions workflow instead

Original README

Tapestry is not backward-compatible with terminus: it targets Tera v2, which has no macros or shortcodes.

Original README

never loaded at runtime from a CDN

Original README
https://github.com/anirbanbasu/theme-tapestry-dev/blob/master/LICENSEhttps://github.com/anirbanbasu/theme-tapestry-dev/blob/master/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-04. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 80 / 100
Technologies
HTML
Website type
Tool Site
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-10-04
Screenshot last checked
2026-10-04

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies HTML as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: [email protected] · 2026-10-04

Inspect the recorded source material

SHA-256: 20d09441d8e6e65ddea35f18e498c2104406a323253e20b054c23d54497b73da

2026-10-04T16:08:55.772Z

Source file / repository
# Tapestry

[![Visual & accessibility tests](https://github.com/anirbanbasu/theme-tapestry-dev/actions/workflows/visual-a11y-tests.yaml/badge.svg)](https://github.com/anirbanbasu/theme-tapestry-dev/actions/workflows/visual-a11y-tests.yaml) [![Build and deploy Zola website](https://github.com/anirbanbasu/theme-tapestry-dev/actions/workflows/publish.yaml/badge.svg)](https://github.com/anirbanbasu/theme-tapestry-dev/actions/workflows/publish.yaml) [![Publish theme](https://github.com/anirbanbasu/theme-tapestry-dev/actions/workflows/publish-theme.yaml/badge.svg)](https://github.com/anirbanbasu/theme-tapestry-dev/actions/workflows/publish-theme.yaml)

Tapestry is a theme for the Zola static site generator.

This is the **development monorepo**. If you're looking to install Tapestry
as a theme for your own Zola site, see
[themes/tapestry/README.md](themes/tapestry/README.md) instead — that
directory is what gets published as the standalone, submodule-installable
[`anirbanbasu/tapestry`](https://github.com/anirbanbasu/tapestry) repository.

## What this repo is

This repository serves two purposes at once:

- It builds and deploys the live Tapestry demo site directly (see
  [`.github/workflows/publish.yaml`](.github/workflows/publish.yaml)), using
  the `content/` fixtures and `config.toml` committed here.
- It is the source of truth for the theme itself, developed under
  `themes/tapestry/`. On every tagged release,
  [`.github/workflows/publish-theme.yaml`](.github/workflows/publish-theme.yaml)
  syncs just that directory out to the separate
  [`anirbanbasu/tapestry`](https://github.com/anirbanbasu/tapestry) repo,
  which is what end users add as a Git submodule.

Day-to-day theme development happens here, in `themes/tapestry/**`; nothing
in the standalone theme repo should be edited directly.

Try the live demo (built from this repo's `content/` and `config.toml`):

- [https://ghp-tapestry.netlify.app](https://ghp-tapestry.netlify.app)
- [https://ghp-tapestry.anirbanbasu.com](https://ghp-tapestry.anirbanbasu.com)

## Repository layout

- `themes/tapestry/` — the theme itself (Tera templates, Sass, static
  assets). This is what gets published to the standalone theme repo.
- `themes/terminus/` — the upstream theme Tapestry is derived from, kept as
  a read-only reference. Never edited in place.
- `content/` — content fixtures used both for testing/diffing and as the
  actual content of the live demo site.
- `specs/` — frozen, checked-in contracts: the carried-over terminus
  features contract, per-style-group design tokens, the brand logo spec, the
  presentation style switcher spec, the visual/a11y test suite spec, and
  third-party asset licenses.
- `prototypes/` — early-stage design exploration (style tiles, logo
  concepts). Never wired into the live theme directly; a direction is only
  adopted once its tokens are frozen into `specs/`.
- `tests/visual-a11y/` — the Playwright + axe-core accessibility, visual
  regression, and keyboard-navigation test suite.
- `.github/workflows/` — CI/CD: build & deploy the demo site, publish the
  theme on tag push, run the visual/a11y suite on relevant PRs, and update
  visual regression baselines on demand.

`CLAUDE.md` and `CONSTITUTION.md` are the operational and non-negotiable
design references for anyone working in this repo — read
`CONSTITUTION.md` before any change touching accessibility, JavaScript,
fonts, or terminus lineage.

## Quick start

Confirm your local Zola version matches the pin in `CONSTITUTION.md` §3
before relying on any Zola/Tera feature:

```bash
zola --version   # expect 0.22.1
zola build       # build the site into public/
zola serve       # local dev server with live reload, http://127.0.0.1:1111
zola check       # validate internal/external links and Markdown, no full build
```

A [`justfile`](justfile) wraps the more involved workflows:

| Recipe | What it does |
|---|---|
| `just serve` | `zola serve` with a friendly banner. |
| `just install-pre-commit-hooks` | Installs the repo's pre-commit hooks via `prek`. |
| `just pre-commit-update` | Updates pinned pre-commit hook versions via `prek`. |
| `just visual-a11y-tests-local [groups]` | Runs `zola check`, builds the site, and runs the accessibility, visual, and keyboard suites for the given presentation style groups (defaults to all five). Mirrors what CI runs. |
| `just update-visual-baselines-local` | Regenerates visual regression screenshot baselines locally. Intended for testing the script only — font rendering varies across machines, so real baseline updates should go through the `update-visual-baselines.yaml` GitHub Actions workflow instead. |

## Testing

Before opening a PR that touches `themes/tapestry/**`, `content/**`,
`tests/**`, or `config.toml`, run the automated suite
(`just visual-a11y-tests-local`, or see CLAUDE.md's verification workflow
for the manual step-by-step). It runs an axe-core accessibility sweep,
screenshot regression diffing, and keyboard-only interaction checks across
every presentation style group — full spec in
[`specs/visual-a11y-test-suite.md`](specs/visual-a11y-test-suite.md). The
same suite runs in CI on every such PR
([`.github/workflows/visual-a11y-tests.yaml`](.github/workflows/visual-a11y-tests.yaml)).

A manual keyboard-only pass is still required before merge — tracked as a
checklist item in
[`.github/pull_request_template.md`](.github/pull_request_template.md),
since it can't be fully automated in CI.

## Contributing

Contributions to the theme are welcome — see `CONSTITUTION.md` for the
non-negotiable standards any change must meet (WCAG 2.1 AA, the no-JS
policy and its three sanctioned exceptions, terminus lineage
pinning, self-hosted fonts, the 12-column grid, and navigation collapse).

1. Run `just install-pre-commit-hooks` once, after cloning.
2. Make your change under `themes/tapestry/**` (or `content/**`/`specs/**`
   as appropriate).
3. Run the quick start commands above, then the test suite.
4. Open a PR against `master` using the checklist in
   [`.github/pull_request_template.md`](.github/pull_request_template.md).

## Credits and third-party assets

This theme uses the following components:

- **Theme:** Derived from [terminus](https://github.com/ebkalderon/terminus)
  (commit `aa8d8b6`) for [Zola](https://www.getzola.org/). Tapestry is not
  backward-compatible with terminus: it targets Tera v2, which has no macros
  or shortcodes.
- **Fonts:** Self-hosted WOFF2 files, vendored from
  [Google Fonts](https://fonts.google.com/) as an upstream source only —
  never loaded at runtime from a CDN (see `CONSTITUTION.md` §4).
- **Icons and other vendored assets:** Font Awesome Free (theme-switcher
  sun/moon icons, presentation style switcher gear icon) and an Openclipart
  paw print icon. Full attribution and license terms for every vendored
  asset are tracked in
  [specs/third-party-licenses.md](specs/third-party-licenses.md).

## License

This project is licensed under the terms of the [MIT license](LICENSE).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.