Something went wrong. Try again.
Central platform for European atproto.<cc> country community websites
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687// @ts-checkimport { defineConfig } from 'astro/config';import starlight from '@astrojs/starlight';import rehypeExternalLinks from 'rehype-external-links';import { writeFile } from 'node:fs/promises';
// docs.atproto.eu - the EU-wide organizer handbook for the AT Protocol community in Europe.//// This is a standalone Astro + Starlight app that lives in the docs/ subfolder of the website// repo. It ships to its own Codeberg Pages repo (atprotoeu-docs-website) from the Tangled Spindle// CI, independent of the eight country builds. One handbook for all countries, so there is no// per-scope build here: it is EU-generic by design.const SITE = 'https://docs.atproto.eu';const REPO = 'https://tangled.org/atcommons.eu/website';
// Codeberg Pages claims a domain from a .domains file at the site root, exactly like the country// builds. Emit it here so a bare `npm run build` produces a deploy-ready dist/.const emitDomains = { name: 'emit-domains', hooks: { 'astro:build:done': async ({ dir }) => { await writeFile(new URL('.domains', dir), 'docs.atproto.eu\n'); }, },};
export default defineConfig({ site: SITE, markdown: { // Open external links (Wikipedia, atproto.eu, mu.social, the repo) in a new tab. Internal doc // links are relative, so they are left alone. rehypePlugins: [[rehypeExternalLinks, { target: '_blank', rel: ['noopener', 'noreferrer'] }]], }, integrations: [ starlight({ // Header shows the //atproto.eu wordmark (logo) followed by the title text, so it reads as // "[//atproto.eu] Community manager handbook". title: 'Community manager handbook', logo: { light: './src/assets/logo-eu.svg', dark: './src/assets/logo-eu-dark.svg', alt: 'atproto.eu', }, // The atproto.eu mark, matching the country sites. Starlight emits the SVG link; add the .ico // for scrapers/readers that request /favicon.ico directly. favicon: '/favicon.svg', head: [ { tag: 'link', attrs: { rel: 'icon', href: '/favicon.ico', sizes: '32x32' } }, ], description: 'Practical guides for running AT Protocol community events and helping out across Europe.', customCss: ['./src/styles/custom.css'], components: { // Append the independent-project notice under the default footer. Footer: './src/components/Footer.astro', }, editLink: { // The handbook source lives in docs/ of the website repo on Tangled. baseUrl: `${REPO}/blob/main/docs/`, }, social: [{ icon: 'external', label: 'Website repo', href: REPO }], sidebar: [ { label: 'Getting started', link: '/' }, { label: 'Event blueprints', items: [ { label: 'Hackathon', link: '/blueprints/hackathon/' }, { label: 'Meetup', link: '/blueprints/meetup/' }, { label: 'Unconference', link: '/blueprints/unconference/' }, ], }, { label: 'Contributing', items: [ { label: 'Translations', link: '/contributing/translations/' }, { label: 'Report a bug', link: '/contributing/report-a-bug/' }, { label: 'Request a feature', link: '/contributing/request-a-feature/' }, ], }, { label: 'Verification', link: '/verification/' }, { label: 'Code of conduct', link: '/code-of-conduct/' }, ], }), emitDomains, ],});