@knowcode/doc-builder 1.8.2 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/.claude/settings.local.json +5 -1
  2. package/CHANGELOG.md +39 -3
  3. package/README.md +4 -4
  4. package/assets/css/notion-style.css +26 -0
  5. package/cli.js +9 -40
  6. package/debug-login.sql +30 -0
  7. package/html/README.html +27 -3
  8. package/html/auth.js +2 -2
  9. package/html/css/notion-style.css +26 -0
  10. package/html/documentation-index.html +27 -3
  11. package/html/guides/authentication-default-change.html +27 -3
  12. package/html/guides/authentication-guide.html +58 -45
  13. package/html/guides/claude-workflow-guide.html +27 -3
  14. package/html/guides/documentation-standards.html +27 -3
  15. package/html/guides/phosphor-icons-guide.html +27 -3
  16. package/html/guides/private-directory-authentication.html +59 -17
  17. package/html/guides/public-site-deployment.html +32 -9
  18. package/html/guides/search-engine-verification-guide.html +27 -3
  19. package/html/guides/seo-guide.html +27 -3
  20. package/html/guides/seo-optimization-guide.html +27 -3
  21. package/html/guides/troubleshooting-guide.html +27 -3
  22. package/html/guides/windows-setup-guide.html +27 -3
  23. package/html/index.html +27 -3
  24. package/html/js/auth.js +2 -2
  25. package/html/login.html +2 -2
  26. package/html/private/cache-control-anti-pattern.html +5 -5
  27. package/html/private/launch/README.html +5 -5
  28. package/html/private/launch/auth-cleanup-summary.html +5 -5
  29. package/html/private/launch/bubble-plugin-specification.html +5 -5
  30. package/html/private/launch/go-to-market-strategy.html +5 -5
  31. package/html/private/launch/launch-announcements.html +5 -5
  32. package/html/private/launch/vercel-deployment-auth-setup.html +27 -21
  33. package/html/private/next-steps-walkthrough.html +18 -45
  34. package/html/private/supabase-auth-implementation-completed.html +8 -8
  35. package/html/private/supabase-auth-implementation-plan.html +16 -33
  36. package/html/private/supabase-auth-integration-plan.html +34 -69
  37. package/html/private/supabase-auth-setup-guide.html +73 -84
  38. package/html/private/test-private-doc.html +5 -5
  39. package/html/private/user-management-tooling.html +9 -15
  40. package/html/sitemap.xml +44 -44
  41. package/html/vercel-cli-setup-guide.html +27 -3
  42. package/html/vercel-first-time-setup-guide.html +27 -3
  43. package/lib/config.js +3 -11
  44. package/lib/core-builder.js +7 -12
  45. package/lib/shared-auth-config.js +2 -10
  46. package/lib/supabase-auth.js +5 -11
  47. package/migrate-to-domain-auth.sql +47 -0
  48. package/package.json +1 -1
  49. package/setup-database-v2.sql +53 -0
  50. package/user-access-view.sql +49 -0
  51. package/user-management/README.md +9 -18
  52. package/user-management/add-users.sh +31 -11
@@ -98,8 +98,8 @@
98
98
  "name": "Knowcode Ltd",
99
99
  "url": "https://knowcode.tech"
100
100
  },
101
- "datePublished": "2025-07-26T10:38:42.018Z",
102
- "dateModified": "2025-07-26T10:38:42.018Z",
101
+ "datePublished": "2025-07-26T11:44:31.524Z",
102
+ "dateModified": "2025-07-26T11:44:31.524Z",
103
103
  "mainEntityOfPage": {
104
104
  "@type": "WebPage",
105
105
  "@id": "https://doc-builder-delta.vercel.app/private/launch/launch-announcements.html"
@@ -144,7 +144,7 @@
144
144
 
145
145
  <div class="header-actions">
146
146
  <div class="deployment-info">
147
- <span class="deployment-date" title="Built with doc-builder v1.8.1">Last updated: Jul 26, 2025, 10:38 AM UTC</span>
147
+ <span class="deployment-date" title="Built with doc-builder v1.8.3">Last updated: Jul 26, 2025, 11:44 AM UTC</span>
148
148
  </div>
149
149
 
150
150
 
@@ -218,7 +218,7 @@
218
218
  <a href="/guides/seo-optimization-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features that automatically optimize your documentation for search..."><i class="fas fa-file-alt"></i> Seo Optimization Guide</a>
219
219
  <a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a>
220
220
  <a href="/guides/windows-setup-guide.html" class="nav-item" data-tooltip="This guide helps Windows users set up the complete AI-powered documentation workflow using Claude Code, @knowcode/doc-builder, and Vercel."><i class="fas fa-file-alt"></i> Windows Setup Guide</a></div></div>
221
- <div class="nav-section" data-level="1">
221
+ <div class="nav-section private-nav" data-level="1">
222
222
  <a class="nav-title collapsible expanded" href="#" data-target="nav-private-1" >
223
223
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Private
224
224
  </a>
@@ -231,7 +231,7 @@
231
231
  <a href="/private/supabase-auth-setup-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder supports enterprise-grade authentication through Supabase."><i class="fas fa-file-alt"></i> Supabase Auth Setup Guide</a>
232
232
  <a href="/private/test-private-doc.html" class="nav-item" data-tooltip="Test Private Document."><i class="fas fa-file-alt"></i> Test Private Doc</a>
233
233
  <a href="/private/user-management-tooling.html" class="nav-item" data-tooltip="The user management system is a set of tools designed to manage user access to Supabase-authenticated documentation sites built with."><i class="fas fa-file-alt"></i> User Management Tooling</a></div></div>
234
- <div class="nav-section" data-level="2">
234
+ <div class="nav-section private-nav" data-level="2">
235
235
  <a class="nav-title collapsible expanded" href="/private/launch/README.html" data-target="nav-private-launch-2" >
236
236
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Launch
237
237
  </a>
@@ -98,8 +98,8 @@
98
98
  "name": "Knowcode Ltd",
99
99
  "url": "https://knowcode.tech"
100
100
  },
