diff --git a/package.json b/package.json index b747621..f988f0a 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,8 @@ "astro": "7.1.6" }, "devDependencies": { + "@11ty/gray-matter": "^3.0.0", + "@bryanguffey/astro-standard-site": "^1.0.3", "prettier": "^3.8.1", "prettier-plugin-astro": "^0.14.1", "sass": "^1.89.2" diff --git a/src/components/ShareDialog.astro b/src/components/ShareDialog.astro index 80d1ec7..3567b61 100644 --- a/src/components/ShareDialog.astro +++ b/src/components/ShareDialog.astro @@ -77,7 +77,7 @@ const url = Astro.url.pathname; canonicalUrl="" websiteName="clembs.com" title={post.title} - description={post.summary} + description={post.lede} image={post.bannerPath ? { url: post.bannerPath, diff --git a/src/content.config.ts b/src/content.config.ts index 5c8d392..8ded7ac 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -10,7 +10,7 @@ const blog = defineCollection({ schema: ({ image }) => z.object({ title: z.string(), - summary: z.string(), + lede: z.string(), createdAt: z.coerce.date(), lastEditedAt: z.coerce.date().optional(), bannerPath: image().optional(), diff --git a/src/content/blog/clembs-2023/en.mdx b/src/content/blog/clembs-2023/en.mdx index d10248e..3bd07e5 100644 --- a/src/content/blog/clembs-2023/en.mdx +++ b/src/content/blog/clembs-2023/en.mdx @@ -1,6 +1,6 @@ --- title: Clembs - Nice to meet you again -summary: Designed my own brand identity from the ground up, centered around my online presence and livestreaming. +lede: Designed my own brand identity from the ground up, centered around my online presence and livestreaming. createdAt: 2023-07-05 bannerPath: ./_banner.png bannerThumbnailPath: /small-banners/clembs-2023.webp diff --git a/src/content/blog/clembs-2025/en.mdx b/src/content/blog/clembs-2025/en.mdx index 7d7fb0d..8191063 100644 --- a/src/content/blog/clembs-2025/en.mdx +++ b/src/content/blog/clembs-2025/en.mdx @@ -1,6 +1,6 @@ --- title: The new Clembs.com website — Lean, colorful & chill -summary: Thoughts and neat facts about the new place for my stuff, rebuilt from the ground up after 4 years of experience in web design. +lede: Thoughts and neat facts about the new place for my stuff, rebuilt from the ground up after 4 years of experience in web design. createdAt: 2025-08-27 bannerPath: ./_banner.png bannerThumbnailPath: /small-banners/clembs-2025.webp @@ -75,7 +75,7 @@ Old clembs.com used [MDsveX](https://mdsvex.pngwn.io) (basically MDX for Svelte) ```yaml title: Clembs.com 2025 - Leaner, star-fueled -summary: Thoughts and neat facts about the new place for my stuff, rebuilt from the ground up after 4 years of experience in web design. +lede: Thoughts and neat facts about the new place for my stuff, rebuilt from the ground up after 4 years of experience in web design. createdAt: 2025-08-24 bannerPath: ./_banner.png projectUrl: https://clembs.com diff --git a/src/content/blog/clembs-2025/fr.mdx b/src/content/blog/clembs-2025/fr.mdx index 221a9d2..8f88988 100644 --- a/src/content/blog/clembs-2025/fr.mdx +++ b/src/content/blog/clembs-2025/fr.mdx @@ -1,6 +1,6 @@ --- title: Le nouveau site Clembs.com — Léger, simplifié & coloré -summary: Pensées et astuces sur ce nouvel endroit pour mes travaux, reconstruit de zéro avec mes 4 années d'expérience en web design. +lede: Pensées et astuces sur ce nouvel endroit pour mes travaux, reconstruit de zéro avec mes 4 années d'expérience en web design. createdAt: 2025-08-27 bannerPath: ./_banner-fr.png bannerThumbnailPath: /small-banners/clembs-2025.webp @@ -77,7 +77,7 @@ Le vieux clembs.com utilisait [MDsveX (EN)](https://mdsvex.pngwn.io) (essentiell ```yaml title: Le nouveau site Clembs.com — Léger, simplifié & coloré -summary: Pensées et astuces sur ce nouvel endroit pour mes travaux, reconstruit de zéro avec mes 4 années d'expérience en web design. +lede: Pensées et astuces sur ce nouvel endroit pour mes travaux, reconstruit de zéro avec mes 4 années d'expérience en web design. createdAt: 2025-08-27 bannerPath: ./_banner-fr.png projectUrl: https://clembs.com diff --git a/src/content/blog/crbt-website/en.mdx b/src/content/blog/crbt-website/en.mdx index 34c71ca..e033945 100644 --- a/src/content/blog/crbt-website/en.mdx +++ b/src/content/blog/crbt-website/en.mdx @@ -1,6 +1,6 @@ --- title: CRBT - The perfect just-about-anything Discord app -summary: New landing page and identity work for CRBT, including a full website redesign and promotional assets. +lede: New landing page and identity work for CRBT, including a full website redesign and promotional assets. createdAt: 2023-01-25 lastEditedAt: 2025-08-16 projectUrl: https://crbt.app diff --git a/src/content/blog/kikuri/en.mdx b/src/content/blog/kikuri/en.mdx index dddcd6a..f640c0e 100644 --- a/src/content/blog/kikuri/en.mdx +++ b/src/content/blog/kikuri/en.mdx @@ -1,6 +1,6 @@ --- title: Kikuri - The fun and casual card collecting Discord bot -summary: First client work for an anime-themed Discord application, leveraging Kikuri’s brand to design a brand new website. +lede: First client work for an anime-themed Discord application, leveraging Kikuri’s brand to design a brand new website. createdAt: 2023-06-23 clientText: Freelance work paid for by Kikuri Bot bannerPath: ./_banner.png diff --git a/src/content/blog/pns-2025/en.mdx b/src/content/blog/pns-2025/en.mdx index 8812f8f..717c39c 100644 --- a/src/content/blog/pns-2025/en.mdx +++ b/src/content/blog/pns-2025/en.mdx @@ -1,6 +1,6 @@ --- title: PNS - Make Way for the New Energy -summary: With 4 friends, we founded a student club to organize the best gaming tournaments on campus. As well as leading, I was in charge of branding. +lede: With 4 friends, we founded a student club to organize the best gaming tournaments on campus. As well as leading, I was in charge of branding. createdAt: 2025-08-31 clientText: Volunteer work for the PNS association bannerPath: ./_banner.png diff --git a/src/content/blog/pns-2025/fr.mdx b/src/content/blog/pns-2025/fr.mdx index c86ce29..3c57948 100644 --- a/src/content/blog/pns-2025/fr.mdx +++ b/src/content/blog/pns-2025/fr.mdx @@ -1,6 +1,6 @@ --- title: Design pour PNS - Faites place à la nouvelle énergie -summary: Avec 4 amis, nous avons fondé une association étudiante pour organiser les meilleurs tournois de jeux vidéo. En plus de présider, je me suis chargé de l'infographisme. +lede: Avec 4 amis, nous avons fondé une association étudiante pour organiser les meilleurs tournois de jeux vidéo. En plus de présider, je me suis chargé de l'infographisme. createdAt: 2025-08-31 clientText: Travail bénévole pour l'association PNS bannerPath: ./_banner.png diff --git a/src/content/blog/purplet/en.mdx b/src/content/blog/purplet/en.mdx index f908567..c015d6c 100644 --- a/src/content/blog/purplet/en.mdx +++ b/src/content/blog/purplet/en.mdx @@ -1,6 +1,6 @@ --- title: Purplet - Next-gen tools to build modern Discord apps -summary: Brand design for the tooling suite to build Discord apps, under the CRBT umbrella. +lede: Brand design for the tooling suite to build Discord apps, under the CRBT umbrella. createdAt: 2022-10-18 lastEditedAt: 2025-08-03 bannerPath: ./_banner.png diff --git a/src/content/blog/uniten-internship/fr.mdx b/src/content/blog/uniten-internship/fr.mdx index 18d7afb..5487cff 100644 --- a/src/content/blog/uniten-internship/fr.mdx +++ b/src/content/blog/uniten-internship/fr.mdx @@ -1,6 +1,6 @@ --- title: UNITEN - Stage de fin d'année 2025 -summary: Le compte rendu complet de mon stage de 8 semaines à UNITEN. Redesigns et réflexions sur une application novatrice d'une startup émergente. +lede: Le compte rendu complet de mon stage de 8 semaines à UNITEN. Redesigns et réflexions sur une application novatrice d'une startup émergente. createdAt: 2025-06-19 clientText: Travail réalisé dans le cadre d'un stage pour Martin PASQUIER bannerPath: ./_banner.png diff --git a/src/layouts/Blog.astro b/src/layouts/Blog.astro index df4c2f9..e9bc8d4 100644 --- a/src/layouts/Blog.astro +++ b/src/layouts/Blog.astro @@ -38,7 +38,7 @@ const t = useTranslations(lang); b.data.createdAt.getTime() - a.data.createdAt.getTime()); - -const categories = Array.from(new Set(posts.map(({ data }) => data.category))).map((cId) => ({ - id: cId, - posts: uniquePostsWithLang.filter(({ data }) => data.category === cId), -})); ---
-
-

{t('blog.short_title')}

- -

{t('blog.description')}

-
- - { - categories.map((category) => ( - + + + {post.data.bannerPath && ( + {post.data.bannerAlt + )} + + + )) + } +