feat(seo): add Dutch metadata, social previews, and JSON-LD

- Update all meta tags to Dutch (nl_NL locale)
- Add Open Graph and Twitter Card tags with image alt text
- Add JSON-LD structured data (WebApplication schema)
- Add favicon assets (svg, ico, png, apple-touch-icon)
- Add social preview image (og-image.png, 1200x630)
- Update theme color to #560fd9
This commit is contained in:
Oussama Douhou
2026-01-10 23:35:01 +01:00
parent e0b09bc5c0
commit 897a8281a7
7 changed files with 114 additions and 1 deletions

59
src/frontend/og-image.svg Normal file
View File

@@ -0,0 +1,59 @@
<svg width="1200" height="630" viewBox="0 0 1200 630" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="backgroundGradient" x1="0" y1="0" x2="1200" y2="630">
<stop offset="0%" stop-color="#1e1b4b" />
<stop offset="100%" stop-color="#312e81" />
</linearGradient>
<pattern id="grid" width="20" height="20" patternUnits="userSpaceOnUse">
<path d="M 20 0 L 0 0 0 20" fill="none" stroke="rgba(129, 140, 248, 0.1)" stroke-width="1"/>
</pattern>
</defs>
<!-- Background -->
<rect width="1200" height="630" fill="url(#backgroundGradient)" />
<rect width="1200" height="630" fill="url(#grid)" />
<!-- FLEXINIT Branding -->
<text x="60" y="85" font-family="sans-serif" font-size="22" font-weight="bold" fill="rgba(255, 255, 255, 0.7)" letter-spacing="2">
FLEXINIT AI
</text>
<!-- Main Content -->
<g transform="translate(60, 220)">
<!-- Title -->
<text font-family="sans-serif" font-size="72" font-weight="bold" fill="#ffffff">
<tspan x="0" dy="0">AI Stack</tspan>
<tspan x="0" dy="80">Deployer</tspan>
</text>
<!-- Subtitle -->
<text x="0" y="200" font-family="sans-serif" font-size="24" fill="rgba(224, 231, 255, 0.8)">
Deploy your personal AI coding assistant in seconds.
</text>
<!-- URL Input visualization -->
<g transform="translate(0, 280)">
<rect x="0" y="0" width="550" height="60" rx="8" fill="rgba(0,0,0,0.2)" />
<text x="20" y="40" font-family="monospace" font-size="24" fill="#a5b4fc">
yourname<tspan fill="#e0e7ff">.ai.flexinit.nl</tspan>
</text>
<rect x="515" y="15" width="4" height="30" fill="#6366f1">
<animate attributeName="opacity" values="0;1;0" dur="1s" repeatCount="indefinite" />
</rect>
</g>
</g>
<!-- Abstract Graphic -->
<g transform="translate(750, 100)">
<!-- Terminal Icon -->
<path d="M80 0 L320 0 C342.091 0 360 17.909 360 40 L360 320 C360 342.091 342.091 360 320 360 L40 360 C17.909 360 0 342.091 0 320 L0 80"
fill="none" stroke="#6366f1" stroke-width="3" />
<path d="M40 40 L80 80 L40 120" fill="none" stroke="#a5b4fc" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
<path d="M100 115 L160 115" fill="none" stroke="#a5b4fc" stroke-width="4" stroke-linecap="round" />
<!-- Stack Elements -->
<rect x="80" y="220" width="280" height="80" rx="10" fill="rgba(99, 102, 241, 0.2)" />
<rect x="100" y="200" width="280" height="80" rx="10" fill="rgba(99, 102, 241, 0.3)" />
<rect x="120" y="180" width="280" height="80" rx="10" fill="rgba(99, 102, 241, 0.4)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB