repos
/ orchard main

orchard

mirror

Every site I host, in one repo, along with the Cloudflare Tunnel and Caddy that front them. It's all Go, Vite, and SQLite, and it runs on a desktop at home with nothing listening on an inbound port.

blogbuncaddycloudflare-tunneldockergogolanghomelabhtml-templatemonorepoself-hostedseosqlitestatic-sitetypstuptime-monitoringviteweb-analytics

1.2 KB · 23 lines · Typst Raw History
 1// The social card, compiled to a 1200x630 PNG at build time.
 2//
 3// PNG rather than SVG because every social platform refuses image/svg+xml for
 4// og:image, so a vector card is a card nobody ever sees. At 72 ppi one Typst
 5// point is one pixel, so this page is literally the size og:image:width and
 6// og:image:height promise.
 7//
 8// This is the only Typst in the repo that is not a report: the same compiler
 9// the PDF route already needs at runtime, used once at build.
10
11#set page(width: 1200pt, height: 630pt, margin: 0pt, fill: rgb("#0d1117"))
12#set text(font: ("Geist", "Liberation Sans"), fill: rgb("#f0f6fc"))
13
14#place(dx: 80pt, dy: 80pt, rect(width: 5pt, height: 130pt,
15  fill: gradient.linear(rgb("#0e3ff4"), rgb("#842bff"), angle: 90deg)))
16
17#place(dx: 110pt, dy: 92pt, text(size: 76pt, weight: "bold", tracking: -2pt)[Status])
18#place(dx: 110pt, dy: 190pt, text(size: 30pt, fill: rgb("#9aa3b2"))[Self-hosted uptime monitoring])
19
20#place(dx: 80pt, dy: 470pt, line(length: 1040pt, stroke: 1pt + rgb("#30363d")))
21#place(dx: 80pt, dy: 508pt, text(size: 24pt, fill: rgb("#c9d1d9"))[status.bythewood.me])
22#place(dx: 80pt, dy: 550pt, text(size: 20pt, fill: rgb("#6f7789"))[Uptime, response times, Lighthouse audits and crawl findings])