changes
Some checks failed
Deploy / build-deploy (push) Has been cancelled

This commit is contained in:
Jorijn van der Graaf 2026-08-05 22:32:03 +02:00
commit 054a26475c
4 changed files with 33 additions and 37 deletions

View file

@ -111,7 +111,7 @@ export SafeHtml RenderFooter() {
return Format(
R"(<div class="footer-content">)"
R"(<p class="footer-tagline">Open-source systems work from the Netherlands. )"
R"(This site is C++23 compiled to WebAssembly.</p>)"
R"(This site is C++ compiled to WebAssembly.</p>)"
R"(<p class="footer-links">)"
R"(<a{}>Forgejo</a><a{}>Source</a>)"
R"(</p>)"
@ -189,22 +189,21 @@ export RenderedPage RenderHome(std::span<const Project> projects,
SafeHtml main = Format(
R"(<section class="hero">)"
// No visible headline on purpose: a hero slogan reads as marketing,
// which is not the register this site wants. The h1 stays for the
// document outline (screen readers, crawlers) but is visually hidden;
// the mission text below is the first thing anyone sees.
R"(<h1 class="visually-hidden">Catcrafts</h1>)"
R"(<p class="hero__lede">Catcrafts makes accessible, open-source software )"
R"(and hardware for the benefit of everyone. The goal: a real alternative )"
// No slogan on purpose: a hero headline reads as marketing, which is
// not the register this site wants. Instead the mission sentence IS
// the h1 — full weight in the document outline and for crawlers —
// styled as body prose (see h1.hero__lede) so nothing on screen
// changes register. The old version hid a one-word h1 offscreen,
// which spent the strongest heading on the page saying "Catcrafts"
// to nobody.
R"(<h1 class="hero__lede">Catcrafts makes accessible, open-source software )"
R"(and hardware for the benefit of everyone.</h1>)"
R"(<p class="hero__lede">The goal: a real alternative )"
R"(to big tech that anyone can use, not just Linux nerds.</p>)"
R"(<p class="hero__actions">)"
R"(<a class="btn btn--primary"{}>Browse projects</a>)"
R"(<a class="btn"{}>Browse shop</a>)"
R"(</p>)"
// The person-company weld, human-readable edition. The about page
// and the Organization founder record are the machine-readable one.
R"(<p class="hero__byline">Catcrafts is the one-person company of )"
R"(<a{}>Jorijn van der Graaf</a>.</p>)"
R"(</section>)"
R"(<section class="section">)"
R"(<h2 class="section__title">Featured work</h2>)"
@ -213,7 +212,6 @@ export RenderedPage RenderHome(std::span<const Project> projects,
R"({})",
Url("href", "/projects"),
Url("href", "/shop"),
Url("href", "/about"),
cards.empty() ? Raw(R"(<p class="empty">No featured projects yet.</p>)") : Join(cards),
recent.empty() ? SafeHtml{} : Format(
R"(<section class="section">)"
@ -227,7 +225,7 @@ export RenderedPage RenderHome(std::span<const Project> projects,
page.meta.title = "Catcrafts — open-source software and hardware";
page.meta.description =
"Catcrafts makes accessible, open-source software and hardware: an "
"alternative to big tech. A C++23 engine, build system and networking "
"alternative to big tech. A C++ engine, build system and networking "
"stack from scratch, and Linux with IMS/VoLTE on the Fairphone 6.";
page.meta.canonical = "/";
// The identity record: name, registered VAT identity and the Forgejo
@ -241,7 +239,7 @@ export RenderedPage RenderHome(std::span<const Project> projects,
R"("founder":{"@type":"Person","name":"Jorijn van der Graaf",)"
R"("url":"https://catcrafts.net/about"},)"
R"("description":"Catcrafts makes accessible, open-source software and hardware: )"
R"(the Crafter C++23 suite, the imsd IMS/VoLTE implementation, and Fairphone 6 )"
R"(the Crafter C++ suite, the imsd IMS/VoLTE implementation, and Fairphone 6 )"
R"(handsets sold with postmarketOS preinstalled.",)"
R"("sameAs":["https://forgejo.catcrafts.net/Catcrafts/"]})";
page.main = std::move(main);
@ -271,7 +269,7 @@ export RenderedPage RenderProjects(std::span<const Project> projects) {
RenderedPage page;
page.meta.title = "Projects — Catcrafts";
page.meta.description =
"The Crafter suite: a C++23 build system, graphics engine, networking "
"The Crafter suite: a C++ build system, graphics engine, networking "
"stack, and an IMS/VoLTE implementation for the Fairphone 6.";
page.meta.canonical = "/projects";
page.main = Format(