import { defineCollection, z } from 'astro:content';
const blog = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
// Optional SEO overrides. When set they drive the
tag and
// without changing the on-page article
// heading/excerpt, letting us keep descriptive H1s while tuning the
// search snippet to the 50–60 / 150–160 character sweet spots.
// `seoTitle` is the text BEFORE the " | WorkRoot" brand suffix.
seoTitle: z.string().optional(),
seoDescription: z.string().optional(),
pubDate: z.coerce.date(),
updatedDate: z.coerce.date().optional(),
heroImage: z.string().optional(),
category: z.enum(['Web Development', 'Mobile Apps', 'AI/ML', 'Cloud', 'DevOps', 'Security']),
tags: z.array(z.string()),
author: z.object({
name: z.string(),
avatar: z.string().optional(),
}),
draft: z.boolean().default(false),
}),
});
export const collections = { blog };