Index: src/routes/hub.js
===================================================================
--- src/routes/hub.js	(revision 8afbdd6572a947bce4726d5aa0d0aa0d6c7e5067)
+++ src/routes/hub.js	(revision ce8c8c298d5ac9eae09ab3f1c522a1710ba832f8)
@@ -35,7 +35,20 @@
   `).all();
 
+  // De hoofd-/labelsite (oudste = de bedrijfs-/hoofdaccount) is GEEN artiest;
+  // die tonen we apart bovenaan, niet in de Artiesten-roster.
+  const mainSite = db.prepare(`
+    SELECT s.id, s.slug, s.title, s.tagline, s.profile_photo, s.accent,
+           u.avatar_url AS owner_avatar,
+           (SELECT COUNT(*) FROM posts WHERE site_id = s.id AND status = 'published') AS post_count
+    FROM sites s
+    LEFT JOIN users u ON u.id = s.owner_id
+    ORDER BY s.created_at ASC
+    LIMIT 1
+  `).get() || null;
+  const mainId = mainSite ? mainSite.id : '';
+
   // Uitgelichte PrutFolio's voor de home-roster: meest-actief eerst (aantal
-  // gepubliceerde posts), dan nieuwste. Beperkt tot HOME_ROSTER_LIMIT zodat de
-  // home schaalt — de volledige, doorzoekbare lijst staat op /artiesten.
+  // gepubliceerde posts), dan nieuwste. Excl. de hoofdsite. Beperkt tot
+  // HOME_ROSTER_LIMIT zodat de home schaalt — volledige lijst staat op /artiesten.
   const HOME_ROSTER_LIMIT = 24;
   const artists = db.prepare(`
@@ -45,8 +58,9 @@
     FROM sites s
     LEFT JOIN users u ON u.id = s.owner_id
+    WHERE s.id != @mainId
     ORDER BY post_count DESC, s.created_at DESC
-    LIMIT ?
-  `).all(HOME_ROSTER_LIMIT);
-  const totalArtists = db.prepare('SELECT COUNT(*) AS c FROM sites').get().c;
+    LIMIT @limit
+  `).all({ mainId, limit: HOME_ROSTER_LIMIT });
+  const totalArtists = db.prepare('SELECT COUNT(*) AS c FROM sites WHERE id != ?').get(mainId).c;
 
   // De hub-pagina is GENERIEK (van geen enkele user) — branding komt uit globale
@@ -64,4 +78,5 @@
     bodyClass: 'on-home on-hub',
     hub,
+    mainSite,
     artists,
     totalArtists,
