Files
frontpage/src/content.config.ts
2026-02-24 23:13:12 +01:00

55 lines
1.7 KiB
TypeScript

import { defineCollection, reference, z } from "astro:content";
import { glob, file } from 'astro/loaders';
const writing = defineCollection({
loader: glob({pattern: "**/*.(md|mdx)", base: "./src/content/wie-man-einen-code-schreibt"}),
schema: z.object({
title: z.string(),
chapter: reference("writingChapters"),
part: z.number(),
subtitle: z.string().optional(),
})
})
const writingChapters = defineCollection({
loader: file("./src/content/wie-man-einen-code-schreibt/chapters.json"),
schema: z.object({
name: z.string(),
order: z.number(),
subtitle: z.string(),
})
});
const projects = defineCollection({
loader: glob({pattern: "**/*.(md|mdx)", base: "./src/content/projects"}),
schema: z.object({
title: z.string(),
site_title: z.string().optional(),
summary: z.string(),
repository: z.string().url().optional(),
relatedWebsite: z.string().url().optional(),
published: z.date(),
tags: z.array(z.string()).optional(),
isDraft: z.boolean().optional(),
subtitle: z.string().optional(),
}),
});
const blog = defineCollection({
loader: glob({pattern: "**/*.(md|mdx)", base: "./src/content/blog"}),
schema: z.object({
title: z.string(),
site_title: z.string().optional(),
relatedWebsite: z.string().url().optional(),
published: z.date(),
summary: z.string().optional(),
tags: z.array(z.string()).optional(),
isDraft: z.boolean().optional(),
subtitle: z.string().optional(),
}),
});
export const collections = { writing, writingChapters, projects, blog };