diff --git a/src/content.config.ts b/src/content.config.ts index 4051241..edf4c20 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -23,7 +23,8 @@ const projects = defineCollection({ description: z.string(), tags: z.array(z.string()), image: image(), - link: z.string().url(), + link: z.string().url().optional(), + order: z.number().optional(), startDate: z.coerce.date().optional(), endDate: z.coerce.date().optional(), }), diff --git a/src/lib/data-utils.ts b/src/lib/data-utils.ts index bc3bfad..9e8ca91 100644 --- a/src/lib/data-utils.ts +++ b/src/lib/data-utils.ts @@ -105,17 +105,12 @@ export async function getPostsByTag( export async function getAllProjects(): Promise[]> { const projects = await getCollection('projects') - return projects - .sort((a, b) => (b.data.startDate?.valueOf() ?? 0) - (a.data.startDate?.valueOf() ?? 0)) + return projects.sort((a, b) => (a.data.order ?? Infinity) - (b.data.order ?? Infinity)) } -const FEATURED_PROJECT_IDS = ['homelab', 'chitai', 'cue', 'portfolio'] - export async function getFeaturedProjects(): Promise[]> { const projects = await getAllProjects() - return FEATURED_PROJECT_IDS - .map(id => projects.find(p => p.id === id)) - .filter((p): p is CollectionEntry<'projects'> => p !== undefined) + return projects.slice(0, 4) } export async function getProjectsFeaturedTags(maxCount: number): Promise {