From 447006cdcc6aa95e37ba8084f300f4f488656b79 Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Thu, 13 Nov 2025 18:53:38 +0100 Subject: [PATCH 01/13] intial blog scaffold --- src/components/ButtonsBar.astro | 1 + src/pages/blog.astro | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 src/pages/blog.astro diff --git a/src/components/ButtonsBar.astro b/src/components/ButtonsBar.astro index 8321919..ae0134e 100644 --- a/src/components/ButtonsBar.astro +++ b/src/components/ButtonsBar.astro @@ -4,6 +4,7 @@ import GithubLogo from "../assets/icons/github-logo.svg"; const links = [ { text: "Downloads", href: "https://download.menix-os.org", newtab: true }, + { text: "Blog", href: "/blog"}, { text: "Docs", href: "/docs" }, { text: "Code", diff --git a/src/pages/blog.astro b/src/pages/blog.astro new file mode 100644 index 0000000..17cfab5 --- /dev/null +++ b/src/pages/blog.astro @@ -0,0 +1,7 @@ +--- +import Layout from "../layouts/Layout.astro"; +--- + + +

Blog!

+
\ No newline at end of file From 0ec0bab43609fbc7a2082c7a139cb919f75db5a2 Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Thu, 13 Nov 2025 19:13:54 +0100 Subject: [PATCH 02/13] test ci (broken stuff) --- package.json | 2 +- src/components/ButtonsBar.astro | 2 +- src/pages/index.astro | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 423a1c6..e8218a9 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "preview": "astro preview", "astro": "astro", "format": "prettier --write .", - "format:check": "prettier ." + "format:check": "prettier --check ." }, "dependencies": { "@astrojs/starlight": "^0.36.2", diff --git a/src/components/ButtonsBar.astro b/src/components/ButtonsBar.astro index ae0134e..80ddd8e 100644 --- a/src/components/ButtonsBar.astro +++ b/src/components/ButtonsBar.astro @@ -7,7 +7,7 @@ const links = [ { text: "Blog", href: "/blog"}, { text: "Docs", href: "/docs" }, { - text: "Code", + text: "Code", href: "https://github.com/menix-os/menix", logo: GithubLogo, newtab: true, diff --git a/src/pages/index.astro b/src/pages/index.astro index b9a39c8..9160bdf 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -3,6 +3,6 @@ import Frontpage from "../components/Frontpage.astro"; import Layout from "../layouts/Layout.astro"; --- - + From d2cbebbd0ab2599a1859d79d929ab539d262ae1d Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Thu, 13 Nov 2025 19:21:39 +0100 Subject: [PATCH 03/13] format --- src/components/ButtonsBar.astro | 4 ++-- src/pages/blog.astro | 6 +++--- src/pages/index.astro | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/ButtonsBar.astro b/src/components/ButtonsBar.astro index 80ddd8e..7e0d7e5 100644 --- a/src/components/ButtonsBar.astro +++ b/src/components/ButtonsBar.astro @@ -4,10 +4,10 @@ import GithubLogo from "../assets/icons/github-logo.svg"; const links = [ { text: "Downloads", href: "https://download.menix-os.org", newtab: true }, - { text: "Blog", href: "/blog"}, + { text: "Blog", href: "/blog" }, { text: "Docs", href: "/docs" }, { - text: "Code", + text: "Code", href: "https://github.com/menix-os/menix", logo: GithubLogo, newtab: true, diff --git a/src/pages/blog.astro b/src/pages/blog.astro index 17cfab5..4182fd6 100644 --- a/src/pages/blog.astro +++ b/src/pages/blog.astro @@ -2,6 +2,6 @@ import Layout from "../layouts/Layout.astro"; --- - -

Blog!

-
\ No newline at end of file + +

Blog!

+
diff --git a/src/pages/index.astro b/src/pages/index.astro index 9160bdf..9dc24c1 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -5,4 +5,4 @@ import Layout from "../layouts/Layout.astro"; - + From f4c5365c0065e6a7f0636963729cd0fbb8a24a51 Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Thu, 13 Nov 2025 19:23:01 +0100 Subject: [PATCH 04/13] fix build error --- src/pages/index.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/index.astro b/src/pages/index.astro index 9dc24c1..9b29a52 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -3,6 +3,6 @@ import Frontpage from "../components/Frontpage.astro"; import Layout from "../layouts/Layout.astro"; --- - + From 8717755bc3509cb28e9e3cc8194efc060ccb6b4d Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Thu, 13 Nov 2025 19:24:10 +0100 Subject: [PATCH 05/13] fix error --- src/pages/index.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/index.astro b/src/pages/index.astro index 9b29a52..b9a39c8 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -5,4 +5,4 @@ import Layout from "../layouts/Layout.astro"; - + From dc5683fec7f8900d684f8e9541c5cc06670fdde7 Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Sun, 23 Nov 2025 01:39:45 +0100 Subject: [PATCH 06/13] collection loading --- src/components/BlogPostCard.astro | 36 +++++++++++++++++++++++++++++++ src/components/BlogPostList.astro | 20 +++++++++++++++++ src/layouts/BlogPostLayout.astro | 17 +++++++++++++++ src/pages/blog.astro | 13 +++++++++-- src/pages/blog/some-post.md | 34 +++++++++++++++++++++++++++++ src/scripts/blogpost.ts | 24 +++++++++++++++++++++ 6 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 src/components/BlogPostCard.astro create mode 100644 src/components/BlogPostList.astro create mode 100644 src/layouts/BlogPostLayout.astro create mode 100644 src/pages/blog/some-post.md create mode 100644 src/scripts/blogpost.ts diff --git a/src/components/BlogPostCard.astro b/src/components/BlogPostCard.astro new file mode 100644 index 0000000..cbd5f01 --- /dev/null +++ b/src/components/BlogPostCard.astro @@ -0,0 +1,36 @@ +--- +import { Image } from "astro:assets"; +import type { BlogPostInfo } from "../scripts/blogpost"; + +interface Props { + post: BlogPostInfo; +} + +const { post } = Astro.props; +--- + + +
+
+ {post.title} +
+ + + {post.author}, {post.date.toLocaleDateString()} + +
+ { + post.img && ( + blog post cover image + ) + } +
+
+
diff --git a/src/components/BlogPostList.astro b/src/components/BlogPostList.astro new file mode 100644 index 0000000..837cbed --- /dev/null +++ b/src/components/BlogPostList.astro @@ -0,0 +1,20 @@ +--- +import { postInfoFromRawPosts, type BlogPostInfo } from "../scripts/blogpost"; +import BlogPostCard from "./BlogPostCard.astro"; + +const allPosts = Object.values( + import.meta.glob("../pages/blog/*.md", { eager: true }), +); + +const allPostInfos = postInfoFromRawPosts(allPosts); +--- + + diff --git a/src/layouts/BlogPostLayout.astro b/src/layouts/BlogPostLayout.astro new file mode 100644 index 0000000..19f9c24 --- /dev/null +++ b/src/layouts/BlogPostLayout.astro @@ -0,0 +1,17 @@ +--- +import Layout from "./Layout.astro"; + +const { frontmatter } = Astro.props; +--- + + +

{frontmatter.title}

+

Written by {frontmatter.author}

+ +
diff --git a/src/pages/blog.astro b/src/pages/blog.astro index 4182fd6..50176ec 100644 --- a/src/pages/blog.astro +++ b/src/pages/blog.astro @@ -1,7 +1,16 @@ --- import Layout from "../layouts/Layout.astro"; +import BlogPostList from "../components/BlogPostList.astro"; --- - -

Blog!

+ +
+
+

All Menix blog posts

+ + +
+
diff --git a/src/pages/blog/some-post.md b/src/pages/blog/some-post.md new file mode 100644 index 0000000..034f07b --- /dev/null +++ b/src/pages/blog/some-post.md @@ -0,0 +1,34 @@ +--- +layout: ../../layouts/BlogPostLayout.astro +title: "My First Blog Post" +date: 2022-07-01 +author: "Astro Learner" +img: "https://docs.astro.build/assets/rose.webp" +--- + +## Hello everynyan + +How are you? Fine thank you! + +1. Do stuff +1. Do more stuff +1. lol + +- real +- fake +- gay + +> lol +> lol + +```rs +let x = 5; + +fn fakt(lol: u32) -> u32 { + lol * 2 +} + +println!("{}", fakt(x)); +``` + +sgdsgsgsd diff --git a/src/scripts/blogpost.ts b/src/scripts/blogpost.ts new file mode 100644 index 0000000..90dd43f --- /dev/null +++ b/src/scripts/blogpost.ts @@ -0,0 +1,24 @@ +export interface BlogPostInfo { + title: string; + date: Date; + author: string; + url: string; + img?: string; +} + +export function postInfoFromRawPosts(raw: any[]): BlogPostInfo[] { + return raw.map((post) => { + console.log(post); + console.log(post.rawContent); + console.log(post.getHeadings); + console.log(post.getHeadings()); + console.log(post.rawContent()); + return { + author: post.frontmatter.author, + date: new Date(post.frontmatter.date), + title: post.frontmatter.title, + img: post.frontmatter.img, + url: post.url, + }; + }); +} From 8b8e49cb23f8194c91d67fa7e8b656ba8c18f79b Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Sun, 23 Nov 2025 18:33:00 +0100 Subject: [PATCH 07/13] Blog page, posts on frontpage and rss feed --- .gitignore | 3 ++ package-lock.json | 57 ++++++++++++++++++++++++++----- package.json | 1 + src/assets/icons/rss.svg | 6 ++++ src/components/BlogPostCard.astro | 24 +++++-------- src/components/BlogPostList.astro | 35 ++++++++++++++----- src/components/Footer.astro | 6 ++++ src/components/Frontpage.astro | 14 ++++++++ src/pages/blog.astro | 22 +++++++++--- src/pages/blog/some-post.md | 34 ------------------ src/pages/rss.xml.js | 14 ++++++++ src/scripts/blogpost.ts | 19 ++++++++--- 12 files changed, 159 insertions(+), 76 deletions(-) create mode 100644 src/assets/icons/rss.svg delete mode 100644 src/pages/blog/some-post.md create mode 100644 src/pages/rss.xml.js diff --git a/.gitignore b/.gitignore index 016b59e..4eaaf9d 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ pnpm-debug.log* # jetbrains setting folder .idea/ + +#local +local \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1fafb81..452467a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "menix-website", "version": "0.0.1", "dependencies": { + "@astrojs/rss": "^4.0.14", "@astrojs/starlight": "^0.36.2", "@astrojs/starlight-tailwind": "^4.0.2", "@tailwindcss/vite": "^4.1.17", @@ -99,6 +100,16 @@ "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, + "node_modules/@astrojs/rss": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.14.tgz", + "integrity": "sha512-KCe1imDcADKOOuO/wtKOMDO/umsBD6DWF+94r5auna1jKl5fmlK9vzf+sjA3EyveXA/FoB3khtQ/u/tQgETmTw==", + "license": "MIT", + "dependencies": { + "fast-xml-parser": "^5.3.0", + "piccolore": "^0.1.3" + } + }, "node_modules/@astrojs/sitemap": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.6.0.tgz", @@ -115,7 +126,6 @@ "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.36.2.tgz", "integrity": "sha512-QR8NfO7+7DR13kBikhQwAj3IAoptLLNs9DkyKko2M2l3PrqpcpVUnw1JBJ0msGDIwE6tBbua2UeBND48mkh03w==", "license": "MIT", - "peer": true, "dependencies": { "@astrojs/markdown-remark": "^6.3.1", "@astrojs/mdx": "^4.2.3", @@ -2122,7 +2132,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2283,7 +2292,6 @@ "resolved": "https://registry.npmjs.org/astro/-/astro-5.15.4.tgz", "integrity": "sha512-0g/68hLHEJZF2nYUcZM5O0kOnzCsCIf8eA9+0jfBAxp4ycujrIHRgIOdZCFKL9GoTsn8AypWbziypH5aEIF+aA==", "license": "MIT", - "peer": true, "dependencies": { "@astrojs/compiler": "^2.12.2", "@astrojs/internal-helpers": "0.7.4", @@ -3085,6 +3093,24 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, + "node_modules/fast-xml-parser": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.2.tgz", + "integrity": "sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -5421,6 +5447,12 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/piccolore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==", + "license": "ISC" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -5458,7 +5490,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -5961,7 +5992,6 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -6217,6 +6247,18 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/style-to-js": { "version": "1.1.19", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.19.tgz", @@ -6249,8 +6291,7 @@ "version": "4.1.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tapable": { "version": "2.3.0", @@ -6727,7 +6768,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -6926,7 +6966,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index e8218a9..9d1038e 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "format:check": "prettier --check ." }, "dependencies": { + "@astrojs/rss": "^4.0.14", "@astrojs/starlight": "^0.36.2", "@astrojs/starlight-tailwind": "^4.0.2", "@tailwindcss/vite": "^4.1.17", diff --git a/src/assets/icons/rss.svg b/src/assets/icons/rss.svg new file mode 100644 index 0000000..54d5edb --- /dev/null +++ b/src/assets/icons/rss.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/components/BlogPostCard.astro b/src/components/BlogPostCard.astro index cbd5f01..f738d74 100644 --- a/src/components/BlogPostCard.astro +++ b/src/components/BlogPostCard.astro @@ -1,5 +1,4 @@ --- -import { Image } from "astro:assets"; import type { BlogPostInfo } from "../scripts/blogpost"; interface Props { @@ -7,30 +6,23 @@ interface Props { } const { post } = Astro.props; + +const contentPreview = post.rawContent.substring(0, 150) + "..."; ---
-
+
{post.title}
- - {post.author}, {post.date.toLocaleDateString()} + + {post.author}, {post.date.toLocaleDateString("de-EN")} -
- { - post.img && ( - blog post cover image - ) - } +
+ {contentPreview}
diff --git a/src/components/BlogPostList.astro b/src/components/BlogPostList.astro index 837cbed..7dae680 100644 --- a/src/components/BlogPostList.astro +++ b/src/components/BlogPostList.astro @@ -1,18 +1,37 @@ --- -import { postInfoFromRawPosts, type BlogPostInfo } from "../scripts/blogpost"; +import { type BlogPostInfo } from "../scripts/blogpost"; import BlogPostCard from "./BlogPostCard.astro"; -const allPosts = Object.values( - import.meta.glob("../pages/blog/*.md", { eager: true }), -); +interface Props { + posts: BlogPostInfo[]; + maxItems?: number; + sort?: "date" | "dateDesc" | "default"; +} -const allPostInfos = postInfoFromRawPosts(allPosts); +let { maxItems, sort = "date", posts } = Astro.props; + +function sortByDate() { + posts.sort(function (a, b) { + return new Date(b.date).getTime() - new Date(a.date).getTime(); + }); +} + +if (sort === "date") { + sortByDate(); +} else if (sort === "dateDesc") { + sortByDate(); + posts.reverse(); +} + +if (maxItems) { + posts = posts.slice(0, maxItems); +} --- -
    +
      { - allPostInfos.map((post) => ( -
    • + posts.map((post) => ( +
    • )) diff --git a/src/components/Footer.astro b/src/components/Footer.astro index a797186..555e6d6 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -4,6 +4,7 @@ import MenixAnimatedLogo from "./reusable/MenixAnimatedLogo.astro"; import Factory from "../assets/icons/factory.svg"; import GhLogo from "../assets/icons/github-logo.svg"; import Download from "../assets/icons/download.svg"; +import RssIcon from "../assets/icons/rss.svg"; const links = [ { @@ -21,6 +22,11 @@ const links = [ text: "Github org", href: "https://github.com/menix-os", }, + { + icon: RssIcon, + text: "RSS", + href: "https://menix-os.org/rss.xml", + }, ]; --- diff --git a/src/components/Frontpage.astro b/src/components/Frontpage.astro index 6c29fa9..5a96141 100644 --- a/src/components/Frontpage.astro +++ b/src/components/Frontpage.astro @@ -3,8 +3,12 @@ import { Image } from "astro:assets"; import HeroImage from "../assets/images/menix-in-qemu-cropped.png"; import Button from "./reusable/Button.astro"; import MenixGear from "../assets/logos/menix-gear.svg"; +import BlogPostList from "./BlogPostList.astro"; +import { loadPostInfos } from "../scripts/blogpost"; const gearSize = 350; + +const posts = loadPostInfos(); ---
      @@ -44,6 +48,16 @@ const gearSize = 350; />
+ +
+
+

Recent blog posts:

+
+ +
+ +
+
diff --git a/src/pages/blog.astro b/src/pages/blog.astro index b3b93ee..452295b 100644 --- a/src/pages/blog.astro +++ b/src/pages/blog.astro @@ -9,12 +9,12 @@ const posts = loadPostInfos(); -
+
{ posts.length > 0 && ( <> -

+

Menix blog posts ({posts.length})

diff --git a/src/pages/rss.xml.js b/src/pages/rss.xml.ts similarity index 70% rename from src/pages/rss.xml.js rename to src/pages/rss.xml.ts index a36e82e..55d7b92 100644 --- a/src/pages/rss.xml.js +++ b/src/pages/rss.xml.ts @@ -1,9 +1,6 @@ import rss, { pagesGlobToRssItems } from "@astrojs/rss"; -import { loadRawPosts } from "../scripts/blogpost"; -const posts = loadRawPosts(); - -export async function GET(context) { +export async function GET(context: any) { return rss({ title: "Menix Blog", description: "Blog posts from the Menix project", diff --git a/src/scripts/blogpost.ts b/src/scripts/blogpost.ts index b66ed63..a6e8c3d 100644 --- a/src/scripts/blogpost.ts +++ b/src/scripts/blogpost.ts @@ -1,3 +1,5 @@ +import { removeMarkdown } from "./markdown-remoal"; + export interface BlogPostInfo { title: string; date: Date; @@ -5,12 +7,18 @@ export interface BlogPostInfo { url: string; img?: string; rawContent: string; + markdownRemovedContent: string; + lastEdited: Date | null; } export function postInfoFromRawPosts(raw: any[]): BlogPostInfo[] { return raw.map((post) => { const rawContent: string = post.rawContent().trim(); + const markdownRemovedContent = removeMarkdown(rawContent); + + const lastEdited: string | null = post.frontmatter.lastEdited; + return { author: post.frontmatter.author, date: new Date(post.frontmatter.date), @@ -18,6 +26,8 @@ export function postInfoFromRawPosts(raw: any[]): BlogPostInfo[] { img: post.frontmatter.img, url: post.url, rawContent, + markdownRemovedContent, + lastEdited: lastEdited ? new Date(lastEdited) : null, }; }); } diff --git a/src/scripts/markdown-remoal.ts b/src/scripts/markdown-remoal.ts new file mode 100644 index 0000000..eaaa8b7 --- /dev/null +++ b/src/scripts/markdown-remoal.ts @@ -0,0 +1,5 @@ +import removeMd from "remove-markdown"; + +export function removeMarkdown(markdown: string): string { + return removeMd(markdown); +} diff --git a/src/styles/custom-tailwind.css b/src/styles/custom-tailwind.css index df611ba..0822bb0 100644 --- a/src/styles/custom-tailwind.css +++ b/src/styles/custom-tailwind.css @@ -1,4 +1,24 @@ @import "tailwindcss"; +@plugin "@tailwindcss/typography"; + +/* incredibly weird workaround needed because the +large code blocks were not targetet by +prose-code, prose-pre or prose-figure. +This is gpt slop so there is proably a better way to figure this out +*/ +@layer components { + /* Light theme default styling for code blocks */ + .prose pre { + background-color: theme("colors.zinc.100") !important; + } + + /* Dark theme override */ + @media (prefers-color-scheme: dark) { + .prose pre { + background-color: theme("colors.zinc.900") !important; + } + } +} @font-face { font-family: rubik-glitch-regular; @@ -50,7 +70,7 @@ @theme { --font-glitch: rubik-glitch-regular, sans-serif; - --font-rubik: rubik, monospace; + --font-rubik: rubik, sans-serif, monospace; --font-scp: source-code-pro, sans-serif; /* base color from menix logo #FF1A00 */ From 2439104fc8675ccb39704250b9b9560c69a37a28 Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Sun, 23 Nov 2025 22:13:06 +0100 Subject: [PATCH 10/13] a first blog post --- src/assets/images/lighthouse-scores.png | Bin 0 -> 18630 bytes src/pages/blog/a-new-website.md | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/assets/images/lighthouse-scores.png create mode 100644 src/pages/blog/a-new-website.md diff --git a/src/assets/images/lighthouse-scores.png b/src/assets/images/lighthouse-scores.png new file mode 100644 index 0000000000000000000000000000000000000000..1d9c01f6e4196b361f59cf8269317a15955688e6 GIT binary patch literal 18630 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 literal 0 HcmV?d00001 diff --git a/src/pages/blog/a-new-website.md b/src/pages/blog/a-new-website.md new file mode 100644 index 0000000..24754b8 --- /dev/null +++ b/src/pages/blog/a-new-website.md @@ -0,0 +1,22 @@ +--- +layout: ../../layouts/BlogPostLayout.astro +title: "A new Website" +date: 2025-07-01 +lastEdited: null +author: "PotatoMaaan" +--- + +Menix now has a new website! It's made up entirely of static assets and doesn't ship any javascript to the client. It's currently hosted by Github Pages. + +## Tech Stack + +- The main framework is [Astro](https://astro.build/) +- [Starlight](https://starlight.astro.build/) for the handbook pages +- [Tailwind](https://tailwindcss.com/) for styling +- [Astro's RSS plugin](https://www.npmjs.com/package/@astrojs/rss) to easily set up our [RSS feed](https://menix-os.org/rss.xml). + +As one would expect, this allows us to hit great lighthouse scores :D + +![screenshot of good lighthouse scores](../../assets/images/lighthouse-scores.png) + +You can find the code [on our Github](https://github.com/menix-os/website). From ff4dc02674131438b8ac46eea893cde51f2f5094 Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Sun, 23 Nov 2025 22:18:42 +0100 Subject: [PATCH 11/13] spelling --- src/pages/blog/a-new-website.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/blog/a-new-website.md b/src/pages/blog/a-new-website.md index 24754b8..47755b4 100644 --- a/src/pages/blog/a-new-website.md +++ b/src/pages/blog/a-new-website.md @@ -1,12 +1,12 @@ --- layout: ../../layouts/BlogPostLayout.astro -title: "A new Website" +title: "A New Website" date: 2025-07-01 lastEdited: null author: "PotatoMaaan" --- -Menix now has a new website! It's made up entirely of static assets and doesn't ship any javascript to the client. It's currently hosted by Github Pages. +Menix now has a new website! It's made up entirely of static assets and doesn't ship any JavaScript to the client. It's currently hosted by GitHub Pages. ## Tech Stack @@ -15,8 +15,8 @@ Menix now has a new website! It's made up entirely of static assets and doesn't - [Tailwind](https://tailwindcss.com/) for styling - [Astro's RSS plugin](https://www.npmjs.com/package/@astrojs/rss) to easily set up our [RSS feed](https://menix-os.org/rss.xml). -As one would expect, this allows us to hit great lighthouse scores :D +As one would expect, this allows us to hit great Lighthouse scores :D ![screenshot of good lighthouse scores](../../assets/images/lighthouse-scores.png) -You can find the code [on our Github](https://github.com/menix-os/website). +You can find the code [on our GitHub](https://github.com/menix-os/website). From f439caa62432f3db5d6c3cb1e80a553321685b14 Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Sun, 23 Nov 2025 22:31:12 +0100 Subject: [PATCH 12/13] correct date --- src/pages/blog/a-new-website.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/blog/a-new-website.md b/src/pages/blog/a-new-website.md index 47755b4..adaf8c3 100644 --- a/src/pages/blog/a-new-website.md +++ b/src/pages/blog/a-new-website.md @@ -1,12 +1,12 @@ --- layout: ../../layouts/BlogPostLayout.astro -title: "A New Website" -date: 2025-07-01 +title: "A new Website" +date: 2025-11-23 lastEdited: null author: "PotatoMaaan" --- -Menix now has a new website! It's made up entirely of static assets and doesn't ship any JavaScript to the client. It's currently hosted by GitHub Pages. +Menix now has a new website! It's made up entirely of static assets and doesn't ship any javascript to the client. It's currently hosted by Github Pages. ## Tech Stack @@ -15,8 +15,8 @@ Menix now has a new website! It's made up entirely of static assets and doesn't - [Tailwind](https://tailwindcss.com/) for styling - [Astro's RSS plugin](https://www.npmjs.com/package/@astrojs/rss) to easily set up our [RSS feed](https://menix-os.org/rss.xml). -As one would expect, this allows us to hit great Lighthouse scores :D +As one would expect, this allows us to hit great lighthouse scores :D ![screenshot of good lighthouse scores](../../assets/images/lighthouse-scores.png) -You can find the code [on our GitHub](https://github.com/menix-os/website). +You can find the code [on our Github](https://github.com/menix-os/website). From ac4e4432ff829cd633cee384a97ec723b058653d Mon Sep 17 00:00:00 2001 From: PotatoMaaan <60669730+PotatoMaaan@users.noreply.github.com> Date: Sun, 23 Nov 2025 22:34:58 +0100 Subject: [PATCH 13/13] newline --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4eaaf9d..f563b5e 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,4 @@ pnpm-debug.log* .idea/ #local -local \ No newline at end of file +local