repos

blog.bythewood.me-rust

mirror archived upstream

Single-binary self-hosted Markdown blog on Rust axum: no database, live search, Typst PDF export, and strong SEO.

axumblogdockermarkdownminijinjarustself-hostedtypstvite

1.2 KB · 22 lines · XML Raw History
 1<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630">
 2  <defs>
 3    <linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="0%">
 4      <stop offset="0%" style="stop-color:#0e3ff4"/>
 5      <stop offset="100%" style="stop-color:#842bff"/>
 6    </linearGradient>
 7  </defs>
 8  <rect width="1200" height="630" fill="#0d1117"/>
 9  <rect x="80" y="80" width="5" height="160" fill="url(#accent)"/>
10  {% for line in title_lines %}
11  <text x="110" y="{{ 150 + loop.index0 * 64 }}" font-family="sans-serif" font-size="54" font-weight="bold" fill="#f0f6fc" letter-spacing="-0.01em">{{ line }}</text>
12  {% endfor %}
13  <line x1="80" y1="490" x2="1120" y2="490" stroke="#30363d" stroke-width="1"/>
14  <text x="80" y="548" font-family="sans-serif" font-size="28" fill="#c9d1d9">Isaac Bythewood</text>
15  {% if tags %}
16  {% for tag in tags[:4] %}
17  <rect x="{{ 1120 - (tags[:4]|length - loop.index0) * 140 }}" y="520" width="128" height="38" rx="19" fill="#21262d"/>
18  <text x="{{ 1120 - (tags[:4]|length - loop.index0) * 140 + 64 }}" y="545" text-anchor="middle" font-family="sans-serif" font-size="18" fill="#c9d1d9">{{ tag }}</text>
19  {% endfor %}
20  {% endif %}
21</svg>