Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions assets/css/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -989,6 +989,17 @@ button {
.hero > * {
position: relative;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.pointer-events-none {
pointer-events: none;
}
Expand Down Expand Up @@ -2871,6 +2882,9 @@ button {
.sm\:w-auto {
width: auto;
}
.sm\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sm\:grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
Expand Down Expand Up @@ -3061,6 +3075,9 @@ button {
.lg\:pb-20 {
padding-bottom: 5rem;
}
.lg\:pb-24 {
padding-bottom: 6rem;
}
.lg\:pt-16 {
padding-top: 4rem;
}
Expand Down
1 change: 1 addition & 0 deletions content/about.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ <h2>Leadership</h2>
<h3 class="!mt-0 text-2xl font-bold text-ink !mb-0">Viktor Petersson</h3>
<a href="https://www.linkedin.com/in/vpetersson/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center text-[#0077b5] hover:text-[#006097] transition-colors">
{{< icon "linkedin" "w-5 h-5" >}}
<span class="sr-only">Viktor Petersson on LinkedIn</span>
</a>
</div>
<p class="text-ink-muted font-semibold mb-6 uppercase tracking-eyebrow text-sm">Founder</p>
Expand Down
1 change: 1 addition & 0 deletions content/compliance/nist-800-171.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

url: /compliance/nist-800-171/
title: "NIST SP 800-171 SBOM Requirements: Protecting CUI in Software Supply Chains"
seo_title: "NIST SP 800-171 SBOM Requirements"
description: "How NIST SP 800-171 Rev 3 supply chain and component inventory controls relate to SBOM requirements for organizations handling Controlled Unclassified Information. Includes the CMMC phased rollout timeline through 2028."
tldr: "NIST SP 800-171 protects Controlled Unclassified Information (CUI) in nonfederal systems and is required for DoD contractors via CMMC. Its supply chain risk management requirements align with SBOM practices for documenting and verifying software components."
faq:
Expand Down
1 change: 1 addition & 0 deletions content/compliance/nist-800-53.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

url: /compliance/nist-800-53/
title: "NIST 800-53 and SBOM Requirements: Security Controls for Software Supply Chains"
seo_title: "NIST 800-53 SBOM Requirements"
description: "How NIST SP 800-53 Rev 5 security controls relate to SBOM requirements, covering the SA and SR control families for software supply chain risk management."
tldr: "NIST SP 800-53 defines security and privacy controls for federal information systems. Its supply chain risk management controls (SR family) and developer security requirements (SA family) increasingly expect organizations to produce and consume SBOMs as evidence of software transparency."
faq:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ For more details on using the GitHub Action and other CI/CD integrations, see ou

What’s great about this is that it removes the need to trust sbomify directly. You can verify the SBOM independently as follows:

- Download the latest SBOM from the GitHub Action [sbomify public page](https://app.sbomify.com/component/Gu9wem8mkX)
- Download the latest SBOM from the GitHub Action [sbomify public page](https://trust.sbomify.com/component/Gu9wem8mkX/)
- Install the GitHub CLI if you don't already have it

With this done, you can verify the file against GitHub:
Expand Down
2 changes: 1 addition & 1 deletion content/posts/2025-03-31-chris-swan-joins-sbomify.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ sbomify is excited to announce that Chris Swan has joined its advisory board. Ch

Chris currently serves as an Engineer at [Atsign](https://atsign.com/), working on the atPlatform, a privacy-focused open-source networking platform. He previously held leadership roles at DXC Technology, UBS, Cohesive Networks, and Credit Suisse, focusing on cloud, security, and infrastructure innovation. Chris is also known for his insightful writing as an [editor at InfoQ](https://www.infoq.com/profile/Chris-Swan/#allActivity) and as co-host of the [_Tech Debt Burndown_](https://techdebtburndown.com/) podcast.

Chris's involvement with sbomify began during his work at Atsign, where he successfully integrated sbomify into their CI/CD pipeline to automate SBOM generation. This collaboration, detailed in the [Atsign case study](https://sbomify.com/case-studies/atsign), demonstrates Chris's practical approach to integrating security seamlessly into developer workflows.
Chris's involvement with sbomify began during his work at Atsign, where he successfully integrated sbomify into their CI/CD pipeline to automate SBOM generation. This collaboration, detailed in the [Atsign case study](/case-studies/atsign/), demonstrates Chris's practical approach to integrating security seamlessly into developer workflows.

Chris's perspective aligns perfectly with sbomify’s mission of developer-friendly, frictionless SBOM management.

Expand Down
2 changes: 1 addition & 1 deletion content/posts/2025-07-04-big-update-to-sbomify.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ With this new feature, that is now possible. All you need to do is create a new

In short, sbomify is evolving into a compliance hub. SBOMs remain important, but they are now just one part of a broader picture. Speaking of SBOMs, we have also exposed our product- and project-level SBOM aggregation download feature to public pages. This means that if you have a project with ten different components – for example, ten different microservices – you can now download an aggregated SBOM that links all of them together using externalReferences in CycloneDX*.

Want a live demo? Check out our [public product page](https://app.sbomify.com/public/product/eP_4dk8ixV/)
Want a live demo? Check out our [public product page](https://trust.sbomify.com/product/sbomify/)

_* Note: This is currently available only for CycloneDX, and it assumes your SBOM components are marked as public._
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---

title: "CRA Explained: What the Cyber Resilience Act Means for Device Manufacturers"
seo_title: "CRA Explained for Device Manufacturers"
description: "Podcast episode with EU CRA expert Sarah Fluchs explaining SBOM requirements, the 5-year support mandate, and vulnerability management for device manufacturers."
author:
display_name: Viktor Petersson
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---

title: "BSI TR-03183 Is Now Four Documents, and the CRA Clock Runs Out in Three Weeks"
seo_title: "BSI TR-03183 Is Now Four Documents: CRA Update"
description: "BSI published TR-03183-1 in version 1.0.0 on 31 July 2026, completing a four-part CRA guideline family. Here is what changed across TR-03183, the Commission's July 2026 guidance, and the ENISA Single Reporting Platform before 11 September."
keywords: "BSI TR-03183, TR-03183-1, TR-03183-3 security.txt, RFC 9116 CRA, CRA reporting 11 September 2026, Single Reporting Platform, EN 40000, CRA harmonised standards, BSI SBOM requirements, CRA compliance 2026"
categories:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---

title: "The CRA Single Reporting Platform Opens Tomorrow: What ENISA Actually Requires"
seo_title: "CRA Single Reporting Platform: ENISA Requirements"
description: "ENISA's CRA Single Reporting Platform goes live on 11 September 2026 with Article 14 reporting obligations. Registration, Assigned Representative roles, the 24/72-hour clocks, CSIRT selection, and the fields you will be typing."
keywords: "CRA Single Reporting Platform, ENISA SRP, CRA SRP registration, CRA reporting obligations, CRA Article 14, actively exploited vulnerability reporting, CRA severe incident, CSIRT designated as coordinator, EU Login SRP, CRA 11 September 2026"
categories:
Expand Down
4 changes: 2 additions & 2 deletions content/pricing.html
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ <h3>Features</h3>
<div class="card-footer">
<a href="https://app.sbomify.com" class="cta-button" onclick="posthog.capture('cta_click', { location: 'pricing', label: 'Business Plan Signup' })">Start 14-day free trial</a>
<a href="https://app.sbomify.com/enterprise-contact/" class="block mt-3 text-sm text-navy-20 hover:text-white underline underline-offset-4 decoration-navy-60 hover:decoration-white transition-colors" onclick="posthog.capture('cta_click', { location: 'pricing', label: 'Business Plan Talk to Sales' })">Or talk to sales &rarr;</a>
<a href="https://sbomify.com/slack" target="_blank" rel="noopener noreferrer" class="block mt-2 text-sm text-navy-20 hover:text-white underline underline-offset-4 decoration-navy-60 hover:decoration-white transition-colors" onclick="posthog.capture('cta_click', { location: 'pricing', label: 'Business Plan Chat on Slack', destination: 'https://sbomify.com/slack' })">Or chat with us on Slack &rarr;</a>
<a href="https://join.slack.com/t/sbomify/shared_invite/zt-3na54pa1f-MXrFWhotmZr0YxXc8sABTw" target="_blank" rel="noopener noreferrer" class="block mt-2 text-sm text-navy-20 hover:text-white underline underline-offset-4 decoration-navy-60 hover:decoration-white transition-colors" onclick="posthog.capture('cta_click', { location: 'pricing', label: 'Business Plan Chat on Slack', destination: 'https://join.slack.com/t/sbomify/shared_invite/zt-3na54pa1f-MXrFWhotmZr0YxXc8sABTw' })">Or chat with us on Slack &rarr;</a>
</div>
</div>

Expand Down Expand Up @@ -147,7 +147,7 @@ <h3>Features</h3>
</div>
<div class="card-footer">
<a href="https://app.sbomify.com/enterprise-contact/" class="cta-button" onclick="posthog.capture('cta_click', { location: 'pricing', label: 'Enterprise Plan Contact' })">Contact Us</a>
<a href="https://sbomify.com/slack" target="_blank" rel="noopener noreferrer" class="block mt-3 text-sm text-ink-muted hover:text-ink underline underline-offset-4 decoration-line-strong hover:decoration-ink transition-colors" onclick="posthog.capture('cta_click', { location: 'pricing', label: 'Enterprise Plan Chat on Slack', destination: 'https://sbomify.com/slack' })">Or chat with us on Slack &rarr;</a>
<a href="https://join.slack.com/t/sbomify/shared_invite/zt-3na54pa1f-MXrFWhotmZr0YxXc8sABTw" target="_blank" rel="noopener noreferrer" class="block mt-3 text-sm text-ink-muted hover:text-ink underline underline-offset-4 decoration-line-strong hover:decoration-ink transition-colors" onclick="posthog.capture('cta_click', { location: 'pricing', label: 'Enterprise Plan Chat on Slack', destination: 'https://join.slack.com/t/sbomify/shared_invite/zt-3na54pa1f-MXrFWhotmZr0YxXc8sABTw' })">Or chat with us on Slack &rarr;</a>
</div>
</div>

Expand Down
1 change: 1 addition & 0 deletions content/sbomify-action/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ url: /sbomify-action/
aliases:
- /guides/sbomify-action/
title: "sbomify Action: Generate Compliance-Grade SBOMs in Any CI Pipeline"
seo_title: "sbomify Action: SBOMs in Any CI Pipeline"
description: "Complete documentation for the sbomify action - a CLI shipped as a container that generates, augments and enriches SBOMs in GitHub Actions, GitLab CI, Bitbucket, Jenkins, CircleCI and any other pipeline."
keywords: ["sbomify action", "SBOM CI/CD", "SBOM automation", "CycloneDX", "SPDX", "GitHub Action SBOM", "GitLab SBOM"]
tldr: "sbomify-action is a CLI shipped as a container image that turns a lockfile into a compliance-grade SBOM inside your pipeline. It picks the right generator for your ecosystem, adds your business metadata, and enriches every component from package registries. It runs anywhere containers run - GitHub Actions is one runtime among several."
Expand Down
4 changes: 2 additions & 2 deletions data/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ nav:

social:
x: https://x.com/sbomify
linkedIn: https://www.linkedin.com/company/sbomify
linkedIn: https://www.linkedin.com/company/sbomify/
github: https://github.com/sbomify
slack: https://sbomify.com/slack
slack: https://join.slack.com/t/sbomify/shared_invite/zt-3na54pa1f-MXrFWhotmZr0YxXc8sABTw
17 changes: 11 additions & 6 deletions layouts/_default/_markup/render-codeblock.html
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
{{- $result := transform.HighlightCodeBlock . -}}
{{- /* The figure wrapper is also what partials/content.html matches on to
wrap code blocks in Cloudflare <!--email_off--> markers, so keep the
class name and this markup in sync with the regexp there.

The header band carries the language and a copy button, as the app's
{{- /* Chroma wraps every line in two spans (.line > .cl) and every run of
whitespace in another (.w). None of them carry styling here (pre already
keeps the line breaks; .line's flex display changes nothing on its own),
yet on code-heavy guides they were over a third of all elements on the
page, which site audits report as low semantic HTML usage. Unwrap them.
Highlighted lines (hl_lines) use "line hl" and are left alone. */ -}}
{{- $code := $result.Wrapped | string
| replaceRE `<span class="line"><span class="cl">((?:[^<]|<span class="[^"]*">[^<]*</span>)*)</span></span>` "$1"
| replaceRE `<span class="w">([^<]*)</span>` "$1" -}}
{{- /* The header band carries the language and a copy button, as the app's
code block does. The button ships hidden and assets/js/main.js reveals
it, so there is no dead control without JavaScript. */ -}}
<figure class="code-block"><figcaption class="code-block-header"><span class="code-block-lang">{{ .Type }}</span><button type="button" class="code-block-copy" data-code-copy hidden>Copy</button></figcaption>{{ $result.Wrapped }}</figure>
<figure class="code-block"><figcaption class="code-block-header"><span class="code-block-lang">{{ .Type }}</span><button type="button" class="code-block-copy" data-code-copy hidden>Copy</button></figcaption>{{ $code | safeHTML }}</figure>
1 change: 1 addition & 0 deletions layouts/_default/about.html
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ <h3 class="text-2xl font-bold text-ink !mt-0 !mb-0">{{ $advisor.name }}</h3>
{{ with $advisor.linkedin }}
<a href="{{ . }}"{{ partial "link-attrs.html" (dict "url" . "rel" "noopener noreferrer" "target" "_blank") }} class="inline-flex items-center text-[#0077b5] hover:text-[#006097] transition-colors" title="{{ $advisor.name }} on LinkedIn">
{{ partial "icon.html" (dict "name" "linkedin" "class" "w-5 h-5") }}
<span class="sr-only">{{ $advisor.name }} on LinkedIn</span>
</a>
{{ end }}
</div>
Expand Down
14 changes: 14 additions & 0 deletions layouts/_default/single.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ <h1 class="text-ink text-[40px] lg:text-[68px] leading-[48px] lg:leading-[78px]
</article>
{{ partial "toc.html" (dict "page" . "mode" "aside") }}
</div>
{{/* Cross-links between compliance frameworks. Most frameworks were
only linked from the /compliance/ index. */}}
{{ if eq .Section "compliance" }}
{{ with where .CurrentSection.RegularPages "RelPermalink" "ne" .RelPermalink }}
<nav class="max-w-4xl mx-auto px-6 lg:px-8 pb-16 lg:pb-24" aria-labelledby="compliance-more-heading">
<h2 id="compliance-more-heading" class="text-xl font-bold text-ink mb-4">More compliance frameworks</h2>
<ul class="grid gap-3 sm:grid-cols-2">
{{ range .ByTitle }}
<li><a href="{{ .RelPermalink }}" class="link">{{ .LinkTitle }}</a></li>
{{ end }}
</ul>
</nav>
{{ end }}
{{ end }}
</section>
</div>
{{ end }}
25 changes: 25 additions & 0 deletions layouts/_default/taxonomy.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,28 @@
{{- /* Renders both the taxonomy indexes (/tags/, /categories/) and the term
pages (/tags/sbom/). Current Hugo resolves term pages to
_default/taxonomy.html ahead of _default/term.html, so a separate
term.html was silently ignored and term pages rendered as a bare grid of
titles without the post cards. */ -}}
{{ define "main" }}
{{ if eq .Kind "term" }}
<div>
<div class="hero">
<div class="relative px-5 py-16 lg:py-24 lg:px-24 max-w-7xl mx-auto">
<h1 class="text-ink text-[40px] lg:text-[68px] leading-[48px] lg:leading-[78px] mb-6">
<span class="capitalize">{{ .Title }}</span>
</h1>
<p class="text-ink-muted text-lg lg:text-xl max-w-4xl leading-relaxed">
{{ .Data.Singular | title }} &middot; <a href="{{ .Parent.RelPermalink }}" class="link">All {{ .Data.Plural }}</a> &middot; <a href="/blog/" class="link">Blog</a>
</p>
</div>
</div>
<section class="bg-surface">
<div class="max-w-7xl mx-auto px-6 lg:px-8 py-12 lg:py-20">
{{ partial "posts.html" (dict "paginate" true "context" . "pages" .Pages) }}
</div>
</section>
</div>
{{ else }}
<div>
<div class="hero">
<div class="relative px-5 py-16 lg:py-24 lg:px-24 max-w-7xl mx-auto">
Expand Down Expand Up @@ -27,3 +51,4 @@ <h2 class="text-2xl font-semibold leading-tight mb-4 group-hover:text-accent-str
</section>
</div>
{{ end }}
{{ end }}
19 changes: 0 additions & 19 deletions layouts/_default/term.html

This file was deleted.

17 changes: 17 additions & 0 deletions layouts/faq/single.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,23 @@ <h1 class="text-ink text-[40px] lg:text-[68px] leading-[48px] lg:leading-[78px]
{{ partial "content.html" . }}
</article>

{{/* Related questions: the closest matches by keywords, plus the
neighbouring questions in FAQ order so that every answer is linked
from at least two others, not only from the /faq/ index. */}}
{{ $related := first 3 (where (site.RegularPages.Related .) "Section" "faq") }}
{{ with .PrevInSection }}{{ $related = $related | union (slice .) }}{{ end }}
{{ with .NextInSection }}{{ $related = $related | union (slice .) }}{{ end }}
{{ with $related }}
<nav class="mt-12" aria-labelledby="faq-related-heading">
<h2 id="faq-related-heading" class="text-xl font-bold text-ink mb-4">Related questions</h2>
<ul class="space-y-3">
{{ range . }}
<li><a href="{{ .RelPermalink }}" class="link">{{ .Title }}</a></li>
{{ end }}
</ul>
</nav>
{{ end }}

{{/* Bottom navigation */}}
<div class="mt-12 flex flex-wrap items-center justify-between gap-4">
<a href="/faq/" class="text-ink hover:text-accent-strong font-semibold transition-colors no-underline">
Expand Down
Loading
Loading