From 09b64cbfb76d49694e67592ca883e1e52260710d Mon Sep 17 00:00:00 2001 From: "claude@clouddev1" Date: Thu, 11 Jun 2026 18:59:02 +0000 Subject: [PATCH] feat(website): Open Graph social card Add a 1200x630 social card (dark bg, monospace, teal database-table motif, the relplay/RDBMS reveal) shown when pages are shared. Source SVG in src/assets/og-card.svg, rasterised to public/og-card.png with sharp. Wire site-wide og:image + twitter summary_large_image tags via Starlight head, with the absolute relplay.org URL. --- website/astro.config.mjs | 19 +++++++++++++++++++ website/public/og-card.png | Bin 0 -> 45339 bytes website/src/assets/og-card.svg | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 website/public/og-card.png create mode 100644 website/src/assets/og-card.svg diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 890f4f5..44f4e22 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -40,6 +40,25 @@ export default defineConfig({ // TODO(Phase B): a header social link to the repo is deliberately omitted // — the source/issues link lives understated in the footer instead. customCss: ['./src/styles/global.css'], + // Open Graph / Twitter social card. Starlight emits og:title/url/type + // from `site`, but not an image, so add a single site-wide card. + // Source: src/assets/og-card.svg → public/og-card.png (rasterise with + // sharp; see the SVG header for the one-liner). Absolute URL required + // by scrapers — derived from the `site` origin. + head: [ + { tag: 'meta', attrs: { property: 'og:image', content: 'https://relplay.org/og-card.png' } }, + { tag: 'meta', attrs: { property: 'og:image:width', content: '1200' } }, + { tag: 'meta', attrs: { property: 'og:image:height', content: '630' } }, + { + tag: 'meta', + attrs: { + property: 'og:image:alt', + content: 'RDBMS Playground — learn relational databases by doing.', + }, + }, + { tag: 'meta', attrs: { name: 'twitter:card', content: 'summary_large_image' } }, + { tag: 'meta', attrs: { name: 'twitter:image', content: 'https://relplay.org/og-card.png' } }, + ], // Register the simple-mode command grammar with Expressive Code (Shiki). expressiveCode: { shiki: { langs: [rdbmsLang, rdbmsSyntax] } }, // Pragmatic structure (ADR-website-001 §7 / website/STYLE.md): Getting diff --git a/website/public/og-card.png b/website/public/og-card.png new file mode 100644 index 0000000000000000000000000000000000000000..7c86a38ed7ecf0ce1c59a1722adf6ab3388eb367 GIT binary patch literal 45339 zcmeFacT`hr_by5iP^73-K|$S$QbbWHN>xOZ2na$zY5iWKRfkrqf0 zkQ#_6A|OS2OQHhO6Ddi6kmN4h+utsq`@3h1d+s>*j^Q5;F(g^*o$Hj+2`=-#)+X;q$2d2Y%bL@0`Hxo!bNP*jjSo zY++iEpmY#D%uZd4eJ&DHi%reUBp1$v!^)!x{e=r zb##;U9>|`*uknxH$t7w-c#^pJZshX)!wBEsfZqnWfxPikE2LQbTIly(^XrNJ+PXjd z`InF4e+8pIqW7<;%fbCCz5Je!f8|k5fnNo~9~IWGg5g)e@c+|-flF!I(QQBLYi@XT z|LR`8_mRI!z+WZcug3dNu;Kqi3HZ>28;uY6wC7&{9LawTW1I=CGFYy*8_{|nxqpP{ z9}jb5Ns!H0J-pse;hBpHFg(8!pAgs2Q6=PFJQpYT&*7PZIZj3FE{)Bi+JBnuFKEmy zj;)&nHvQ!V$@~X5iiS^w7Hd+MheIf{6|=;w4g5yWerMNUp2{Vcy}DKciol&7N%`xi z{N5ntJYJA4VVZlZ9U5G{>RzjRFY%Iswru6{Y*?P8N`f&ZxOO1M+ zoGi)w(n~JRrKQ~hyPP6-`6ia``;VuK7vr|7@ctHV;^^mk>=jEK<4+8Bh}DU%){+}T z#fABeQc15!!Un?K&U(p0p7(mKpUPehPSZ&6UrL>!KILfRoco*g{az!LVbeH21E0k{ z#HtM@l5)DABw?8*vkl^OKk#t%4H}M*;o^4mfm(-s>w%a7i^>1(X5upC}{pFn31t#TJ71L&1^Rk-fiPvW)Kq``f4j+T_hUTZC@0xec(me;}fR zN3#<-fX%b+k??ue&w5g53wBPHTcK8aDsbKif$qCwWpCroV3r#>ZT}BU6!Hc+t-jn! zREp#s!*=Z60U6TewFrTA<#aw&9P=ja?I)QQiHdXn2dt?ku$*!#UW{|FEo=|odDoW+ z_mkW&o|t;0dM{=-|W05gmOz)-()Qb*_HpfK6>E9@^jL_lL1{Cu)V%KfBon7%Gc-i zuBEmZKOd$_L72=-G#Fmy`}UfbaYqZjv%mlP6<~)az{dF}yj!8BXMN-3MF=uW`(ACa zc@VIv{|P(mA!9g4#yE21c)g`Rg!?~udY1VcK7d2zZ^13)yc3?LfghKOekFJfr_p>d zmjyg5WXj*L?gvup?Q5`{?~ZXJlsDzPe+h((`(AQ|D!$5V2Q{AK z?rBAl=zi~7p>Svx{KH6avwc4a1R5v|wq+=b!Xzts3Xzsm1OGf5<6VWfBm+$ z#_YZv(ox^xr*3!p$N4(KL`*Xm&Jp2VvpDw{sIh+MwN6S|sB6n)a-j)NQQ*5d&5z@= zP4%XSJ>P#@U_FN}F0aNp$%UZ6xl@$L#HyWIl&B_Xi%+YWPh69`f1<6eu4vC zKCli5;i8fEb?%n+O&CZGqPP$(i_;LK8|uW-aethI@{!e4t4hjD zgUPo+dEv~ZVL#Y#YSn)HOI@|^Deisa*_l)mT;02B5Y7x1AAXsvIolqwCf2Y_dPdu| zAT_D9U}L+6tB`3m5E0dW|CqBwB_SWN$y&TCWY@8N+vSetQct2Hg>l1@wZvCU*uhvm z4aCN>7O#tlJ!9I#Em!e~jDkE$!G+oCNNc(^x9*UAC(6 zJk|Eqi(L9>J^fQIsj_WQzFlUd#1P@jD$;G!zSgnTH{1$31zry38?7pBnH40xYF=9? zNZyBki4geCc{~r>7aUxx?7$XN4?CV!H^oK^7d@R+4reA~ma?K5bE(-=r^N;R{@9FK zczz>9T&pv(!e=Z5NHpB&JzDc!Q1`o=tXEI>M5)955BSwkALPc%R)t?qpcJu>L|mK& zj1+dHAr1CnbgM6{SUTL=-#*>|>B^S;ZpZVpXA8aQ^~9SZ!UnunF{mQ(VcMRnExB9n z$XxB?m`u6Qs|#F+OUeH0bL54-$Qe5f`%W;6KV`l71DqU;v7CKiz>VIU7P3<0+F0nf z&#{=J$UfGGc>7}l)3{ec$zi%Zz4k5X;`)qQhLKL5cWepqlhfGxFmz>c!uM`6rk!aE zPYlm^2iL!=Q%}Ngcg3+CaD1@K*OZpO9nj*wA37aHGG7*#> zL@1dQzAQ79Rk?(*pEk~_c<(i*xqq?BzNe&2{d(_y_Ch$DJNDi}32QpwG8eiPF7y5Q z<nyay)}v9)6_mj@4YQvYF1rD4ak!FlWao*Xnf~UH@R1CI26`M! zmI^K&`BI_0h%4F+F|K2L-WR`fXk4Wx=!ov6!gI*J690#lQ{9Hij$_@1KnbItif)|I z@^t<p>rx<)VvdJKPW@5Kf9G1isTv;)h2eW_8`K zmQ7-;D?YM^YwlN0XpQ=RBJUH57iS6x+DqZmD(4i!<|;VD(`fc-@jEkM6Ef;o->!Ta zGa|Z(9-BZIXBo5WBk4}0qrZZCLblFZ^4#3?@z&d zp3!k?-GvalbEX(_1~L9tpVb=QIO&Os{K4dDSu& zGN&V|iSOnwiZnE_7aD$$zDQa^?sZv*Kw1`6iKSV@o?C}C(~Q5uP6)L|`V^;kGa6X$ z(r_Qg@)$+fenQ0RQ51sxLv@*yft{W&a?+-Scq{)v@|)?dP*gD}30oIA82ywBbFv_+i{f;g8FzJVi0&$Gq0B8AKc< zMfTHf9e6{-qG#`*2W!BG1lv!y%V=xr76INguT}d9L5W=RO%MJ%f zG!C%J^Wn*}ycaJm@0sQOBaK%}K`O{o?HaJ0ma(Xonys8k za*e5IANgZL{R#=SCOUJ7$j^^0b1;E(dCdn1Z|zA3eUKH`-W;ypmNV#T%dZ;MQWsUw z2#%%>Ns_vF5Jy>>UbxTBcMYoK(6za&Wr`_&=hAU!1}S!ekO zspuLK1-ce}<`K-E$znNRsBxwXdb{#lyQ4$(`ZpT4LoDYTT#RpI z3ZwEP><$LrT`I)YgHr5QWzaP{_+6L|Bkam)!#>TT#$2?OV&&39roe3oV(ki4XDQ8{AXRdIm5Oq9JY zZsbUK@vPE+Hqp|R-#H<@?f1svlB|e4!TV^(t$BZtbZsECF(?g4SK5-Fb{&sfGek~6 zkio{yWFq!(Z7SJnc`EP#9WMnucHd9;(~Q8SeTOb^De-`9Zm4>ZyB{ZS;T5s5pP4jA zqAt`o?$rh}WD~>fu(?Iwn2MpBJUaEfu0R6T~(^G!0h$4yaMMbx@}?OZM8yO7Yi+%E|X|p8|D8kS`0kwTiiQV9uA5h zdgX!$=0?j020Hd+`Zi@Ygbt;Sw&K?j$(M^YdIrj)iU$KLD#ba$6JrwJBSd)mdDRYE zn~HA=`3`|!n07BlPn`Z39exyl^4dlr*LH≷Go?Uz|$)plA$E*_5!nUb{I7Cei2& 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 literal 0 HcmV?d00001 diff --git a/website/src/assets/og-card.svg b/website/src/assets/og-card.svg new file mode 100644 index 0000000..8a5da1a --- /dev/null +++ b/website/src/assets/og-card.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + RELational PLAYground + + + RDBMS Playground + + + + Learn relational databases by doing. + + relplay.org +