Create fast, light digital projects from IIIF collections. Canopy IIIF helps libraries, archives, museums, and researchers add narrative context to IIIF material without worrying about derivatives or storage. Author in Markdown, publish static sites, and keep maintenance low while showcasing interoperable collections.
Starting fresh? Follow the Get Started guide and build from https://github.com/canopy-iiif/template. This app repo is reserved for core Canopy development and documentation and should not be cloned for digital projects.
npm installnpm run dev(serves http://localhost:5001 viaapp/scripts/canopy-build.mts)npm run build(renders UI assets + site)
Refer to https://canopy-iiif.github.io/app/docs/developers for full environment, caching, and repo structure notes.
- Getting started basics: https://canopy-iiif.github.io/app/docs/
- Content authoring, routes, and MDX layouts: https://canopy-iiif.github.io/app/docs/content/
- Components, hydration, and interactive search: https://canopy-iiif.github.io/app/docs/components/
- Theme controls, Tailwind presets, and CSS tokens: https://canopy-iiif.github.io/app/docs/theme/
- IIIF ingestion, search indexing, and data flows: https://canopy-iiif.github.io/app/docs/canopy/
- Developer workflow, publishing, and troubleshooting: https://canopy-iiif.github.io/app/docs/developers/
Each page links to deeper guides (assets, works layouts, Search composition, etc.), so the README stays light.
.github/workflows/release-and-template.ymlpublishes packages and, on release, stages a clean build into.template-build/before force-pushing tocanopy-iiif/template.- The staging step strips dev-only paths, rewrites
package.jsonto consume published@canopy-iiif/appbundles, and keeps the template’s workflow lean. - Provide a personal access token as the
TEMPLATE_PUSH_TOKENsecret and markcanopy-iiif/templateas a template repo if you want the GitHub “Use this template” button. - Details live at https://canopy-iiif.github.io/app/docs/developers/#template-workflow.
- The distributable package lives in
packages/appand exports the builder plus UI assets. - Use Changesets (
npm run changeset) to record versions, runnpm run release, and let the release workflow publish to npm before the template sync runs. - Keep
repository,files, andpublishConfig.access: publicinpackages/app/package.jsonso npm users and GitHub Insights can trace dependents. - Publishing guidance, update workflows, and automation hooks are documented at https://canopy-iiif.github.io/app/docs/developers/#releases.
Canopy IIIF (Canopy) is an open-source project by Mat Jordan, released under the MIT License. Anyone may adapt its features and deploy digital projects without restriction. Canopy follows the principles of the open web: its source code is transparent, and its implementations are static and portable. It runs on any server or service that delivers simple files read directly by web browsers. By working directly with IIIF resources, Canopy keeps materials with the libraries, museums, and archives that serve them, along with their metadata, rights statements, and terms of use. Implementers should be aware of the rights and terms governing the materials they reference, publish, and deploy to the web using Canopy.