From e1ec4a112907f4aebad56b2b388eceb3969e6e88 Mon Sep 17 00:00:00 2001
From: Pinapelz
Date: Fri, 12 Jun 2026 18:30:42 -0700
Subject: unify microblog
---
src/pages/index.astro | 24 ++++++++++++++++++
src/pages/micro/[...slug].astro | 20 +++++++++++++++
src/pages/micro/index.astro | 54 +++++++++++++++++++++++++++++++++++++++++
src/pages/rss.xml.js | 14 ++++++++---
4 files changed, 108 insertions(+), 4 deletions(-)
create mode 100644 src/pages/micro/[...slug].astro
create mode 100644 src/pages/micro/index.astro
(limited to 'src/pages')
diff --git a/src/pages/index.astro b/src/pages/index.astro
index c2129e0..3886d8f 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -9,6 +9,11 @@ import FormattedDate from "../components/FormattedDate.astro";
const posts = (await getCollection("blog")).sort(
(a, b) => a.data.pubDate.valueOf() - b.data.pubDate.valueOf()
);
+
+const microposts = (await getCollection("micro")).sort(
+ (a, b) => a.data.pubDate.valueOf() - b.data.pubDate.valueOf()
+);
+
---
@@ -50,6 +55,22 @@ const posts = (await getCollection("blog")).sort(
}
+ Recent MicroPosts
+
+
+ {
+ microposts
+ .slice(-5)
+ .map((post) => (
+ -
+
+ {post.data.title}
+
+ ))
+ .reverse()
+ }
+
+
👋 Greetings, Adventurer
@@ -58,6 +79,9 @@ const posts = (await getCollection("blog")).sort(
archive my thoughts and processes on various topics or projects. It'll pretty much
just be whatever I feel like writing about, posts will be very infrequent so don't expect much.
+
+ Blog posts are regular long form writing about some technical concept, MicroPosts are all over the place and are usually quite unstructured. The RSS feed combines both of these.
+
Check out the main site as well: pinapelz.com
diff --git a/src/pages/micro/[...slug].astro b/src/pages/micro/[...slug].astro
new file mode 100644
index 0000000..0ad6f8b
--- /dev/null
+++ b/src/pages/micro/[...slug].astro
@@ -0,0 +1,20 @@
+---
+import { CollectionEntry, getCollection } from 'astro:content';
+import BlogPost from '../../layouts/BlogPost.astro';
+
+export async function getStaticPaths() {
+ const posts = await getCollection('micro');
+ return posts.map((post) => ({
+ params: { slug: post.slug },
+ props: post,
+ }));
+}
+type Props = CollectionEntry<'micro'>;
+
+const post = Astro.props;
+const { Content } = await post.render();
+---
+
+
+
+
diff --git a/src/pages/micro/index.astro b/src/pages/micro/index.astro
new file mode 100644
index 0000000..7393216
--- /dev/null
+++ b/src/pages/micro/index.astro
@@ -0,0 +1,54 @@
+---
+import BaseHead from '../../components/BaseHead.astro';
+import Header from '../../components/Header.astro';
+import Footer from '../../components/Footer.astro';
+import { SITE_TITLE, SITE_DESCRIPTION } from '../../consts';
+import { getCollection } from 'astro:content';
+import FormattedDate from '../../components/FormattedDate.astro';
+
+const posts = (await getCollection('micro')).sort(
+ (a, b) => a.data.pubDate.valueOf() - b.data.pubDate.valueOf()
+);
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/rss.xml.js b/src/pages/rss.xml.js
index 6fed721..83f4946 100644
--- a/src/pages/rss.xml.js
+++ b/src/pages/rss.xml.js
@@ -3,15 +3,21 @@ import { getCollection } from 'astro:content';
import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
export async function GET(context) {
- const posts = await getCollection('blog');
- posts.sort((a, b) => new Date(b.data.pubDate).getTime() - new Date(a.data.pubDate).getTime());
+ const blogPosts = await getCollection('blog');
+ const microPosts = await getCollection('micro');
+ const posts = [...blogPosts, ...microPosts];
+ posts.sort(
+ (a, b) =>
+ new Date(b.data.pubDate).getTime() -
+ new Date(a.data.pubDate).getTime()
+ );
return rss({
title: SITE_TITLE,
description: SITE_DESCRIPTION,
site: context.site,
items: posts.map((post) => ({
...post.data,
- link: `/blog/${post.slug}/`,
+ link: `/${post.collection}/${post.slug}/`,
})),
});
-}
\ No newline at end of file
+}
--
cgit v1.2.3