Index: src/config/database.js
===================================================================
--- src/config/database.js	(revision 7881080819a21d5ba5da32d94ef51da0d866eea0)
+++ src/config/database.js	(revision 2e247e4c529b09d55619100d5bd4e50de5a95e54)
@@ -188,4 +188,34 @@
   // Tags van de originele post — getoond in de cirkel (comma-separated string).
   ensureColumn('remote_posts', 'tags', 'TEXT');
+
+  // Nieuwsbrief / mailinglijst (premium). Abonnees per site; double opt-in als SMTP
+  // er is (status 'pending' tot bevestigd), anders single opt-in ('confirmed').
+  // 'unsub' = uitgeschreven. token = confirm/unsubscribe-sleutel (in de e-maillinks).
+  db.exec(`
+    CREATE TABLE IF NOT EXISTS subscribers (
+      id TEXT PRIMARY KEY,
+      site_id TEXT NOT NULL,
+      email TEXT NOT NULL,
+      status TEXT NOT NULL DEFAULT 'pending',
+      source TEXT DEFAULT 'widget',
+      token TEXT NOT NULL,
+      created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+      confirmed_at DATETIME,
+      UNIQUE(site_id, email)
+    );
+    CREATE INDEX IF NOT EXISTS idx_subscribers_site_status ON subscribers(site_id, status);
+  `);
+
+  // Verstuurde nieuwsbrieven (historie + aantallen).
+  db.exec(`
+    CREATE TABLE IF NOT EXISTS newsletters (
+      id TEXT PRIMARY KEY,
+      site_id TEXT NOT NULL,
+      subject TEXT NOT NULL,
+      body TEXT NOT NULL,
+      sent_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+      recipient_count INTEGER DEFAULT 0
+    );
+  `);
 }
 
