Skip to content

Repository files navigation

openpreflight — A small CI provider for private repos. One Go binary, one SQLite file: register a GitHub App, enable your repos, and get one Check Run per commit.

openpreflight website

The marketing site, published at https://openpreflight.xyz. Astro + Tailwind v4, static output. Positioning pages plus a branded 404; how-to lives on docs.openpreflight.xyz. The product it describes is v1.0.0 (GitHub Release).

Reference documentation lives on a separate site, openpreflight/docs, at docs.openpreflight.xyz. Keep the copy here to positioning and link out for anything a reader would need to follow. Instructions duplicated here would go stale first.

Local development

npm ci
npm run dev

Structure

  • src/pages/index.astro: the marketing homepage
  • src/pages/: Product, Why, Self-hosted, Security, and the other hub routes
  • src/pages/404.astro: branded not-found
  • src/layouts/MarketingPage.astro: header/footer chrome for inner pages; the pages themselves compose full-bleed sections
  • src/lib/site.ts: siteSections is the canonical site map — the header nav, the footer, and the 404 all render it, so a route cannot exist without being reachable from every page
  • src/components/marketing/: the subpage system — PageHero, Section, Card/Grid, Steps, MarkList, CodePanel, CheckRunPanel, Callout, Faq, Prose, CtaLink/Actions
  • src/components/blocks/, src/components/ui/: Rivelle blocks and primitives used by the homepage template
  • src/layouts/Layout.astro: head, meta, OG tags, header/footer chrome
  • src/styles/global.css: product-green palette, JetBrains Mono, light/dark via prefers-color-scheme
  • public/: favicon set, og.png, the README banner pair, robots.txt
  • scripts/: gen-icons.mjs (favicons), gen-banner.mjs (README banner)

Brand images

This repository generates the shared brand images the other repos link to, so there is one copy of each rather than a binary committed three times.

node scripts/gen-icons.mjs    # favicons -> website/public/ and ../docs/public/
node scripts/gen-banner.mjs   # banner-light.png + banner-dark.png

gen-banner.mjs renders the banner through headless Chrome — the fonts are the same @fontsource woff2 files the site loads, which sharp cannot rasterise on its own. Set CHROME_PATH if Chrome is not at the macOS default location.

The banner is served from https://openpreflight.xyz/banner-{light,dark}.png and embedded by the READMEs in openpreflight, docs, and this repository. A change to the tagline or the mark means regenerating it here and redeploying — the other repos need no edit.

Editing the copy

The positioning text tracks the code repo's README. When that changes, change it here too, and prefer its phrasing over rewriting it into marketing voice.

Deployment

Cloudflare Pages. Root directory is the repository root, build command pnpm run build, output dist. This repository uses pnpm — there is a pnpm-lock.yaml and CI runs pnpm install --frozen-lockfile. Sitemap is generated by @astrojs/sitemap.

MIT licensed.

About

Marketing site for openpreflight. Astro + Tailwind, static output.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages