diff --git a/frontend/src/lib/components/RoomCard.svelte b/frontend/src/lib/components/RoomCard.svelte
new file mode 100644
index 0000000..1c8e2bb
--- /dev/null
+++ b/frontend/src/lib/components/RoomCard.svelte
@@ -0,0 +1,72 @@
+
+
+
+ {#if room.preview === 'art' && artImg}
+
+ {/if}
+
+
+
{room.icon}{room.title}
+
+ {#if room.preview === 'news' && newsHeadline}
+
“{newsHeadline}”
+ {:else}
+
{room.blurb}
+ {/if}
+
+
{room.cta} →
+
+
+
+
diff --git a/frontend/src/lib/rooms.js b/frontend/src/lib/rooms.js
new file mode 100644
index 0000000..18f8d6b
--- /dev/null
+++ b/frontend/src/lib/rooms.js
@@ -0,0 +1,46 @@
+// The homepage hub as data. Each "room" is one entry — add, reorder, or resize by
+// editing this list. `size` drives the grid footprint (large | wide | tall | small);
+// `preview` picks how the card shows itself (news/art = live snippet, static = blurb).
+// Copy here is placeholder — owner-written final wording lands later.
+export const ROOMS = [
+ {
+ id: 'news',
+ title: 'Good News',
+ blurb: "The world's quiet good, gathered each morning.",
+ href: '/', // becomes /news once the Brief is split out
+ cta: 'Read the Brief',
+ size: 'large',
+ preview: 'news',
+ icon: '📰',
+ },
+ {
+ id: 'art',
+ title: 'Daily Art',
+ blurb: 'A masterwork a day, beautifully framed.',
+ href: '/art',
+ cta: 'View today',
+ size: 'wide',
+ preview: 'art',
+ icon: '🖼️',
+ },
+ {
+ id: 'play',
+ title: 'Play',
+ blurb: 'Daily Word, Word Search, Bloom, Memory Match.',
+ href: '/play',
+ cta: 'Enter',
+ size: 'small',
+ preview: 'static',
+ icon: '🎲',
+ },
+ {
+ id: 'moment',
+ title: 'Daily Moment',
+ blurb: 'A small calm to carry with you.',
+ href: '#',
+ cta: 'Soon',
+ size: 'small',
+ preview: 'static',
+ icon: '🌿',
+ },
+];
diff --git a/frontend/src/routes/home2/+page.svelte b/frontend/src/routes/home2/+page.svelte
new file mode 100644
index 0000000..2d9f413
--- /dev/null
+++ b/frontend/src/routes/home2/+page.svelte
@@ -0,0 +1,122 @@
+
+
+
+ upbeatBytes — a calmer corner of the internet
+
+
+
+
+
+
+
+
+
+
A calmer corner of the internet.
+
Good news, daily art, small games, and little resets.
+
+
+
+ {#each ROOMS as r (r.id)}
+
+ {/each}
+
+
+
+
+
+
+