Index: src/routes/admin-settings.js
===================================================================
--- src/routes/admin-settings.js	(revision 6351545b08183045fe69f8d75db78b7e58951786)
+++ src/routes/admin-settings.js	(revision 6351545b08183045fe69f8d75db78b7e58951786)
@@ -0,0 +1,32 @@
+/**
+ * Admin: globale instellingen — nu de tenancy-modus (Solo/Hub).
+ *
+ * GET  /admin/settings        -> toon huidige modus + uitleg
+ * POST /admin/settings        -> sla modus op (god-only)
+ *
+ * Schakelen is niet-destructief: Solo verbergt alleen de multi-site-onderdelen
+ * en routeert naar de primaire site; er wordt niets verwijderd.
+ */
+
+import express from 'express';
+import { renderPage } from '../middleware/render.js';
+import { requireGod } from '../middleware/auth.js';
+import { getTenancy, setTenancy } from '../services/SettingsService.js';
+
+const router = express.Router();
+
+router.get('/', requireGod, (req, res) => {
+  renderPage(req, res, 'pages/admin-settings', {
+    pageTitle: 'Instellingen',
+    bodyClass: 'on-admin',
+    tenancy: getTenancy(),
+    success: req.query.success || null,
+  });
+});
+
+router.post('/', requireGod, (req, res) => {
+  setTenancy(req.body.tenancy === 'hub' ? 'hub' : 'solo');
+  res.redirect('/admin/settings?success=' + encodeURIComponent('Modus opgeslagen'));
+});
+
+export default router;
Index: src/routes/admin.js
===================================================================
--- src/routes/admin.js	(revision 9e27d64c70dff768f7a07cb5f10586ad65f56c42)
+++ 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,
