This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

feat(seo): seo enhancement

+50 -11
+46 -10
src/layouts/Base.astro
··· 3 3 title: string; 4 4 description: string; 5 5 pageUrl?: string; 6 + imagePath?: string; 6 7 } 7 - const { title, description, pageUrl } = Astro.props; 8 + const { title, description, pageUrl, imagePath } = Astro.props; 8 9 const siteUrl = 'https://pgfirstaid.com'; 9 - const ogImage = `${siteUrl}/og-image.png`; 10 - const ogImageWide = `${siteUrl}/og-image-wide.png`; 10 + // Default to the wide-format image (1200x630) — preferred by Discord, LinkedIn, 11 + // Facebook, Slack, and Twitter. Square image is reserved for tight contexts. 12 + const ogImagePath = imagePath ?? '/og-image-wide.png'; 13 + const ogImage = `${siteUrl}${ogImagePath}`; 11 14 const fullUrl = pageUrl ?? siteUrl; 15 + 16 + const jsonLd = { 17 + '@context': 'https://schema.org', 18 + '@graph': [ 19 + { 20 + '@type': 'Organization', 21 + '@id': `${siteUrl}/#organization`, 22 + name: 'pgFirstAid', 23 + url: siteUrl, 24 + logo: `${siteUrl}/og-image-wide.png`, 25 + sameAs: ['https://github.com/randoneering/pgFirstAid'], 26 + }, 27 + { 28 + '@type': 'SoftwareSourceCode', 29 + '@id': `${siteUrl}/#software`, 30 + name: 'pgFirstAid', 31 + description, 32 + url: fullUrl, 33 + codeRepository: 'https://github.com/randoneering/pgFirstAid', 34 + programmingLanguage: 'SQL', 35 + runtimePlatform: 'PostgreSQL 10+', 36 + license: 'https://opensource.org/licenses/MIT', 37 + author: { '@id': `${siteUrl}/#organization` }, 38 + keywords: 'postgresql, health-check, diagnostics, sql, open-source, firstaid', 39 + }, 40 + ], 41 + }; 12 42 --- 13 43 <!DOCTYPE html> 14 44 <html lang="en"> ··· 20 50 <meta name="viewport" content="width=device-width, initial-scale=1" /> 21 51 <meta name="description" content={description} /> 22 52 <meta name="generator" content={Astro.generator} /> 53 + <meta name="theme-color" content="#0f172a" /> 54 + <meta name="color-scheme" content="light dark" /> 55 + <link rel="canonical" href={fullUrl} /> 56 + <link rel="alternate" type="text/plain" title="LLM summary" href="/llms.txt" /> 57 + <link rel="alternate" type="text/plain" title="LLM full content" href="/llms-full.txt" /> 58 + <link rel="alternate" type="text/plain" title="Agent manifest" href="/agents.txt" /> 59 + <link rel="sitemap" type="application/xml" href="/sitemap-index.xml" /> 23 60 <title>{title}</title> 24 61 25 62 <!-- Open Graph (Discord, LinkedIn, Facebook, Slack, etc.) --> 26 63 <meta property="og:type" content="website" /> 27 64 <meta property="og:site_name" content="pgFirstAid" /> 65 + <meta property="og:locale" content="en_US" /> 28 66 <meta property="og:title" content={title} /> 29 67 <meta property="og:description" content={description} /> 30 68 <meta property="og:url" content={fullUrl} /> ··· 32 70 <meta property="og:image:secure_url" content={ogImage} /> 33 71 <meta property="og:image:type" content="image/png" /> 34 72 <meta property="og:image:width" content="1200" /> 35 - <meta property="og:image:height" content="1200" /> 36 - <meta property="og:image:alt" content="pgFirstAid logo" /> 37 - <meta property="og:image" content={ogImageWide} /> 38 - <meta property="og:image:secure_url" content={ogImageWide} /> 39 - <meta property="og:image:type" content="image/png" /> 40 - <meta property="og:image:width" content="1200" /> 41 73 <meta property="og:image:height" content="630" /> 42 - <meta property="og:image:alt" content="pgFirstAid logo (wide)" /> 74 + <meta property="og:image:alt" content="pgFirstAid logo" /> 43 75 44 76 <!-- Twitter Card --> 45 77 <meta name="twitter:card" content="summary_large_image" /> 46 78 <meta name="twitter:title" content={title} /> 47 79 <meta name="twitter:description" content={description} /> 48 80 <meta name="twitter:image" content={ogImage} /> 81 + <meta name="twitter:image:alt" content="pgFirstAid logo" /> 82 + 83 + <!-- Structured data --> 84 + <script type="application/ld+json" set:html={JSON.stringify(jsonLd)} /> 49 85 50 86 <script is:inline> 51 87 // Apply theme on first paint to avoid FOUC.
+4 -1
src/pages/index.astro
··· 28 28 const managedSupport = page.data.managed_support.join(', '); 29 29 --- 30 30 31 - <Base title={title} description={tagline}> 31 + <Base 32 + title={`${title} - PostgreSQL health-check SQL function`} 33 + description={tagline} 34 + > 32 35 <Header title={title} /> 33 36 34 37 <section id="hero">