diff --git a/src/routes/feed/+page.svelte b/src/routes/feed/+page.svelte
new file mode 100644
index 0000000..ee2d69f
--- /dev/null
+++ b/src/routes/feed/+page.svelte
@@ -0,0 +1,119 @@
+
+
+
+ Art Feed | denizk0461
+
+
+{#snippet pageButtons(currentIndex: number)}
+
+ {#if currentIndex == 1}
+
x
+ {:else}
+
<
+ {/if}
+
+ {#each { length: data.maxPages }, index}
+
{index + 1}
+ {/each}
+
+ {#if currentIndex == data.maxPages}
+
x
+ {:else}
+
>
+ {/if}
+
+{/snippet}
+
+
+
+
+ {@render pageButtons(data.currentPage)}
+
+ Welcome to my (new) art feed! It is heavily inspired by DeathSurplus' art blog – definitely go check out his page!
+
+ This page is intended to be a contrasting companion to the projects page; I'll use this page for smaller things that don't fit the dedicated-page-format.
+
+
+
+ {#each data.feedEntries as entry}
+ {entry.title}
+ {entry.subtitle}
+ {entry.date}
+
+ {/each}
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/feed/+page.ts b/src/routes/feed/+page.ts
new file mode 100644
index 0000000..237b13f
--- /dev/null
+++ b/src/routes/feed/+page.ts
@@ -0,0 +1,50 @@
+import { entries } from './feed';
+
+interface FeedEntry {
+ content: any;
+ title: string;
+ subtitle: string;
+ date: string;
+}
+
+let entriesPerPage = 8;
+
+export async function load({ params, url }) {
+ // Get page index
+ let pageIndex = Number(url.searchParams.get('p'));
+ if (pageIndex == 0) {
+ pageIndex = 1;
+ }
+
+ // TODO check if index exceeds maximum permitted and redirect (to max page?)
+
+ let feedEntries: FeedEntry[] = [];
+ let start = (pageIndex - 1) * entriesPerPage;
+
+ for (let i = start; i < start + entriesPerPage; i += 1) {
+ // Stop iterating when end reached
+ if (i >= entries.length) {
+ break;
+ }
+ // Vite complains if I don't do this even though it's stupid
+ const path = entries[i].split("/");
+ const page = await import(`./${path[0]}/${path[1]}.md`);
+ const md = page.metadata;
+
+ feedEntries.push({
+ content: page.default,
+ title: md.title,
+ subtitle: md.subtitle,
+ date: md.date,
+ });
+ }
+
+ let currentPage = pageIndex;
+ let maxPages = Math.ceil(entries.length / entriesPerPage);
+
+ return {
+ currentPage,
+ maxPages,
+ feedEntries,
+ };
+}
\ No newline at end of file
diff --git a/src/routes/feed/drawings/2026-march.md b/src/routes/feed/drawings/2026-march.md
new file mode 100644
index 0000000..fc569bb
--- /dev/null
+++ b/src/routes/feed/drawings/2026-march.md
@@ -0,0 +1,5 @@
+---
+title: asdf
+subtitle: asd
+date: aaa
+---
\ No newline at end of file
diff --git a/src/routes/feed/drawings/mossig-gender.md b/src/routes/feed/drawings/mossig-gender.md
new file mode 100644
index 0000000..fc569bb
--- /dev/null
+++ b/src/routes/feed/drawings/mossig-gender.md
@@ -0,0 +1,5 @@
+---
+title: asdf
+subtitle: asd
+date: aaa
+---
\ No newline at end of file
diff --git a/src/routes/feed/feed.ts b/src/routes/feed/feed.ts
new file mode 100644
index 0000000..f1b526a
--- /dev/null
+++ b/src/routes/feed/feed.ts
@@ -0,0 +1,9 @@
+export let entries: string[] = [
+ // 2026
+ // "misc/lightyears-font",
+ "drawings/mossig-gender",
+ "drawings/2026-march",
+ // 2024
+ // "electronics/3ds-usb-c",
+ // "electronics/deej0461",
+];
\ No newline at end of file