Add tagline and docs SEO infrastructure
Hero tagline: "It's not rocket science. (It's celestial mechanics. But now it's just SQL.)" across README, index.mdx, and meta description. Add astro-icon with Lucide icon set, astro-seo-meta, and astro-opengraph-images (blackAndWhite preset, Inter font). Override Starlight Head component to inject og:image and twitter card tags with auto-generated 1200x630 PNG images for all 37 pages.
This commit is contained in:
parent
bcf460a6ff
commit
86a2e386b7
@ -1,6 +1,6 @@
|
||||
# pg_orbit
|
||||
|
||||
Solar system computation for PostgreSQL.
|
||||
*It's not rocket science.* (It's celestial mechanics. But now it's just SQL.)
|
||||
|
||||
pg_orbit moves orbital mechanics inside your database. Track satellites, compute
|
||||
planet positions, observe 19 planetary moons, predict Jupiter radio bursts, and
|
||||
|
||||
@ -4,15 +4,19 @@ import tailwindcss from "@tailwindcss/vite";
|
||||
import remarkMath from "remark-math";
|
||||
import rehypeKatex from "rehype-katex";
|
||||
import mermaid from "astro-mermaid";
|
||||
import icon from "astro-icon";
|
||||
import opengraphImages, { presets } from "astro-opengraph-images";
|
||||
import * as fs from "fs";
|
||||
|
||||
export default defineConfig({
|
||||
site: "https://pg-orbit.warehack.ing",
|
||||
integrations: [
|
||||
icon(),
|
||||
mermaid(),
|
||||
starlight({
|
||||
title: "pg_orbit",
|
||||
description:
|
||||
"Solar system computation for PostgreSQL",
|
||||
"It's not rocket science. Celestial mechanics for PostgreSQL.",
|
||||
favicon: "/favicon.svg",
|
||||
logo: {
|
||||
src: "./src/assets/pg-orbit-logo.svg",
|
||||
@ -39,6 +43,9 @@ export default defineConfig({
|
||||
},
|
||||
},
|
||||
],
|
||||
components: {
|
||||
Head: "./src/components/Head.astro",
|
||||
},
|
||||
sidebar: [
|
||||
{
|
||||
label: "Getting Started",
|
||||
@ -107,6 +114,29 @@ export default defineConfig({
|
||||
},
|
||||
],
|
||||
}),
|
||||
opengraphImages({
|
||||
options: {
|
||||
fonts: [
|
||||
{
|
||||
name: "Inter",
|
||||
weight: 400,
|
||||
style: "normal",
|
||||
data: fs.readFileSync(
|
||||
"node_modules/@fontsource/inter/files/inter-latin-400-normal.woff"
|
||||
),
|
||||
},
|
||||
{
|
||||
name: "Inter",
|
||||
weight: 700,
|
||||
style: "normal",
|
||||
data: fs.readFileSync(
|
||||
"node_modules/@fontsource/inter/files/inter-latin-700-normal.woff"
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
render: presets.blackAndWhite,
|
||||
}),
|
||||
],
|
||||
|
||||
markdown: {
|
||||
|
||||
2318
docs/package-lock.json
generated
2318
docs/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -12,9 +12,14 @@
|
||||
"@astrojs/starlight": "^0.37.6",
|
||||
"@fontsource/inter": "^5.0.0",
|
||||
"@fontsource/jetbrains-mono": "^5.0.0",
|
||||
"@iconify-json/lucide": "^1.2.91",
|
||||
"astro": "^5.17.2",
|
||||
"astro-icon": "^1.1.5",
|
||||
"astro-mermaid": "^1.3.1",
|
||||
"astro-opengraph-images": "^1.14.3",
|
||||
"astro-seo-meta": "^5.2.0",
|
||||
"katex": "^0.16.28",
|
||||
"react": "^19.2.4",
|
||||
"rehype-katex": "^7.0.1",
|
||||
"remark-math": "^6.0.0",
|
||||
"sharp": "^0.33.0"
|
||||
|
||||
25
docs/src/components/Head.astro
Normal file
25
docs/src/components/Head.astro
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
/**
|
||||
* Extends Starlight's built-in Head with OG image and Twitter card tags.
|
||||
*
|
||||
* Starlight already generates: og:title, og:type, og:url, og:locale,
|
||||
* og:description, og:site_name, twitter:card, meta description.
|
||||
*
|
||||
* We add: og:image, twitter:image, twitter:title, twitter:description.
|
||||
*/
|
||||
import Default from "@astrojs/starlight/components/Head.astro";
|
||||
import { getImagePath } from "astro-opengraph-images";
|
||||
|
||||
const route = Astro.locals.starlightRoute;
|
||||
const title = route?.entry?.data?.title ?? "pg_orbit";
|
||||
const description =
|
||||
route?.entry?.data?.description ||
|
||||
"It's not rocket science. Celestial mechanics for PostgreSQL.";
|
||||
const ogImageUrl = getImagePath({ url: Astro.url, site: Astro.site });
|
||||
---
|
||||
|
||||
<Default {...Astro.props}><slot /></Default>
|
||||
<meta property="og:image" content={ogImageUrl} />
|
||||
<meta name="twitter:image" content={ogImageUrl} />
|
||||
<meta name="twitter:title" content={title} />
|
||||
<meta name="twitter:description" content={description} />
|
||||
@ -3,7 +3,7 @@ title: pg_orbit Documentation
|
||||
description: Solar system computation for PostgreSQL
|
||||
template: splash
|
||||
hero:
|
||||
tagline: Track satellites, compute planet positions, observe 19 planetary moons, predict Jupiter radio bursts, and plan interplanetary trajectories — all from standard SQL.
|
||||
tagline: "It's not rocket science. (It's celestial mechanics. But now it's just SQL.)"
|
||||
image:
|
||||
file: ../../assets/hero-elephant-orbit.svg
|
||||
alt: PostgreSQL elephant orbiting a planet
|
||||
@ -28,8 +28,9 @@ import { Card, CardGrid, LinkCard } from "@astrojs/starlight/components";
|
||||
points, and topocentric observation — all as SQL functions.
|
||||
</Card>
|
||||
<Card title="Observe the solar system" icon="sun">
|
||||
Eight planets via VSOP87, the Sun, the Moon via ELP2000-82B, 19 planetary
|
||||
moons across Jupiter, Saturn, Uranus, and Mars. Stars from J2000 catalog
|
||||
Eight planets via VSOP87 (built-in) or optional JPL DE440/441 (~0.1
|
||||
milliarcsecond). The Sun, the Moon via ELP2000-82B, 19 planetary moons
|
||||
across Jupiter, Saturn, Uranus, and Mars. Stars from J2000 catalog
|
||||
coordinates. Comets and asteroids from Keplerian elements.
|
||||
</Card>
|
||||
<Card title="Predict radio bursts" icon="star">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user