101
- "datePublished": "2025-07-26T10:38:42.020Z",
102
- "dateModified": "2025-07-26T10:38:42.020Z",
101
+ "datePublished": "2025-07-26T11:44:31.526Z",
102
+ "dateModified": "2025-07-26T11:44:31.526Z",
103
103
  "mainEntityOfPage": {
104
104
  "@type": "WebPage",
105
105
  "@id": "https://doc-builder-delta.vercel.app/private/launch/vercel-deployment-auth-setup.html"
@@ -144,7 +144,7 @@
144
144
 
145
145
  <div class="header-actions">
146
146
  <div class="deployment-info">
147
- <span class="deployment-date" title="Built with doc-builder v1.8.1">Last updated: Jul 26, 2025, 10:38 AM UTC</span>
147
+ <span class="deployment-date" title="Built with doc-builder v1.8.3">Last updated: Jul 26, 2025, 11:44 AM UTC</span>
148
148
  </div>
149
149
 
150
150
 
@@ -218,7 +218,7 @@
218
218
  <a href="/guides/seo-optimization-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features that automatically optimize your documentation for search..."><i class="fas fa-file-alt"></i> Seo Optimization Guide</a>
219
219
  <a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a>
220
220
  <a href="/guides/windows-setup-guide.html" class="nav-item" data-tooltip="This guide helps Windows users set up the complete AI-powered documentation workflow using Claude Code, @knowcode/doc-builder, and Vercel."><i class="fas fa-file-alt"></i> Windows Setup Guide</a></div></div>
221
- <div class="nav-section" data-level="1">
221
+ <div class="nav-section private-nav" data-level="1">
222
222
  <a class="nav-title collapsible expanded" href="#" data-target="nav-private-1" >
223
223
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Private
224
224
  </a>
@@ -231,7 +231,7 @@
231
231
  <a href="/private/supabase-auth-setup-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder supports enterprise-grade authentication through Supabase."><i class="fas fa-file-alt"></i> Supabase Auth Setup Guide</a>
232
232
  <a href="/private/test-private-doc.html" class="nav-item" data-tooltip="Test Private Document."><i class="fas fa-file-alt"></i> Test Private Doc</a>
233
233
  <a href="/private/user-management-tooling.html" class="nav-item" data-tooltip="The user management system is a set of tools designed to manage user access to Supabase-authenticated documentation sites built with."><i class="fas fa-file-alt"></i> User Management Tooling</a></div></div>
234
- <div class="nav-section" data-level="2">
234
+ <div class="nav-section private-nav" data-level="2">
235
235
  <a class="nav-title collapsible expanded" href="/private/launch/README.html" data-target="nav-private-launch-2" >
236
236
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Launch
237
237
  </a>
@@ -255,16 +255,19 @@
255
255
  <ul>
256
256
  <li><strong>URL</strong>: <a href="https://doc-builder-2znroyb5z-lindsay-1340s-projects.vercel.app">https://doc-builder-2znroyb5z-lindsay-1340s-projects.vercel.app</a></li>
257
257
  </ul>
258
- <h2>Step 1: Update Supabase Database</h2>
259
- <p>You need to update the domain in your Supabase database to allow authentication from the Vercel domain.</p>
258
+ <h2>Step 1: Grant User Access for Vercel Domain</h2>
259
+ <p>Since we now use domain-based authentication, you need to grant users access to the Vercel domain.</p>
260
260
  <h3>Option A: Using Supabase Dashboard (Recommended)</h3>
261
261
  <ol>
262
262
  <li>Go to your Supabase project: <a href="https://supabase.com/dashboard/project/xcihhnfcitjrwbynxmka">https://supabase.com/dashboard/project/xcihhnfcitjrwbynxmka</a></li>
263
263
  <li>Click on <strong>Table Editor</strong> in the left sidebar</li>
264
- <li>Select the <code>docbuilder_sites</code> table</li>
265
- <li>Find the row with ID <code>4d8a53bf-dcdd-48c0-98e0-cd1451518735</code></li>
266
- <li>Click the edit icon (pencil)</li>
267
- <li>Change the <code>domain</code> field from <code>localhost:3000</code> to <code>doc-builder-2znroyb5z-lindsay-1340s-projects.vercel.app</code></li>
264
+ <li>Select the <code>docbuilder_access</code> table</li>
265
+ <li>Click <strong>Insert row</strong></li>
266
+ <li>Add:<ul>
267
+ <li><code>user_id</code>: Select the test user from dropdown</li>
268
+ <li><code>domain</code>: <code>doc-builder-2znroyb5z-lindsay-1340s-projects.vercel.app</code></li>
269
+ </ul>
270
+ </li>
268
271
  <li>Click <strong>Save</strong></li>
269
272
  </ol>
270
273
  <h3>Option B: Using SQL Editor</h3>
@@ -273,15 +276,18 @@
273
276
  <li>Click on <strong>SQL Editor</strong> in the left sidebar</li>
274
277
  <li>Run this SQL command:</li>
275
278
  </ol>
276
- <pre><code class="language-sql">-- Update domain for Vercel deployment
277
- UPDATE docbuilder_sites
278
- SET domain = &#39;doc-builder-2znroyb5z-lindsay-1340s-projects.vercel.app&#39;
279
- WHERE id = &#39;4d8a53bf-dcdd-48c0-98e0-cd1451518735&#39;;
279
+ <pre><code class="language-sql">-- Grant user access to Vercel deployment domain
280
+ INSERT INTO docbuilder_access (user_id, domain)
281
+ VALUES (
282
+ (SELECT id FROM auth.users WHERE email = &#39;testuser@example.com&#39;),
283
+ &#39;doc-builder-2znroyb5z-lindsay-1340s-projects.vercel.app&#39;
284
+ );
280
285
 
281
- -- Verify the update
282
- SELECT id, domain, name
283
- FROM docbuilder_sites
284
- WHERE id = &#39;4d8a53bf-dcdd-48c0-98e0-cd1451518735&#39;;
286
+ -- Verify the access
287
+ SELECT u.email, da.domain, da.created_at
288
+ FROM docbuilder_access da
289
+ JOIN auth.users u ON u.id = da.user_id
290
+ WHERE da.domain = &#39;doc-builder-2znroyb5z-lindsay-1340s-projects.vercel.app&#39;;
285
291
  </code></pre>
286
292
  <h2>Step 2: Test Authentication Flow</h2>
287
293
  <p>Once the database is updated, test the authentication:</p>
@@ -348,8 +354,8 @@ npx @knowcode/doc-builder auth:add-user production-email@example.com
348
354
  </li>
349
355
  <li><p><strong>Deploy Multiple Sites</strong>:</p>
350
356
  <ul>
351
- <li>Each site gets unique site_id</li>
352
- <li>Users can have access to multiple sites</li>
357
+ <li>Each site uses its domain for authentication</li>
358
+ <li>Users can have access to multiple domains</li>
353
359
  <li>Central authentication system</li>
354
360
  </ul>
355
361
  </li>
@@ -98,8 +98,8 @@
98
98
  "name": "Knowcode Ltd",
99
99
  "url": "https://knowcode.tech"
100
100
  },
101
- "datePublished": "2025-07-26T10:38:42.022Z",
102
- "dateModified": "2025-07-26T10:38:42.022Z",
101
+ "datePublished": "2025-07-26T11:44:31.528Z",
102
+ "dateModified": "2025-07-26T11:44:31.528Z",
103
103
  "mainEntityOfPage": {
104
104
  "@type": "WebPage",
105
105
  "@id": "https://doc-builder-delta.vercel.app/private/next-steps-walkthrough.html"
@@ -138,7 +138,7 @@
138
138
 
139
139
  <div class="header-actions">
140
140
  <div class="deployment-info">
141
- <span class="deployment-date" title="Built with doc-builder v1.8.1">Last updated: Jul 26, 2025, 10:38 AM UTC</span>
141
+ <span class="deployment-date" title="Built with doc-builder v1.8.3">Last updated: Jul 26, 2025, 11:44 AM UTC</span>
142
142
  </div>
143
143
 
144
144
 
@@ -212,7 +212,7 @@
212
212
  <a href="/guides/seo-optimization-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features that automatically optimize your documentation for search..."><i class="fas fa-file-alt"></i> Seo Optimization Guide</a>
213
213
  <a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a>
214
214
  <a href="/guides/windows-setup-guide.html" class="nav-item" data-tooltip="This guide helps Windows users set up the complete AI-powered documentation workflow using Claude Code, @knowcode/doc-builder, and Vercel."><i class="fas fa-file-alt"></i> Windows Setup Guide</a></div></div>
215
- <div class="nav-section" data-level="1">
215
+ <div class="nav-section private-nav" data-level="1">
216
216
  <a class="nav-title collapsible expanded" href="#" data-target="nav-private-1" >
217
217
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Private
218
218
  </a>
@@ -225,7 +225,7 @@
225
225
  <a href="/private/supabase-auth-setup-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder supports enterprise-grade authentication through Supabase."><i class="fas fa-file-alt"></i> Supabase Auth Setup Guide</a>
226
226
  <a href="/private/test-private-doc.html" class="nav-item" data-tooltip="Test Private Document."><i class="fas fa-file-alt"></i> Test Private Doc</a>
227
227
  <a href="/private/user-management-tooling.html" class="nav-item" data-tooltip="The user management system is a set of tools designed to manage user access to Supabase-authenticated documentation sites built with."><i class="fas fa-file-alt"></i> User Management Tooling</a></div></div>
228
- <div class="nav-section" data-level="2">
228
+ <div class="nav-section private-nav" data-level="2">
229
229
  <a class="nav-title collapsible" href="/private/launch/README.html" data-target="nav-private-launch-2" >
230
230
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Launch
231
231
  </a>
@@ -268,37 +268,21 @@ npm install
268
268
  <li><strong>Go to SQL Editor</strong> in Supabase dashboard</li>
269
269
  <li><strong>Run this SQL</strong> to create the required tables:</li>
270
270
  </ol>
271
- <pre><code class="language-sql">-- Table 1: Documentation sites
272
- CREATE TABLE docbuilder_sites (
273
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
274
- domain TEXT UNIQUE NOT NULL,
275
- name TEXT NOT NULL,
276
- created_at TIMESTAMPTZ DEFAULT NOW()
277
- );
278
-
279
- -- Table 2: User access mapping
271
+ <pre><code class="language-sql">-- Single table for user access control (simplified!)
280
272
  CREATE TABLE docbuilder_access (
281
273
  user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
282
- site_id UUID REFERENCES docbuilder_sites(id) ON DELETE CASCADE,
274
+ domain TEXT NOT NULL,
283
275
  created_at TIMESTAMPTZ DEFAULT NOW(),
284
- PRIMARY KEY (user_id, site_id)
276
+ PRIMARY KEY (user_id, domain)
285
277
  );
286
278
 
279
+ -- Create index for faster lookups
280
+ CREATE INDEX idx_docbuilder_access_domain ON docbuilder_access(domain);
281
+
287
282
  -- Enable Row Level Security
288
- ALTER TABLE docbuilder_sites ENABLE ROW LEVEL SECURITY;
289
283
  ALTER TABLE docbuilder_access ENABLE ROW LEVEL SECURITY;
290
284
 
291
- -- RLS Policy: Users can only see sites they have access to
292
- CREATE POLICY &quot;Users see accessible sites&quot; ON docbuilder_sites
293
- FOR SELECT USING (
294
- EXISTS (
295
- SELECT 1 FROM docbuilder_access
296
- WHERE site_id = docbuilder_sites.id
297
- AND user_id = auth.uid()
298
- )
299
- );
300
-
301
- -- RLS Policy: Users can see their own access
285
+ -- RLS Policy: Users can only see their own access
302
286
  CREATE POLICY &quot;Users see own access&quot; ON docbuilder_access
303
287
  FOR SELECT USING (user_id = auth.uid());
304
288
  </code></pre>
@@ -325,9 +309,8 @@ module.exports = {
325
309
  },
326
310
 
327
311
  auth: {
328
- supabaseUrl: &#39;YOUR_SUPABASE_URL_HERE&#39;,
329
- supabaseAnonKey: &#39;YOUR_ANON_KEY_HERE&#39;,
330
- siteId: &#39;&#39; // Will be filled in next step
312
+ supabaseUrl: &#39;YOUR_SUPABASE_URL_HERE&#39;, // Optional - has defaults
313
+ supabaseAnonKey: &#39;YOUR_ANON_KEY_HERE&#39; // Optional - has defaults
331
314
  }
332
315
  };
333
316
  EOF
@@ -343,18 +326,8 @@ EOF
343
326
  </code></pre>
344
327
  <p>This should prompt you for Supabase credentials and create/update the config.</p>
345
328
  <ol start="2">
346
- <li><strong>Add a test site to database</strong>:</li>
329
+ <li><strong>No site registration needed!</strong> The new system uses domains automatically.</li>
347
330
  </ol>
348
- <pre><code class="language-sql">-- Run in Supabase SQL Editor
349
- INSERT INTO docbuilder_sites (domain, name)
350
- VALUES (&#39;localhost:3000&#39;, &#39;Test Site&#39;)
351
- RETURNING id;
352
- </code></pre>
353
- <ol start="3">
354
- <li><strong>Copy the returned site ID</strong> and update your <code>test-config.js</code>:</li>
355
- </ol>
356
- <pre><code class="language-javascript">siteId: &#39;the-uuid-returned-from-above&#39;
357
- </code></pre>
358
331
  <h3>Step 7: Create Test Documentation</h3>
359
332
  <ol>
360
333
  <li><strong>Create test docs folder</strong>:</li>
@@ -422,9 +395,9 @@ If you can see this page, authentication is working!&quot; &gt; test-docs/README
422
395
  </ol>
423
396
  <h3>Step 11: Grant Access to Test User</h3>
424
397
  <pre><code class="language-sql">-- Run in Supabase SQL Editor
425
- -- Replace with actual user ID and site ID
426
- INSERT INTO docbuilder_access (user_id, site_id)
427
- VALUES (&#39;USER_ID_FROM_STEP_10&#39;, &#39;SITE_ID_FROM_STEP_6&#39;);
398
+ -- Replace with actual user ID from step 10
399
+ INSERT INTO docbuilder_access (user_id, domain)
400
+ VALUES (&#39;USER_ID_FROM_STEP_10&#39;, &#39;localhost:3001&#39;);
428
401
  </code></pre>
429
402
  <h3>Step 12: Test Complete Flow</h3>
430
403
  <ol>
@@ -98,8 +98,8 @@
98
98
  "name": "Knowcode Ltd",
99
99
  "url": "https://knowcode.tech"
100
100
  },
101
- "datePublished": "2025-07-26T10:38:42.025Z",
102
- "dateModified": "2025-07-26T10:38:42.025Z",
101
+ "datePublished": "2025-07-26T11:44:31.530Z",
102
+ "dateModified": "2025-07-26T11:44:31.530Z",
103
103
  "mainEntityOfPage": {
104
104
  "@type": "WebPage",
105
105
  "@id": "https://doc-builder-delta.vercel.app/private/supabase-auth-implementation-completed.html"
@@ -138,7 +138,7 @@
138
138
 
139
139
  <div class="header-actions">
140
140
  <div class="deployment-info">
141
- <span class="deployment-date" title="Built with doc-builder v1.8.1">Last updated: Jul 26, 2025, 10:38 AM UTC</span>
141
+ <span class="deployment-date" title="Built with doc-builder v1.8.3">Last updated: Jul 26, 2025, 11:44 AM UTC</span>
142
142
  </div>
143
143
 
144
144
 
@@ -212,7 +212,7 @@
212
212
  <a href="/guides/seo-optimization-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features that automatically optimize your documentation for search..."><i class="fas fa-file-alt"></i> Seo Optimization Guide</a>
213
213
  <a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a>
214
214
  <a href="/guides/windows-setup-guide.html" class="nav-item" data-tooltip="This guide helps Windows users set up the complete AI-powered documentation workflow using Claude Code, @knowcode/doc-builder, and Vercel."><i class="fas fa-file-alt"></i> Windows Setup Guide</a></div></div>
215
- <div class="nav-section" data-level="1">
215
+ <div class="nav-section private-nav" data-level="1">
216
216
  <a class="nav-title collapsible expanded" href="#" data-target="nav-private-1" >
217
217
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Private
218
218
  </a>
@@ -225,7 +225,7 @@
225
225
  <a href="/private/supabase-auth-setup-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder supports enterprise-grade authentication through Supabase."><i class="fas fa-file-alt"></i> Supabase Auth Setup Guide</a>
226
226
  <a href="/private/test-private-doc.html" class="nav-item" data-tooltip="Test Private Document."><i class="fas fa-file-alt"></i> Test Private Doc</a>
227
227
  <a href="/private/user-management-tooling.html" class="nav-item" data-tooltip="The user management system is a set of tools designed to manage user access to Supabase-authenticated documentation sites built with."><i class="fas fa-file-alt"></i> User Management Tooling</a></div></div>
228
- <div class="nav-section" data-level="2">
228
+ <div class="nav-section private-nav" data-level="2">
229
229
  <a class="nav-title collapsible" href="/private/launch/README.html" data-target="nav-private-launch-2" >
230
230
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Launch
231
231
  </a>
@@ -294,9 +294,9 @@
294
294
  authentication: &#39;supabase&#39; // Must explicitly enable
295
295
  },
296
296
  auth: {
297
- supabaseUrl: &#39;https://xxx.supabase.co&#39;,
298
- supabaseAnonKey: &#39;your-anon-key&#39;,
299
- siteId: &#39;your-site-id&#39;
297
+ supabaseUrl: &#39;https://xxx.supabase.co&#39;, // Optional - has defaults
298
+ supabaseAnonKey: &#39;your-anon-key&#39; // Optional - has defaults
299
+ // No siteId needed - uses domain automatically!
300
300
  }
301
301
  };
302
302
  </code></pre>
@@ -98,8 +98,8 @@
98
98
  "name": "Knowcode Ltd",
99
99
  "url": "https://knowcode.tech"
100
100
  },
101
- "datePublished": "2025-07-26T10:38:42.030Z",
102
- "dateModified": "2025-07-26T10:38:42.030Z",
101
+ "datePublished": "2025-07-26T11:44:31.533Z",
102
+ "dateModified": "2025-07-26T11:44:31.533Z",
103
103
  "mainEntityOfPage": {
104
104
  "@type": "WebPage",
105
105
  "@id": "https://doc-builder-delta.vercel.app/private/supabase-auth-implementation-plan.html"
@@ -138,7 +138,7 @@
138
138
 
139
139
  <div class="header-actions">
140
140
  <div class="deployment-info">
141
- <span class="deployment-date" title="Built with doc-builder v1.8.1">Last updated: Jul 26, 2025, 10:38 AM UTC</span>
141
+ <span class="deployment-date" title="Built with doc-builder v1.8.3">Last updated: Jul 26, 2025, 11:44 AM UTC</span>
142
142
  </div>
143
143
 
144
144
 
@@ -212,7 +212,7 @@
212
212
  <a href="/guides/seo-optimization-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features that automatically optimize your documentation for search..."><i class="fas fa-file-alt"></i> Seo Optimization Guide</a>
213
213
  <a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a>
214
214
  <a href="/guides/windows-setup-guide.html" class="nav-item" data-tooltip="This guide helps Windows users set up the complete AI-powered documentation workflow using Claude Code, @knowcode/doc-builder, and Vercel."><i class="fas fa-file-alt"></i> Windows Setup Guide</a></div></div>
215
- <div class="nav-section" data-level="1">
215
+ <div class="nav-section private-nav" data-level="1">
216
216
  <a class="nav-title collapsible expanded" href="#" data-target="nav-private-1" >
217
217
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Private
218
218
  </a>
@@ -225,7 +225,7 @@
225
225
  <a href="/private/supabase-auth-setup-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder supports enterprise-grade authentication through Supabase."><i class="fas fa-file-alt"></i> Supabase Auth Setup Guide</a>
226
226
  <a href="/private/test-private-doc.html" class="nav-item" data-tooltip="Test Private Document."><i class="fas fa-file-alt"></i> Test Private Doc</a>
227
227
  <a href="/private/user-management-tooling.html" class="nav-item" data-tooltip="The user management system is a set of tools designed to manage user access to Supabase-authenticated documentation sites built with."><i class="fas fa-file-alt"></i> User Management Tooling</a></div></div>
228
- <div class="nav-section" data-level="2">
228
+ <div class="nav-section private-nav" data-level="2">
229
229
  <a class="nav-title collapsible" href="/private/launch/README.html" data-target="nav-private-launch-2" >
230
230
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Launch
231
231
  </a>
@@ -278,43 +278,26 @@
278
278
 
279
279
  subgraph "Supabase"
280
280
  AuthUsers[auth.users]
281
- DocSites[docbuilder_sites]
282
- DocAccess[docbuilder_access]
281
+ DocAccess[docbuilder_access with domain]
283
282
  AuthUsers -.-> DocAccess
284
- DocAccess -.-> DocSites
285
283
  end</div>
286
284
  </div>
287
285
  <h2>Database Schema</h2>
288
- <pre><code class="language-sql">-- Table 1: Documentation sites
289
- CREATE TABLE docbuilder_sites (
290
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
291
- domain TEXT UNIQUE NOT NULL,
292
- name TEXT NOT NULL,
293
- created_at TIMESTAMPTZ DEFAULT NOW()
294
- );
295
-
296
- -- Table 2: User access mapping
286
+ <pre><code class="language-sql">-- Single table for user access control (simplified!)
297
287
  CREATE TABLE docbuilder_access (
298
288
  user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
299
- site_id UUID REFERENCES docbuilder_sites(id) ON DELETE CASCADE,
289
+ domain TEXT NOT NULL,
300
290
  created_at TIMESTAMPTZ DEFAULT NOW(),
301
- PRIMARY KEY (user_id, site_id)
291
+ PRIMARY KEY (user_id, domain)
302
292
  );
303
293
 
294
+ -- Create index for faster lookups
295
+ CREATE INDEX idx_docbuilder_access_domain ON docbuilder_access(domain);
296
+
304
297
  -- Enable Row Level Security
305
- ALTER TABLE docbuilder_sites ENABLE ROW LEVEL SECURITY;
306
298
  ALTER TABLE docbuilder_access ENABLE ROW LEVEL SECURITY;
307
299
 
308
- -- RLS Policies
309
- CREATE POLICY &quot;Users see accessible sites&quot; ON docbuilder_sites
310
- FOR SELECT USING (
311
- EXISTS (
312
- SELECT 1 FROM docbuilder_access
313
- WHERE site_id = docbuilder_sites.id
314
- AND user_id = auth.uid()
315
- )
316
- );
317
-
300
+ -- RLS Policy: Users can only see their own access
318
301
  CREATE POLICY &quot;Users see own access&quot; ON docbuilder_access
319
302
  FOR SELECT USING (user_id = auth.uid());
320
303
  </code></pre>
@@ -329,10 +312,10 @@ CREATE POLICY &quot;Users see own access&quot; ON docbuilder_access
329
312
  <p><strong>File</strong>: <code>lib/config.js</code></p>
330
313
  <pre><code class="language-javascript">// Updated auth configuration - REMOVE basic auth fields
331
314
  auth: {
332
- // Only Supabase fields remain
315
+ // Only Supabase fields remain (domain-based, no siteId!)
333
316
  supabaseUrl: &#39;&#39;,
334
- supabaseAnonKey: &#39;&#39;,
335
- siteId: &#39;&#39;
317
+ supabaseAnonKey: &#39;&#39;
318
+ // Domain is detected automatically from window.location.host
336
319
  }
337
320
  </code></pre>
338
321
  <h4>1.2 Create Supabase Auth Module</h4>
@@ -98,8 +98,8 @@
98
98
  "name": "Knowcode Ltd",
99
99
  "url": "https://knowcode.tech"
100
100
  },
101
- "datePublished": "2025-07-26T10:38:42.032Z",
102
- "dateModified": "2025-07-26T10:38:42.032Z",
101
+ "datePublished": "2025-07-26T11:44:31.535Z",
102
+ "dateModified": "2025-07-26T11:44:31.535Z",
103
103
  "mainEntityOfPage": {
104
104
  "@type": "WebPage",
105
105
  "@id": "https://doc-builder-delta.vercel.app/private/supabase-auth-integration-plan.html"
@@ -138,7 +138,7 @@
138
138
 
139
139
  <div class="header-actions">
140
140
  <div class="deployment-info">
141
- <span class="deployment-date" title="Built with doc-builder v1.8.1">Last updated: Jul 26, 2025, 10:38 AM UTC</span>
141
+ <span class="deployment-date" title="Built with doc-builder v1.8.3">Last updated: Jul 26, 2025, 11:44 AM UTC</span>
142
142
  </div>
143
143
 
144
144
 
@@ -212,7 +212,7 @@
212
212
  <a href="/guides/seo-optimization-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features that automatically optimize your documentation for search..."><i class="fas fa-file-alt"></i> Seo Optimization Guide</a>
213
213
  <a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a>
214
214
  <a href="/guides/windows-setup-guide.html" class="nav-item" data-tooltip="This guide helps Windows users set up the complete AI-powered documentation workflow using Claude Code, @knowcode/doc-builder, and Vercel."><i class="fas fa-file-alt"></i> Windows Setup Guide</a></div></div>
215
- <div class="nav-section" data-level="1">
215
+ <div class="nav-section private-nav" data-level="1">
216
216
  <a class="nav-title collapsible expanded" href="#" data-target="nav-private-1" >
217
217
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Private
218
218
  </a>
@@ -225,7 +225,7 @@
225
225
  <a href="/private/supabase-auth-setup-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder supports enterprise-grade authentication through Supabase."><i class="fas fa-file-alt"></i> Supabase Auth Setup Guide</a>
226
226
  <a href="/private/test-private-doc.html" class="nav-item" data-tooltip="Test Private Document."><i class="fas fa-file-alt"></i> Test Private Doc</a>
227
227
  <a href="/private/user-management-tooling.html" class="nav-item" data-tooltip="The user management system is a set of tools designed to manage user access to Supabase-authenticated documentation sites built with."><i class="fas fa-file-alt"></i> User Management Tooling</a></div></div>
228
- <div class="nav-section" data-level="2">
228
+ <div class="nav-section private-nav" data-level="2">
229
229
  <a class="nav-title collapsible" href="/private/launch/README.html" data-target="nav-private-launch-2" >
230
230
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Launch
231
231
  </a>
@@ -287,77 +287,40 @@
287
287
  style RLS fill:#f87171</div>
288
288
  </div>
289
289
  <h2>Database Schema</h2>
290
- <h3>Core Tables</h3>
291
- <pre><code class="language-sql">-- Organizations table
292
- CREATE TABLE organizations (
293
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
294
- name TEXT NOT NULL,
295
- slug TEXT UNIQUE NOT NULL,
296
- created_at TIMESTAMPTZ DEFAULT NOW(),
297
- settings JSONB DEFAULT &#39;{}&#39;::jsonb
298
- );
299
-
300
- -- Documentation sites table
301
- CREATE TABLE doc_sites (
302
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
303
- org_id UUID REFERENCES organizations(id),
304
- name TEXT NOT NULL,
305
- domain TEXT UNIQUE NOT NULL,
306
- config JSONB DEFAULT &#39;{}&#39;::jsonb,
290
+ <h3>Simplified Domain-Based Design</h3>
291
+ <pre><code class="language-sql">-- Single table for user access control
292
+ CREATE TABLE docbuilder_access (
293
+ user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
294
+ domain TEXT NOT NULL,
307
295
  created_at TIMESTAMPTZ DEFAULT NOW(),
308
- is_active BOOLEAN DEFAULT true
296
+ PRIMARY KEY (user_id, domain)
309
297
  );
310
298
 
311
- -- User access table (many-to-many)
312
- CREATE TABLE user_site_access (
313
- user_id UUID REFERENCES auth.users(id),
314
- site_id UUID REFERENCES doc_sites(id),
315
- role TEXT NOT NULL DEFAULT &#39;viewer&#39;,
316
- granted_at TIMESTAMPTZ DEFAULT NOW(),
317
- granted_by UUID REFERENCES auth.users(id),
318
- expires_at TIMESTAMPTZ,
319
- PRIMARY KEY (user_id, site_id)
320
- );
299
+ -- Create index for faster lookups
300
+ CREATE INDEX idx_docbuilder_access_domain ON docbuilder_access(domain);
321
301
 
322
- -- Access logs for audit trail
302
+ -- Optional: Access logs for audit trail
323
303
  CREATE TABLE access_logs (
324
304
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
325
305
  user_id UUID REFERENCES auth.users(id),
326
- site_id UUID REFERENCES doc_sites(id),
306
+ domain TEXT NOT NULL,
327
307
  action TEXT NOT NULL,
328
308
  metadata JSONB DEFAULT &#39;{}&#39;::jsonb,
329
309
  ip_address INET,
330
310
  user_agent TEXT,
331
311
  created_at TIMESTAMPTZ DEFAULT NOW()
332
312
  );
333
-
334
- -- Invitation links
335
- CREATE TABLE invitations (
336
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
337
- site_id UUID REFERENCES doc_sites(id),
338
- email TEXT NOT NULL,
339
- role TEXT NOT NULL DEFAULT &#39;viewer&#39;,
340
- token TEXT UNIQUE NOT NULL,
341
- created_by UUID REFERENCES auth.users(id),
342
- created_at TIMESTAMPTZ DEFAULT NOW(),
343
- expires_at TIMESTAMPTZ NOT NULL,
344
- claimed_at TIMESTAMPTZ,
345
- claimed_by UUID REFERENCES auth.users(id)
346
- );
347
313
  </code></pre>
348
314
  <h3>Row Level Security Policies</h3>
349
- <pre><code class="language-sql">-- Users can only see sites they have access to
350
- CREATE POLICY &quot;Users can view accessible sites&quot; ON doc_sites
351
- FOR SELECT USING (
352
- EXISTS (
353
- SELECT 1 FROM user_site_access
354
- WHERE site_id = doc_sites.id
355
- AND user_id = auth.uid()
356
- AND (expires_at IS NULL OR expires_at &gt; NOW())
357
- )
358
- );
315
+ <pre><code class="language-sql">-- Enable RLS on tables
316
+ ALTER TABLE docbuilder_access ENABLE ROW LEVEL SECURITY;
317
+ ALTER TABLE access_logs ENABLE ROW LEVEL SECURITY;
318
+
319
+ -- Users can only see their own access records
320
+ CREATE POLICY &quot;Users see own access&quot; ON docbuilder_access
321
+ FOR SELECT USING (user_id = auth.uid());
359
322
 
360
- -- Access logs are append-only
323
+ -- Access logs are append-only by authenticated users
361
324
  CREATE POLICY &quot;Insert access logs&quot; ON access_logs
362
325
  FOR INSERT WITH CHECK (user_id = auth.uid());
363
326
 
@@ -416,18 +379,20 @@ class SupabaseAuthManager {
416
379
  }
417
380
  }
418
381
  );
419
- this.siteId = config.siteId;
420
382
  }
