--- import type { CollectionEntry } from "astro:content"; import { getCollection } from "astro:content"; import Layout from "../../layouts/BaseLayout.astro"; import PostElement from "../../components/PostElement.astro"; const title = "Valentin Popov's Blog | Software Development, Leadership & Open-Source"; const description = "Explore Valentin Popov's blog on software development, tech leadership, and open-source experiments. Stay updated with in-depth tutorials and expert insights."; const lang = "en"; const posts = await getCollection("blog", ({ data }) => { return data.draft !== true; }); posts.sort((a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime()); const postsByYear = posts.reduce[]>>((acc, post) => { const year = post.data.pubDate.getFullYear().toString(); if (!acc[year]) { acc[year] = []; } acc[year].push(post); return acc; }, {}); const years = Object.keys(postsByYear).sort((a, b) => Number(b) - Number(a)); ---

Blog posts

{ years.map((year) => (

{year}

    {postsByYear[year].map((post) => ( ))}
)) }