Index: src/routes/admin.js
===================================================================
--- src/routes/admin.js	(revision 7bc636b391c66ac399c33e54f7173a022c6a3cbd)
+++ src/routes/admin.js	(revision 6351545b08183045fe69f8d75db78b7e58951786)
@@ -9,8 +9,17 @@
 import { renderPage } from '../middleware/render.js';
 import { requireGod } from '../middleware/auth.js';
+import { getTenancy } from '../services/SettingsService.js';
 
 const router = express.Router();
 
 router.get('/', requireGod, (req, res) => {
+  const tenancy = getTenancy();
+
+  // De primaire/owner-site — in solo dé site, in hub de hoofdsite. Geeft de
+  // "Uiterlijk"-tegel z'n edit-link.
+  const primarySite = db.prepare(
+    'SELECT slug, title FROM sites ORDER BY created_at ASC LIMIT 1'
+  ).get() || null;
+
   const stats = {
     users: db.prepare('SELECT COUNT(*) AS c FROM users').get().c,
@@ -22,5 +31,6 @@
   };
 
-  const sites = db.prepare(`
+  // Sites/users-tabellen zijn alleen in hub relevant; in solo besparen we de query.
+  const sites = tenancy === 'hub' ? db.prepare(`
     SELECT s.slug, s.title, s.created_at, u.username AS owner_username
     FROM sites s
@@ -28,16 +38,18 @@
     ORDER BY s.created_at DESC
     LIMIT 50
-  `).all();
+  `).all() : [];
 
-  const users = db.prepare(`
+  const users = tenancy === 'hub' ? db.prepare(`
     SELECT username, email, role, created_at
     FROM users
     ORDER BY created_at DESC
     LIMIT 50
-  `).all();
+  `).all() : [];
 
   renderPage(req, res, 'pages/admin', {
-    pageTitle: 'Admin',
+    pageTitle: 'Beheer',
     bodyClass: 'on-admin',
+    tenancy,
+    primarySite,
     stats,
     sites,