421
383
 
422
384
  async checkAccess() {
423
385
  const { data: { user } } = await this.supabase.auth.getUser();
424
386
  if (!user) return false;
425
387
 
388
+ // Use current domain for access check
389
+ const domain = window.location.host;
390
+
426
391
  const { data, error } = await this.supabase
427
- .from(&#39;user_site_access&#39;)
428
- .select(&#39;role, expires_at&#39;)
392
+ .from(&#39;docbuilder_access&#39;)
393
+ .select(&#39;created_at&#39;)
429
394
  .eq(&#39;user_id&#39;, user.id)
430
- .eq(&#39;site_id&#39;, this.siteId)
395
+ .eq(&#39;domain&#39;, domain)
431
396
  .single();
432
397
 
433
398
  if (error || !data) return false;
@@ -470,7 +435,7 @@ class SupabaseAuthManager {
470
435
 
471
436
  async logAccess(action, metadata = {}) {
472
437
  await this.supabase.from(&#39;access_logs&#39;).insert({
473
- site_id: this.siteId,
438
+ domain: window.location.host,
474
439
  action,
475
440
  metadata,
476
441
  ip_address: await this.getClientIP(),
@@ -486,8 +451,8 @@ async function buildWithSupabaseAuth(config) {
486
451
  // Inject Supabase configuration
487
452
  const supabaseConfig = {
488
453
  supabaseUrl: config.auth.supabaseUrl,
489
- supabaseAnonKey: config.auth.supabaseAnonKey,
490
- siteId: config.auth.siteId
454
+ supabaseAnonKey: config.auth.supabaseAnonKey
455
+ // Domain is detected automatically from window.location.host
491
456
  };
492
457
 
493
458
  // Create enhanced auth.js with Supabase integration
@@ -521,8 +486,8 @@ async function buildWithSupabaseAuth(config) {
521
486
  auth: {
522
487
  // Supabase configuration
523
488
  supabaseUrl: process.env.SUPABASE_URL,
524
- supabaseAnonKey: process.env.SUPABASE_ANON_KEY,
525
- siteId: process.env.DOC_SITE_ID,
489
+ supabaseAnonKey: process.env.SUPABASE_ANON_KEY
490
+ // Domain-based authentication - no siteId needed
526
491
 
527
492
  // Optional: Custom login page styling
528
493
  loginTheme: {