--- import type { CollectionEntry } from "astro:content"; import { getCollection } from "astro:content"; import { Image } from "astro:assets"; import Footer from "../components/Footer.astro"; import Navbar from "../components/Navbar.astro"; import BaseLayout from "../layouts/BaseLayout.astro"; import type { TagCount } from "../types/i-blog"; type BlogPost = CollectionEntry<"blog">; const allPosts: BlogPost[] = await getCollection("blog"); const sortedPosts: BlogPost[] = allPosts .filter((post: BlogPost) => !post.data.draft) .sort((a: BlogPost, b: BlogPost) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf()); const allTags: Record = sortedPosts.reduce( (acc: Record, post: BlogPost) => { post.data.tags.forEach((tag: string) => { acc[tag] = (acc[tag] || 0) + 1; }); return acc; }, {} as Record, ); const sortedTags: TagCount[] = Object.entries(allTags) .sort((a: [string, number], b: [string, number]) => b[1] - a[1]) .map(([tag, count]: [string, number]): TagCount => ({ tag, count })); const initialPosts: BlogPost[] = sortedPosts.slice(0, 6); ---

Blog

Thoughts, experiences, and insights about software engineering, technology, and life

{ initialPosts.map((post: BlogPost) => ( )) }