diff --git a/src/lib/assets/icons/last-fm.png b/src/lib/assets/icons/last-fm.png
new file mode 100644
index 0000000..e6d66a7
Binary files /dev/null and b/src/lib/assets/icons/last-fm.png differ
diff --git a/src/lib/assets/icons/last-fm.webp b/src/lib/assets/icons/last-fm.webp
new file mode 100644
index 0000000..d85eb30
Binary files /dev/null and b/src/lib/assets/icons/last-fm.webp differ
diff --git a/src/lib/components/tiles/music/MusicTile.svelte b/src/lib/components/tiles/music/MusicTile.svelte
new file mode 100644
index 0000000..e3f577d
--- /dev/null
+++ b/src/lib/components/tiles/music/MusicTile.svelte
@@ -0,0 +1,40 @@
+
+
+
+
+
+ {#if track}
+
+
+ {:else}
+
+ {/if}
+
diff --git a/src/lib/components/tiles/pages/TileTextPage.svelte b/src/lib/components/tiles/pages/TileTextPage.svelte
index 6228d45..6e6b298 100644
--- a/src/lib/components/tiles/pages/TileTextPage.svelte
+++ b/src/lib/components/tiles/pages/TileTextPage.svelte
@@ -20,14 +20,14 @@ Text page for a tile. Must be in a tile to display correctly.
-
{title}
+
{title}
{#if subtitle}
-
{subtitle}
+
{subtitle}
{/if}
{#if text}
-
{text}
+
{text}
{/if}
diff --git a/src/routes/(tiles)/+page.server.ts b/src/routes/(tiles)/+page.server.ts
new file mode 100644
index 0000000..5aa31e1
--- /dev/null
+++ b/src/routes/(tiles)/+page.server.ts
@@ -0,0 +1,7 @@
+import type { PageServerLoad } from './$types';
+
+import { getRecentTrack } from '$lib/server/clients/last-fm';
+
+export const load = (async () => {
+ return { track: await getRecentTrack() };
+}) satisfies PageServerLoad;
diff --git a/src/routes/(tiles)/+page.svelte b/src/routes/(tiles)/+page.svelte
index 3c121b1..6b2d053 100644
--- a/src/routes/(tiles)/+page.svelte
+++ b/src/routes/(tiles)/+page.svelte
@@ -1,4 +1,6 @@
-
@@ -23,16 +28,7 @@
-
-
-
-
+