Skip to content

Content Management

This template is fully Git-based: all content lives as Markdown/JSON files in src/content. Edit the files in your editor (or directly on GitHub) and open a pull request — Cloudflare Pages rebuilds on merge.

Collection Description Files
Pages Marketing pages (about, contact, pricing…) src/content/pages/*.md
Services Service offerings with pricing src/content/services/*.md
Blog Articles and news posts src/content/blog/*.md
Docs Documentation pages src/content/docs/** (Starlight)
Schedule Weekly radio programming fallback (home sidebar) src/content/schedule/*.json

Collection schemas are defined in src/content.config.ts, so frontmatter / JSON shapes are type-checked at build time.

Primary source: client fetch of PUBLIC_SCHEDULE_URL (default http://localhost:8788/programacion). Payload shape: { fetched_at?, days: [{ day, shows: [{ name, hosts[], schedule: "HH:MM - HH:MM" }] }] }.

Fallback: each day file (lunes.json … domingo.json) has id, label, order, and slots[] with start / end (HH:MM), title, optional host.

The home ScheduleBoard prefers the feed, opens today’s tab in America/Santiago, and marks the current slot with an “En vivo” tag (src/lib/schedule.ts). Overnight ends like 21:00→00:00 are supported.

Example slot:

{ "start": "12:00", "end": "15:00", "title": "Mediodía Clave", "host": "Equipo midday" }

Live stream URL / title live in siteConfig.liveStream, not in the schedule collection.

The starter is English-only by default, so each entry uses a plain <slug>.md file (e.g. about.md) with locale: "en" in its frontmatter.

The locale frontmatter field determines which language the content belongs to. When you add another language, create a locale-suffixed copy (e.g. about.id.md with locale: "id"). See the Internationalization guide.

  1. Create or edit a Markdown file under src/content.
  2. Run pnpm dev to preview locally.
  3. Commit and open a pull request.
  4. Merging to main triggers a Cloudflare Pages production deploy.

Images can live in src/assets (optimized by Astro) or in the Cloudflare R2 bucket for larger files. Reference R2 assets via their public URL.