Complete website for The Computer Guru Show (radio.azcomputerguru.com): - Astro 6.0.4 static site with React islands - 194 episodes imported from gurushow.com RSS feed - Dark/light mode HSL design system - Persistent audio player with session persistence - Episode archive with search and season filtering - Home page with animated hero, stats, latest episodes - All pages: About, Subscribe, Community, Live, Contact, Blog, 404 - Podcast RSS feed with iTunes namespace - Session log updated Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { defineCollection, z } from 'astro:content';
|
|
import { glob } from 'astro/loaders';
|
|
|
|
const episodes = defineCollection({
|
|
loader: glob({ pattern: '**/*.md', base: './src/content/episodes' }),
|
|
schema: z.object({
|
|
title: z.string(),
|
|
season: z.number(),
|
|
episode: z.number(),
|
|
pubDate: z.coerce.date(),
|
|
duration: z.string(),
|
|
audioUrl: z.string().url(),
|
|
audioSize: z.number(),
|
|
episodeType: z.enum(['full', 'trailer', 'bonus']).default('full'),
|
|
originalUrl: z.string().url().optional(),
|
|
featured: z.boolean().default(false),
|
|
classic: z.boolean().default(false),
|
|
tags: z.array(z.string()).default([]),
|
|
chapters: z.array(z.object({
|
|
time: z.string(),
|
|
title: z.string(),
|
|
})).optional(),
|
|
}),
|
|
});
|
|
|
|
const blog = defineCollection({
|
|
loader: glob({ pattern: '**/*.md', base: './src/content/blog' }),
|
|
schema: z.object({
|
|
title: z.string(),
|
|
pubDate: z.coerce.date(),
|
|
description: z.string(),
|
|
author: z.string().default('Mike Swanson'),
|
|
tags: z.array(z.string()).default([]),
|
|
image: z.string().optional(),
|
|
draft: z.boolean().default(false),
|
|
}),
|
|
});
|
|
|
|
export const collections = { episodes, blog };
|