From 653adbe345f53c5510ec0f9b492aa496a8756d77 Mon Sep 17 00:00:00 2001 From: patrick Date: Fri, 27 Mar 2026 14:23:44 -0400 Subject: [PATCH] refactor: update project data type - add order property to set explicit ordering on projects page - make project link optional as not all projects have an accessible link --- src/content.config.ts | 3 ++- src/lib/data-utils.ts | 9 ++------- 2 files changed, 4 insertions(+), 8 deletions(-) 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 {