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.
Content Collections
Section titled “Content Collections”| 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.
Radio schedule
Section titled “Radio schedule”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.
Locale Convention
Section titled “Locale Convention”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.
Editing Workflow
Section titled “Editing Workflow”- Create or edit a Markdown file under
src/content. - Run
pnpm devto preview locally. - Commit and open a pull request.
- Merging to
maintriggers 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.