Skip to content
Granularity
  • Docs
  • Components
  • Foundations
  • Patterns
  • Playground
⌘KSearch
  • enEnglish
  • ruРусскийComplete
Source on GitHubCore versionv0.41.0
  • Docs
  • Components
  • Foundations
  • Patterns
  • Playground
  • enEnglish
  • ruРусскийComplete
v0.41.0

Legal

  • Legal
  • Licensing
  • Compliance
  • Privacy
  • Terms
  • Cookies
  • Accessibility statement
  • Security
  1. Legal
  2. Compliance

Compliance

What reaches the browser and under which licences: the delivery of the portal, the SBOM, the rights to the materials of the site and ready answers for a vendor questionnaire.

Pre-launch draft: written, not reviewed by a lawyer.

The short answer

The Granularity core declares 0 runtime dependencies. That is not a turn of phrase and not a rounding: in the manifest of the installed 0.41.0 package the dependencies section is empty, and a dependency audit on your side comes down to a single package.

The portal itself is static HTML, CSS and fonts. Not one request goes to a third-party host — not for a font, not for a stylesheet, not for analytics. The full composition of what it is built from is one request away in machine-readable form — CycloneDX.

What reaches the browser

The difference between "a dependency of the project" and "code on the user’s device" matters here, and nearly everything in the list further down is the former. What reaches the device is this.

  • The Inter typeface — SIL Open Font License 1.1. 3 subsets are served: inter-cyrillic.woff2, inter-latin-ext.woff2, inter-latin.woff2. A further 4 files are read by the Open Graph card generator; they never leave the build. A copy of the licence sits in the repository next to the font, and a gate watches its fingerprint: replacing the font fails the build.
  • The lucide icons — ISC. The @iconify-json/lucide package is build-time, but its data is baked into the CSS as masks — that is, it does reach the user and falls under its own licence. There is not a single separate request for an icon.
  • The JavaScript of the islands — Vue and the Granularity components. A prose page loads not a byte: script appears where there is a live demo, a playground or the search.
  • The search index — Pagefind, MIT. The index and its WebAssembly are served from the same origin and load only on the user’s request.

Not one third-party host

The claim is checkable, and it is checked: a build gate walks every page served and every stylesheet and requires that every loadable resource — script, style, font, image, frame — come from the site’s own origin. A link to somebody’s CDN appearing there fails the build instead of surviving unnoticed until an audit.

The practical consequence: no third party receives your employee’s IP address because they opened the documentation. The site has no personal-data processors at all — privacy.

One caveat, and it is named here rather than hidden in a gate exception. The GrFilePreview demo shows the "image failed to load" state and uses an address in the .invalid domain for it. Such names are reserved by RFC 2606 and never resolve anywhere — that is their whole purpose — so it does not become a request to a third-party host and sends no data anywhere.

What the portal itself is built from

The closure of the portal’s production dependencies — 396 packages under 12 licences, 14 of them direct. The tree installed on disk is read rather than the list in the manifest: what matters in a licence registry is what actually arrived, transitive included, and the version comes from there too — a "^0.41.0" range is a promise, not a version.

Almost everything in this list is build tooling. It turns sources into static files and never reaches a browser. Do not read the table as "four hundred packages reach the user": not one of them does.

LicencePackagesOf them, direct dependencies of the portal
MIT360@astrojs/markdown-remark, @astrojs/vue, @feugene/fint-i18n, @feugene/unocss-preset-granular, @floating-ui/dom, @unocss/astro, astro, remark-directive, unocss, vue
ISC10—
BSD-2-Clause8—
Apache-2.04—
BlueOak-1.0.03—
BSD-3-Clause3—
SEE LICENSE IN LICENSE3@feugene/astro-granularity, @feugene/granularity, @feugene/granularity-code
CC-BY-4.01—
CC0-1.01—
MPL-2.01—
OFL-1.11@fontsource-variable/inter
Python-2.01—

The SEE LICENSE IN LICENSE row is the Granularity packages themselves: npm manifests have no identifier for such a licence, and it lives in the file. The breakdown is on the licensing page. Licensing.

SBOM and machine-readable answers

  • /api/v1/sbom.json — CycloneDX 1.6 with a purl for every package.
  • /api/v1/licenses.json — the same delivery as a licence summary.

The boundary is stated plainly, because blurring it would be convenient and therefore dishonest: this is the composition of the portal. A full SBOM for each package of the library is assembled in its own release process, and passing one off as the other is the kind of inaccuracy a corporate review does not forgive.

Rights to the materials of this site

WhatOn what terms
The library codeLicenseRef-Granularity-EUC-1.0
Code examples on this siteCC0 1.0 — public domain. Copy them without attribution: an example exists to be copied.
Documentation proseCC BY 4.0 — reusable with attribution.
The logo and the markAll rights reserved; the rules are on the brand page.
Fonts and iconsUnder the licences of their authors — listed below.

The row about code examples matters practically. Without an explicit permission, copying an example into your project formally inherits the library’s licence with all of its clause — plainly not what the author wants, and that is why it is written down rather than implied.

VPAT and ACR

There is no conformance report (VPAT 2.5 / ACR) yet. It is planned, and it needs more than automated runs: it needs the manual screen-reader verification that has not happened yet. Filling it in from automation alone would mean issuing a document whose very first line is untrue.

What exists instead right now: an accessibility statement with the declared level, the method of verification and — most importantly — a list of the known exceptions. It answers the same questions, only without the form. Accessibility statement.

Ready answers for a vendor questionnaire

QuestionAnswer
Licence identifier for your registryLicenseRef-Granularity-EUC-1.0
Machine-readable SBOMCycloneDX 1.6 — /api/v1/sbom.json
Runtime dependencies of the coreNone.
Third-party requests from your siteNone. Every font, style and script is served from the site’s own origin.
Cookies and trackersNo cookies at all; no analytics is deployed. See the cookies page.
Accessibility conformanceWCAG 2.2 AA, partially conformant — the statement lists the exceptions.
VPAT / ACRNot published yet. What exists instead is described below.

Contact

Questions from a legal department and requests for documents — legal@granularity.tech. We answer within five working days. For vulnerabilities — security.

This version is in force from: 2026-09-02

Last reviewed: 2026-09-02

On this page

  • The short answer
  • What reaches the browser
  • What the portal itself is built from
  • SBOM and machine-readable answers
  • Rights to the materials of this site
  • VPAT and ACR
  • Ready answers for a vendor questionnaire
  • Contact

Sections

  • Documentation
  • Components
  • Foundations
  • Patterns
  • Examples

Resources

  • Architecture
  • Changelog
  • Roadmap
  • Blog
  • Design
  • Contributing
  • About

Legal

  • Licensing
  • Compliance
  • Privacy
  • Terms
  • Cookies
  • Accessibility statement
  • Security

Ecosystem

  • Core
  • Charts
  • Chrono
  • Code
  • Dashboard
  • Datasource
  • Devtools
  • Editor
  • Forms Schema
  • Media
  • Test Kit
  • Unplugin

This portal is built with Granularity itself.

Apache-2.0 with an ethical-use clause — not an OSI licence.

Core version: 0.41.0