personal-site.md
This Website
A custom Astro and TypeScript portfolio site for showing some of my work. It's what you're looking at right now.
Overview
This site is a custom portfolio built to show off my projects and games. I wanted the structure to stay simple (relatively!).
New project pages are Markdown files, so updating the portfolio usually means adding one content entry instead of touching layout code. I’d love to chat if you’re looking to create something similar for your portfolio!
Content System
Projects are managed through Astro content collections. The schema keeps each entry consistent: title, summary, ordering, category filters, tags, contributors, images, and optional links.
const projects = defineCollection({
loader: glob({ pattern: '**/*.md', base: './src/content/projects' }),
schema: z.object({
title: z.string(),
summary: z.string(),
brow: z.string().optional(),
subtitle: z.string(),
order: z.number(),
types: z.array(z.string()),
tags: z.array(z.string()),
image: z.string(),
imageAlt: z.string(),
github: z.string().optional(),
}),
});