+
diff --git a/src/components/ui/Strapline.astro b/src/components/ui/Strapline.astro
index 9f51433..e28b1d1 100644
--- a/src/components/ui/Strapline.astro
+++ b/src/components/ui/Strapline.astro
@@ -15,7 +15,7 @@ const { title, description, icon, date } = Astro.props;
if (date) {
return (
- last updated:
+
);
}
diff --git a/src/components/util/Head.astro b/src/components/util/Head.astro
index c1019e9..4878049 100644
--- a/src/components/util/Head.astro
+++ b/src/components/util/Head.astro
@@ -1,5 +1,5 @@
---
-import siteConfig from "~/site.config";
+import conf from "~/site.config";
import { getClacks } from "~/lib/fun";
import { descriptionConstructor, titleConstructor } from "~/lib/metadata";
@@ -7,38 +7,36 @@ const { title, description } = Astro.props;
---
-
-
-
{titleConstructor(title, Astro.url.pathname)}
-
-
+
+
+
{titleConstructor(title)}
+
+
- {/* og */}
-
-
-
-
-
+ {/* og */}
+
+
+
+
+
+
-
-
+
+
- {/* font awesone */}
-
-
-
+ {/* font awesone */}
+
+
+
- {/* analytics */}
+ {/* analytics */}
- {/* astro generator */}
-
+ {/* astro generator */}
+
- {/* clacks */}
-
+ {/* clacks */}
+
diff --git a/src/content.config.ts b/src/content.config.ts
index f3e7332..edfd37a 100644
--- a/src/content.config.ts
+++ b/src/content.config.ts
@@ -11,9 +11,9 @@ const blog = defineCollection({
title: z.string(),
description: z.string(),
date: z.date().default(new Date()),
- tags: z.array(z.string()).optional(),
+ tags: z.array(z.string()),
draft: z.boolean().default(false),
- icon: z.string().optional().default("fa-solid fa-blog"),
+ icon: z.string().optional().default("fa-solid fa-star"),
image: z
.object({
src: z.string(),
diff --git a/src/content/bio.md b/src/content/bio.md
index 193a1a2..8b8702c 100644
--- a/src/content/bio.md
+++ b/src/content/bio.md
@@ -1,4 +1,4 @@
I'm a musician, student, part-time software developer and writer.
-I like making weird noises, websites (like this one) with [Astro](https://astro.build), and going outside whenever I'm not doing either of those things.
+I like creating websites (like this one) with [Astro](https://astro.build), and going outside whenever I'm not doing either of those things.
diff --git a/src/content/blog/meow.md b/src/content/blog/meow.md
index cba88ae..71bb1e8 100644
--- a/src/content/blog/meow.md
+++ b/src/content/blog/meow.md
@@ -3,6 +3,7 @@ title: meow
description: meow meow meow
date: 2025-03-17
icon: fa-solid fa-cat
+tags: ["meow"]
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat
\ No newline at end of file
diff --git a/src/content/blog/now1.md b/src/content/blog/now1.md
index cdfdfc8..cb84e91 100644
--- a/src/content/blog/now1.md
+++ b/src/content/blog/now1.md
@@ -3,4 +3,8 @@ title: "/now: 2025-W13"
description: "its now"
date: 2025-03-24
tags: ["now"]
----
\ No newline at end of file
+icon: fa-calendar-days fa-solid
+---
+
+- I've started bullet journalling. It's fun but I'm not keeping it up enough to have any effect.
+- Watched *Mickey 17* on Saturday, it's very good.
diff --git a/src/data/flavourtext.json b/src/data/flavourtext.json
new file mode 100644
index 0000000..358f3b5
--- /dev/null
+++ b/src/data/flavourtext.json
@@ -0,0 +1,15 @@
+[
+ "LOVE YOURSELF",
+ "Hack the planet!",
+ "all your base are belong to us!",
+ "must construct additional pylons",
+ "Everybody's dead, Dave.",
+ "Stay strange and be ace -- Yard Act",
+ "I'm a rocketman!",
+ "It's a fixer-upper!",
+ "💜",
+ "Sibelius crashed",
+ "All toasters toast toast",
+ "Trans rights are human rights!",
+ ":wq"
+]
\ No newline at end of file
diff --git a/src/layouts/Page.astro b/src/layouts/Page.astro
index d9c3fc1..2f49677 100644
--- a/src/layouts/Page.astro
+++ b/src/layouts/Page.astro
@@ -9,7 +9,7 @@ const { title, description, icon, date } = Astro.props;
-
+
diff --git a/src/lib/fun.ts b/src/lib/fun.ts
index e718a05..8b60833 100644
--- a/src/lib/fun.ts
+++ b/src/lib/fun.ts
@@ -1,28 +1,13 @@
// all the code for making fun stuff happen
-
-const flavourText = [
- "LOVE YOURSELF",
- "Hack the planet!",
- "all your base are belong to us!",
- "must construct additional pylons",
- "Everybody's dead, Dave.",
- "Stay strange and be ace -- Yard Act",
- "I'm a rocketman!",
- "It's a fixer-upper!",
- "💜",
- "Sibelius crashed",
- "All toasters toast toast",
- "Trans rights are human rights!",
- ":wq",
-];
-
+import flavourText from "~/data/flavourtext.json";
export function getFlavourText() {
return flavourText[Math.floor(Math.random() * flavourText.length)];
}
-export function isBirthday() {
+// check if it's ivy's birthday at build time
+export function isBirthday(): boolean {
const today = new Date();
- const birthday = new Date(today.getFullYear(), 3, 13);
+ const birthday = new Date(today.getFullYear(), 9, 16); // October 16
const check =
today.getMonth() === birthday.getMonth() &&
today.getDate() === birthday.getDate();
@@ -30,7 +15,14 @@ export function isBirthday() {
return check;
}
+// https://gnuterrypratchett.com/index.php
export function getClacks(): string {
- const clacks: string[] = ["Terry Pratchett", "Bram Moolenaar", "Alan Turing", "Haskell Curry", "Brianna Ghey"];
+ const clacks: string[] = [
+ "Terry Pratchett",
+ "Bram Moolenaar",
+ "Alan Turing",
+ "Haskell Curry",
+ "Brianna Ghey",
+ ];
return clacks.join(", ");
-}
\ No newline at end of file
+}
diff --git a/src/lib/metadata.ts b/src/lib/metadata.ts
index efa3639..222ee3a 100644
--- a/src/lib/metadata.ts
+++ b/src/lib/metadata.ts
@@ -1,25 +1,18 @@
import conf from "~/site.config";
+let siteName = conf.site.title;
+let siteDescription = conf.site.description;
-export const isBlog = (pathname: string) => {
- return pathname.startsWith("/blog");
-};
-
-export const titleConstructor = (title: string, pathname: string) => {
- if (isBlog(pathname)) {
- return title
- ? `${title} | Everything And The Girl`
- : "Everything And The Girl";
- }
- if (!title) return conf.siteName;
- return `${title} | ${conf.siteName}`;
+export const titleConstructor = (title: string) => {
+ if (!title) return siteName;
+ return `${title} | ${siteName}`;
};
export const descriptionConstructor = (description: string) => {
- if (!description) return conf.description;
+ if (!description) return siteDescription;
return `${description}`;
};
export const noteTitleConstructor = (title: string, date: Date) => {
- if (title) return title;
+ if (title) return `A note titled ${title}`;
return `A note from ${date.toLocaleDateString()}`;
};
diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro
index 3984fc0..65c62ee 100644
--- a/src/pages/blog/index.astro
+++ b/src/pages/blog/index.astro
@@ -4,10 +4,10 @@ import BlogPostList from "~/components/lists/BlogPostList.astro";
---
-
+ my personal blog is Concorde, but here has more technical things.
diff --git a/src/pages/blog/tags/[tag].astro b/src/pages/blog/tags/[tag].astro
new file mode 100644
index 0000000..a6cdd26
--- /dev/null
+++ b/src/pages/blog/tags/[tag].astro
@@ -0,0 +1,44 @@
+---
+import { getCollection } from "astro:content";
+import Page from "~/layouts/Page.astro"
+import Date from "~/components/util/Date.astro";
+import StyledLink from "~/components/util/StyledLink.astro";
+export async function getStaticPaths() {
+ const allPosts = await getCollection("blog");
+ const uniqueTags = [
+ ...new Set(allPosts.map((post) => post.data.tags).flat()),
+ ];
+
+ return uniqueTags.map((tag) => {
+ const filteredPosts = allPosts.filter((post) =>
+ post.data.tags.includes(tag)
+ );
+ return {
+ params: { tag },
+ props: { posts: filteredPosts },
+ };
+ });
+}
+
+const { tag } = Astro.params;
+const { posts } = Astro.props;
+---
+
+
+
+ See some more tags....
+
+
+
diff --git a/src/pages/blog/tags/index.astro b/src/pages/blog/tags/index.astro
index 7fb87e4..d752b3e 100644
--- a/src/pages/blog/tags/index.astro
+++ b/src/pages/blog/tags/index.astro
@@ -6,12 +6,15 @@ const allPosts = await getCollection("blog");
const tags = [...new Set(allPosts.map((post) => post.data.tags).flat())];
---
-
+
{
tags.map((tag) => -
-
+
{tag}
+
+ ({allPosts.filter((post) => post.data.tags.includes(tag)).length})
+
)
}
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 0f0d3ab..02525f5 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -26,7 +26,7 @@ import Prose from "~/components/ui/Prose.astro";
-
+
see more
diff --git a/src/pages/now.astro b/src/pages/now.astro
index 83f0f79..6756e5f 100644
--- a/src/pages/now.astro
+++ b/src/pages/now.astro
@@ -1,5 +1,5 @@
---
-import { getCollection } from "astro:content";
+import { getCollection, render } from "astro:content";
import Page from "~/layouts/Page.astro";
// import { Content } from "~/content/now.md";
import Prose from "~/components/ui/Prose.astro";
@@ -14,23 +14,17 @@ async function getLatestNowPost() {
}
const latestPost = await getLatestNowPost(); // Fetch the first post at build time
+
+const { Content } = await render(latestPost);
---
-
+
+
+ {latestPost ? : nae now
}
+
This is a /now page and
- you should make one, too.
+ you should make one, too.
+ It's generated from the latest post tagged with #now, which currently is {latestPost.data.title}.
-
- {
- latestPost ? (
-
-
{latestPost.data.title}
-
{latestPost.data.description}
-
- ) : (
- nae now
- )
- }
-
diff --git a/src/site.config.ts b/src/site.config.ts
index 4a79b89..ccd8a21 100644
--- a/src/site.config.ts
+++ b/src/site.config.ts
@@ -1,7 +1,14 @@
export default {
- siteName: "Ivy Turner",
- description: "Ivy Turner's personal website",
- fediverse: "@ivy@social.lol",
+ site: {
+ url: "https://ivyneeds.rest",
+ title: "Ivy Turner",
+ description: "Ivy Turner's personal website",
+ },
+ author: {
+ name: "Ivy Turner",
+ fedi: "@ivy@social.lol",
+ email: "ivy@sorbet.gay",
+ },
devMode: {
showDraftPages: true,
},