Improve testimonials

This commit is contained in:
Matthew Holt 2024-02-19 16:39:35 -07:00
parent 531b39f78d
commit 3c22d632ed
No known key found for this signature in database
GPG key ID: 2A349DD577D586A5
4 changed files with 31 additions and 14 deletions

View file

@ -741,7 +741,8 @@ $ curl localhost:2019/config/ | jq<div class="blinking"></div></code>
</a>
<div class="testimonial-role">
<div class="testimonial-role-text"></div>
<a class="testimonial-org"></a>
</div>
</div>
</div>

View file

@ -269,6 +269,13 @@ h3 a {
color: var(--text-color-muted);
font-style: italic;
}
.testimonial-role a {
color: inherit;
}
.testimonial-role a:not([href]) {
text-decoration: none;
color: inherit;
}

View file

@ -7,18 +7,22 @@ const resp = fetch("/resources/testimonials.json").then(async resp => {
const tpl = cloneTemplate('#tpl-testimonial');
$_('.testimonial-picture', tpl).src = testimonial.picture || "";
$_('.testimonial-quote', tpl).innerText = `"${testimonial.quote}"`;
if (testimonial.username) {
$_('.testimonial-name', tpl).innerText = ` @${testimonial.username}`;
} else {
if (testimonial.name) {
$_('.testimonial-name', tpl).innerText = testimonial.name || "";
} else {
$_('.testimonial-name', tpl).innerText = ` @${testimonial.username}`;
}
if (testimonial.link) {
$_('.testimonial-name', tpl).href = testimonial.link;
}
$_('.testimonial-role', tpl).innerText = testimonial.role || "";
$_('.testimonial-role-text', tpl).innerText = testimonial.role || "";
if (testimonial.org) {
$_('.testimonial-role', tpl).appendChild(document.createElement("br"));
$_('.testimonial-role', tpl).appendChild(document.createTextNode(testimonial.org));
console.log($_('.testimonial-org', tpl), tpl);
// $_('.testimonial-role', tpl).prepend(document.createElement("br"));
$_('.testimonial-org', tpl).innerText = testimonial.org;
if (testimonial.org_link) {
$_('.testimonial-org', tpl).href = testimonial.org_link;
}
}
$_(`.testimonial-col:nth-child(${i%3 + 1})`).append(tpl);
}

View file

@ -3,6 +3,7 @@
"name": "Brad Warren",
"role": "Lead Engineer of Certbot",
"org": "Electronic Frontier Foundation (EFF)",
"org_link": "https://eff.org",
"picture": "https://sea1.discourse-cdn.com/letsencrypt/user_avatar/community.letsencrypt.org/bmw/144/7797_2.png",
"quote": "I think we should consider making Caddy the default ACME client recommendation. … It allows for better integration between the TLS server and the ACME management of those certificates. … [ACME clients with] Apache and NGINX are inherently more error prone and brittle than having the TLS server manage its certificates itself. … Caddy is written in a memory-safe language. Adoption of memory-safe programming languages is something that both ISRG and the broader computer security community have been encouraging more and more lately.",
"link": "https://community.letsencrypt.org/t/should-our-default-client-recommendation-be-caddy-if-not-why-not/199949?u=mholt"
@ -11,6 +12,7 @@
"name": "Josh Aas",
"role": "Executive Director",
"org": "Let's Encrypt",
"org_link": "https://letsencrypt.org",
"picture": "https://sea1.discourse-cdn.com/letsencrypt/user_avatar/community.letsencrypt.org/josh/144/10641_2.png",
"quote": "Caddy is impressive. This is what we want, setting up a secure website.",
"link": "https://www.youtube.com/watch?v=OE5UhQGg_Fo"
@ -18,9 +20,19 @@
{
"name": "Stripe",
"role": "Global Leader of Fintech",
"link": "https://stripe.com",
"picture": "https://pbs.twimg.com/profile_images/1618575477781807105/iDuRlqTe_400x400.jpg",
"quote": "With its extensible architecture and on-line config API, Caddy powers many of Stripe's internal systems."
},
{
"name": "Helmut Januschka",
"username": "hjanuschka",
"role": "Head of Engineering",
"org": "Kronen Zeitung",
"org_link": "https://krone.at",
"picture": "https://pbs.twimg.com/profile_images/1445775240315879427/HvZitB1L_400x400.jpg",
"quote": "About 3-4 TB of traffic reaches our origin servers every day. NGINX did a great job, but we were never 100% happy with the config format; it mostly \"kind of\" worked. When we tried Caddy, we realized in a moment that we need to eliminate NGINX. We felt insecure by such a small config, 1/10th the size of our NGINX config. After deploying a single instance, it outperformed all other NGINX instances (4-10). Now we go all-in on Caddy: A legible config that more than 1 person understands; custom domain rollout is 100% automated; NO ONE (squid, nginx, varnish) can do what the replace-response plugin does -- truly a holy grail; we run our own plugins as well; and we spend 70% LESS on our CPU and memory resources. We are super happy with the product, with the mindset behind it, and the idea to make the web \"easy again\" on your own infrastructure."
},
{
"name": "Robert M.",
"role": "Software Developer",
@ -220,13 +232,6 @@
"quote": "First off, I want to say thanks so much for Caddy. It's so simple to get started and the performance is outstanding. Additionally, it's the only reverse proxy I could find which properly load balances across multiple IPs returned from a single A record (dynamic upstreams) while also supporting keepalives ⭐",
"link": "https://github.com/caddyserver/caddy/issues/4211#issuecomment-1952694745"
},
{
"name": "Paul Frybarger",
"username": "pfrybar",
"picture": "https://avatars.githubusercontent.com/u/1022924?v=4",
"quote": "First off, I want to say thanks so much for Caddy. It's so simple to get started and the performance is outstanding. Additionally, it's the only reverse proxy I could find which properly load balances across multiple IPs returned from a single A record (dynamic upstreams) while also supporting keepalives ⭐",
"link": "https://github.com/caddyserver/caddy/issues/4211#issuecomment-1952694745"
},
{
"name": "William Desportes",
"username": "wdesportes",