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
42 changes: 40 additions & 2 deletions src/layouts/Base.astro
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,26 @@ const plausibleDomain = import.meta.env.PUBLIC_PLAUSIBLE_DOMAIN as string | unde
const fullTitle =
title === "letsauth" ? "letsauth · the lab for agent authorization" : `${title} · letsauth`;
const here = path ?? Astro.url.pathname;
// Who publishes the site, for search engines: the lab, founded and run by one person.
const author = {
"@type": "Person",
name: OPERATOR.name,
url: OPERATOR.site,
sameAs: [OPERATOR.mastodon.url, OPERATOR.bluesky],
};
const publisher = {
"@context": "https://schema.org",
"@type": "WebSite",
name: "letsauth",
url: site.href,
author,
publisher: {
"@type": "Organization",
name: LAB,
url: site.href,
founder: author,
},
};
// Footer link groups: what you can read, what you can take, and who is behind it.
const footerGroups = [
{
Expand Down Expand Up @@ -95,6 +115,11 @@ const nav = [
<title>{fullTitle}</title>
<meta name="description" content={description} />
<link rel="canonical" href={canonical.href} />
<meta name="author" content={OPERATOR.name} />
<link rel="author" href={OPERATOR.site} />
<link rel="me" href={OPERATOR.mastodon.url} />
<link rel="me" href={OPERATOR.bluesky} />
<meta name="fediverse:creator" content={OPERATOR.mastodon.handle} />
{noindex && <meta name="robots" content="noindex" />}
<meta property="og:type" content="website" />
<meta property="og:site_name" content="letsauth" />
Expand All @@ -114,6 +139,7 @@ const nav = [
))
}
<link rel="sitemap" href="/sitemap-index.xml" />
<script type="application/ld+json" set:html={JSON.stringify(publisher)} />
<script is:inline>
// Apply a stored theme before first paint. Stored value is a per-viewer convenience only.
try {
Expand Down Expand Up @@ -184,8 +210,9 @@ const nav = [
<BrandLogo />
</a>
<p>
An independent lab for agent authorization, run by {LAB}. Each cell cites its source
and the data is open. Only a nightly scan of public metadata ever contacts a server.
An independent lab for agent authorization, run by{" "}
<a class="site-footer__author" href={OPERATOR.site} rel="author">{OPERATOR.name}</a>. Each cell cites
its source and the data is open. Only a nightly scan of public metadata ever contacts a server.
</p>
<a class="site-footer__eu" href="/made-in-europe/">Made in Europe, hosted in the EU</a>
</div>
Expand Down Expand Up @@ -426,6 +453,17 @@ const nav = [
margin: 0 0 var(--space-4);
max-width: 36ch;
}
/* the one inline link in the statement: the person behind the lab, a plain followed link */
.site-footer__author {
color: var(--ink);
text-decoration: underline;
text-decoration-color: var(--rule-strong);
text-underline-offset: 0.2em;
transition: text-decoration-color var(--dur-fast) var(--ease);
}
.site-footer__author:hover {
text-decoration-color: currentColor;
}
.site-footer__eu {
display: inline-flex;
align-items: center;
Expand Down
3 changes: 3 additions & 0 deletions src/lib/site.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ export const OPERATOR = {
country: "Germany",
email: "letsauth@janbrennenstuhl.eu",
site: "https://www.janbrennenstuhl.eu/",
/** Social profiles: linked with rel="me" for verification and listed as sameAs in the JSON-LD. */
mastodon: { handle: "@jbspeakr@infosec.exchange", url: "https://infosec.exchange/@jbspeakr" },
bluesky: "https://bsky.app/profile/janbrennenstuhl.eu",
} as const;

export const REPO = "https://github.com/letsauthlab/letsauth";
Expand Down
Loading