Sharing a Bible verse on WhatsApp or other platforms should produce a visually polished image — not just a plain URL. This feature generates a branded verse card as an SVG image and lets users share it directly or download it as a PNG. Social platforms that support Open Graph also pick up the image automatically when the chapter URL is shared.
wa.me deep-link with verse text (truncated to 200 chars), reference, and chapter URL./read/{bookId}/{chapter}) to the clipboard.<canvas>, and triggers a file download named {bookName}-{chapter}-{verse}.png.min(90vw, 500px) wide, dark popup background (rgb(20, 18, 35)), rounded corners.<img> sourcing the /api/og/... endpoint directly.#25d366); Copy and Download use the standard translucent button style.Component: apps/web/src/lib/components/bible/ShareModal.svelte
verse: Verse, bookName: string, onclose: () => void/api/og/{verse.bookId}/{verse.chapter}/{verse.verse}{window.location.origin}/read/{verse.bookId}/{verse.chapter}API Route: apps/web/src/routes/api/og/[bookId]/[chapter]/[verse]/+server.ts
GET handler — returns an SVG string with Content-Type: image/svg+xml.getVerse(bookId, chapter, verseNum).public, max-age=604800, s-maxage=2592000 — verse text is treated as immutable.SVG styling:
linearGradient from #12122a → #1a1a3e → #0f1525radialGradient with 12% opacity purple#e8e0d5; reference: 22px italic #a78bfa#a78bfa lines; outer border stroke #7c3aed at 35% opacityFully implemented. OG route, SVG generator, and share modal are all in place. PNG download via canvas rasterisation is working. The WhatsApp and copy-link flows are functional. Verify that the modal is wired up correctly in the verse context menu.