informix-db/docs-site/astro.config.mjs
Ryan Malloy 21c47385ae Prose rebrand: informix-db → informix-driver across docs site
Sweep all backticked + bold + table-cell + heading mentions of the
project's brand to match the PyPI distribution name and the docs domain.
Path references (`cd informix-db`, `git.supported.systems/.../informix-db`)
stay — those reference the actual Gitea repo directory which we did NOT
rename. Same with `import informix_db` (Python module name, separate
from distribution brand).

Also flip GitHub references to Gitea throughout the docs site:
- `github.com/rsp2k/informix-db/blob/main/X` → Gitea `/src/branch/main/X`
- `github.com/rsp2k/informix-db/tree/main/X` → Gitea same path
- `github.com/rsp2k/informix-db` (plain) → Gitea
- Hero "GitHub" CTA button → Gitea source URL
- Social icon: `github` → `seti:git` (generic git icon, not octocat)

Net result: zero stale GitHub references, brand consistency matches what
users `pip install`.
2026-05-08 05:43:07 -06:00

120 lines
3.8 KiB
JavaScript

// @ts-check
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';
const DEV_DOMAIN = process.env.DEV_DOMAIN ?? 'informix-driver.l.warehack.ing';
// https://astro.build/config
export default defineConfig({
site: 'https://informix-driver.warehack.ing',
server: { host: '0.0.0.0', port: 4321 },
telemetry: false,
devToolbar: { enabled: false },
vite: {
server: {
host: '0.0.0.0',
hmr: {
host: DEV_DOMAIN,
protocol: 'wss',
clientPort: 443,
},
allowedHosts: [DEV_DOMAIN, '.warehack.ing', 'localhost', '127.0.0.1'],
},
},
integrations: [
starlight({
title: 'informix-driver',
description: 'Pure-Python driver for IBM Informix IDS. No CSDK, no JVM, no native libraries.',
logo: { src: './src/assets/logo.svg', replacesTitle: false },
favicon: '/favicon.svg',
tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 4 },
lastUpdated: true,
pagination: true,
editLink: {
baseUrl: 'https://git.supported.systems/warehack.ing/informix-db/_edit/branch/main/docs-site/',
},
social: [
{ icon: 'seti:git', label: 'Source (Gitea)', href: 'https://git.supported.systems/warehack.ing/informix-db' },
{ icon: 'seti:python', label: 'PyPI', href: 'https://pypi.org/project/informix-driver/' },
],
customCss: ['./src/styles/theme.css', './src/styles/components.css'],
components: {
Hero: './src/components/Hero.astro',
Footer: './src/components/Footer.astro',
},
expressiveCode: {
themes: ['github-dark', 'github-light'],
styleOverrides: {
borderRadius: '6px',
codeFontFamily: "'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace",
},
},
head: [
{
tag: 'link',
attrs: { rel: 'preconnect', href: 'https://rsms.me' },
},
{
tag: 'link',
attrs: {
rel: 'stylesheet',
href: 'https://rsms.me/inter/inter.css',
},
},
{
tag: 'meta',
attrs: { name: 'theme-color', content: '#0e0d0c' },
},
{
tag: 'meta',
attrs: { property: 'og:type', content: 'website' },
},
],
sidebar: [
{
label: 'Start here',
items: [
{ label: 'WTF did you build this for?', slug: 'start/wtf' },
{ label: 'Install & first query', slug: 'start/quickstart' },
{ label: 'Compared to IfxPy', slug: 'start/vs-ifxpy' },
],
},
{
label: 'How-to guides',
items: [
{ label: 'Connect with TLS', slug: 'how-to/tls' },
{ label: 'Use the connection pool', slug: 'how-to/pool' },
{ label: 'Async with FastAPI', slug: 'how-to/async-fastapi' },
{ label: 'Bulk inserts (executemany)', slug: 'how-to/executemany' },
{ label: 'Optimize bulk SELECT', slug: 'how-to/buffered-reader' },
{ label: 'BLOB / CLOB read & write', slug: 'how-to/smart-lobs' },
{ label: 'Migrate from IfxPy', slug: 'how-to/migrate-from-ifxpy' },
{ label: 'Run the dev container', slug: 'how-to/dev-container' },
],
},
{
label: 'Reference',
items: [
{ label: 'API surface', slug: 'reference/api' },
{ label: 'SQL ↔ Python types', slug: 'reference/types' },
{ label: 'Configuration & env flags', slug: 'reference/config' },
{ label: 'Exceptions & error codes', slug: 'reference/exceptions' },
{ label: 'Performance baselines', slug: 'reference/benchmarks' },
],
},
{
label: 'Explanation',
items: [
{ label: 'The SQLI wire protocol', slug: 'explain/sqli-protocol' },
{ label: 'Architecture overview', slug: 'explain/architecture' },
{ label: 'The buffered reader (Phase 39)', slug: 'explain/buffered-reader' },
{ label: 'Async strategy', slug: 'explain/async-strategy' },
{ label: 'Pure-Python tradeoffs', slug: 'explain/pure-python' },
{ label: 'The phase log', slug: 'explain/phase-log' },
],
},
],
}),
],
});