Public help docs for the Librería de Satoshi course platform (Moodle), served at https://docs.libreriadesatoshi.com. Static site, no login, independent of Moodle.
Built with Astro + Starlight and authored in Markdoc (.mdoc). Jira: ENG-453.
npm install
npm run dev # http://localhost:4321
npm run build # static output in dist/
npm run previewNode 22+ (see .nvmrc).
src/content/docs/
├── index.mdoc # Spanish landing (default locale, served at /)
├── acceso/ # Spanish topics → /acceso/<slug>/
├── cuenta/
└── en/ # English mirror → /en/...
├── index.mdoc
├── acceso/ # same file names as Spanish → /en/acceso/<slug>/
└── cuenta/
Rules:
- Spanish is the source of truth (default locale). Every topic must exist in both languages; keep the same file name under
en/so Starlight can pair them. If an English page is missing, Starlight shows the Spanish one with a notice. - URLs follow the file path in both locales (
/acceso/login-nostr/,/en/acceso/login-nostr/). Do not overrideslugin English pages: Starlight pairs translations by path, and a custom slug breaks the pairing and produces duplicate fallback pages. - Sidebar sections are auto-generated from the directories (
acceso,cuenta). Order pages withsidebar: { order: N }in the frontmatter. New sections: add a directory and register it inastro.config.mjswith its English label. - Use Starlight components as Markdoc tags:
{% aside type="tip" %},{% steps %},{% tabs %},{% linkcard /%},{% cardgrid %}. See https://starlight.astro.build/guides/authoring-content/#markdoc
- Create
src/content/docs/<seccion>/<nombre>.mdocin Spanish withtitle,descriptionandsidebar.order. - Create
src/content/docs/en/<seccion>/<nombre>.mdocin English with the same fields (same file name, noslug). - Link between pages with absolute paths (
/acceso/login-nostr/,/en/acceso/login-nostr/). npm run buildmust pass with no warnings.
Netlify, from netlify.toml (npm run build → dist/). Point docs.libreriadesatoshi.com (Cloudflare DNS) at the Netlify site.
- Open Graph / social preview image (
public/logo_dark_bg.svgis the full lockup; needs a PNG for OG). - Sections
cursos/(enrolment, certificates) once the flows are confirmed with the team. - Contact channel for the "escríbenos / contact us" mentions (support email or form).