Content Schemas
This reference documents the structure and validation rules for all content types in the site.
These schemas define what fields are required, what types they accept, and what validation rules
apply. The documentation below is auto-generated directly from the Zod schemas in src/content.config.ts, so it's always in sync with the actual code—no manual updates needed.
Use this reference when creating or editing content to understand what fields are available, which ones are required, and what format they expect. Each schema includes an example to help you get started quickly.
Articles
Technical guides, tutorials, and blog posts
src/content/articles/*.md
·
Browse on GitHub ↗
Example
---
title: "Getting Started with FT8"
description: "A beginner's guide to digital modes"
author: "Jane Smith, W1ABC"
date: 2026-01-15
tags: ["digital-modes", "ft8", "beginner"]
featured: true
---
Fields
Documentation
Reference documentation and technical specs
src/content/docs/*.md
·
Browse on GitHub ↗
Example
---
title: "Antenna Theory Basics"
description: "Understanding antenna fundamentals"
author: "John Doe, K2XYZ"
date: 2026-01-10
section: "antennas"
order: 1
---
Fields
Events
Meetings, field days, contests, and activities
src/content/events/{date}-{slug}/index.md
·
Browse on GitHub ↗
Example
---
title: "January Meeting"
description: "Monthly club meeting"
author: "Club Secretary"
eventDate: 2026-01-20
startTime: "6:00 PM"
endTime: "8:30 PM"
venue: "building-31"
onlineMeeting: "microhams-teams"
eventType: "meeting"
---
Fields
Pages
General site pages
src/content/pages/*.md
·
Browse on GitHub ↗
Example
---
title: "About Us"
description: "Learn about our club"
layout: "default"
---
Fields
Images
Technical requirements for images in content. For editorial guidance (rights, composition, alt text), see the Editorial Guidelines.
Hosting requirements
All images must be hosted in this repository. Never link to images on external websites—they can change, disappear, or create legal issues. The only exception is linking to official sources (e.g., ARRL logos from arrl.org) when specifically required by licensing terms.
File location
Place images in the same folder as your content file, then reference them with a relative path:
src/content/events/2026-01-january-meeting/
├── index.md
├── cover.jpg # Referenced as ./cover.jpg
└── diagram.png # Referenced as ./diagram.png Size requirements
| Constraint | Requirement | Why |
|---|---|---|
| Minimum width | 800px | Ensures clarity on high-DPI displays |
| Maximum width | 2400px | Larger provides no benefit, wastes bandwidth |
| Maximum file size | 500 KB (photos), 100 KB (diagrams) | Fast page loads on mobile connections |
Optimization: Astro automatically generates responsive sizes and converts to WebP format at build time. Provide a high-quality source image and let the build process handle optimization.
Supported formats
| Format | Use for | Notes |
|---|---|---|
.jpg / .jpeg | Photos | Best compression for photographic images |
.png | Screenshots, diagrams with text | Lossless, supports transparency |
.svg | Icons, logos, simple diagrams | Vector format, scales perfectly |
.webp | Any (if already optimized) | Modern format, excellent compression |
SVG and dark mode
SVG files should work in both light and dark modes. Avoid hard-coded colors like
fill="#000000" that become invisible on dark backgrounds.
Options for dark mode compatibility:
- Use
currentColor— inherits text color automatically - Provide two versions —
diagram.svganddiagram-dark.svg - Use CSS variables — reference
var(--color-text)in inline SVG
Cover images
Articles and events can have a cover image that appears in cards and at the top of
the page. Always provide coverAlt with descriptive alt text.
cover: "./cover.jpg"
coverAlt: "Members setting up antennas at the Winter Field Day site"