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 versionsdiagram.svg and diagram-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"