Index: src/config/database.js
===================================================================
--- src/config/database.js	(revision c9c6a2d6cf1cf1611a79c699dd70c435bda3c203)
+++ src/config/database.js	(revision 9a34d316167a02b00b2db89b9a8083abe4cbef39)
@@ -254,6 +254,8 @@
   // Meldingen: iemand reageert op je reactie / post, of liket je post. Snapshots
   // van naam/titel zodat de lijst goedkoop te tonen is zonder joins.
-  db.exec(`
-    CREATE TABLE IF NOT EXISTS notifications (
+  // NB: bewust 'user_notifications' — sommige oudere DBs hebben nog een stale,
+  // ongebruikte 'notifications'-tabel met een ander schema (geen read-kolom).
+  db.exec(`
+    CREATE TABLE IF NOT EXISTS user_notifications (
       id TEXT PRIMARY KEY,
       user_id TEXT NOT NULL,
@@ -267,5 +269,5 @@
       created_at DATETIME DEFAULT CURRENT_TIMESTAMP
     );
-    CREATE INDEX IF NOT EXISTS idx_notif_user ON notifications(user_id, read, created_at);
+    CREATE INDEX IF NOT EXISTS idx_unotif_user ON user_notifications(user_id, read, created_at);
   `);
 
Index: src/services/NotificationService.js
===================================================================
--- src/services/NotificationService.js	(revision c9c6a2d6cf1cf1611a79c699dd70c435bda3c203)
+++ src/services/NotificationService.js	(revision 9a34d316167a02b00b2db89b9a8083abe4cbef39)
@@ -13,5 +13,5 @@
   try {
     db.prepare(`
-      INSERT INTO notifications (id, user_id, type, actor_id, actor_name, post_slug, post_title, url, read)
+      INSERT INTO user_notifications (id, user_id, type, actor_id, actor_name, post_slug, post_title, url, read)
       VALUES (?, ?, ?, ?, ?, ?, ?, ?, 0)
     `).run(randomUUID(), userId, type, actorId || null, actorName || null, postSlug || null, postTitle || null, url || null);
@@ -21,5 +21,5 @@
 export function unreadCount(userId) {
   if (!userId) return 0;
-  try { return db.prepare('SELECT COUNT(*) AS c FROM notifications WHERE user_id = ? AND read = 0').get(userId).c; }
+  try { return db.prepare('SELECT COUNT(*) AS c FROM user_notifications WHERE user_id = ? AND read = 0').get(userId).c; }
   catch { return 0; }
 }
@@ -27,5 +27,5 @@
 export function list(userId, limit = 50) {
   if (!userId) return [];
-  try { return db.prepare('SELECT * FROM notifications WHERE user_id = ? ORDER BY created_at DESC LIMIT ?').all(userId, limit); }
+  try { return db.prepare('SELECT * FROM user_notifications WHERE user_id = ? ORDER BY created_at DESC LIMIT ?').all(userId, limit); }
   catch { return []; }
 }
@@ -33,5 +33,5 @@
 export function markAllRead(userId) {
   if (!userId) return;
-  try { db.prepare('UPDATE notifications SET read = 1 WHERE user_id = ? AND read = 0').run(userId); } catch { /* noop */ }
+  try { db.prepare('UPDATE user_notifications SET read = 1 WHERE user_id = ? AND read = 0').run(userId); } catch { /* noop */ }
 }
 
