personal-page/public/config.ts

44 lines
1.1 KiB
TypeScript

import { defineCollection, z } from 'astro:content';
// AstroJS collection configuration
const blog = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
draft: z.boolean().optional(),
tags: z.array(z.string()).optional(),
published_at: z.coerce.date().optional(),
updated_at: z.coerce.date().optional(),
}),
});
const portafolio = defineCollection({
type: 'content',
schema: ({ image }) =>
z.object({
title: z.string(),
draft: z.boolean().optional(),
brief: z.string(),
status: z.enum(['Backlog', 'Activo', 'Fixes', 'Finalizado']),
tags: z.array(z.string()).optional(),
technologies: z.array(z.string()),
created_at: z.coerce.date().optional(),
updated_at: z.coerce.date().optional(),
thumbnail: image().refine((img) => img.width >= 1080, {
message: 'Cover image must be at least 1080 pixels wide!',
}),
timeframe: z.string().optional(),
links: z
.object({
repo: z.string().url(),
url: z.string().url(),
})
.optional(),
}),
});
export const collections = {
blog,
portafolio,
};