@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.
- package/.claude/settings.local.json +5 -1
- package/CHANGELOG.md +39 -3
- package/README.md +4 -4
- package/assets/css/notion-style.css +26 -0
- package/cli.js +9 -40
- package/debug-login.sql +30 -0
- package/html/README.html +27 -3
- package/html/auth.js +2 -2
- package/html/css/notion-style.css +26 -0
- package/html/documentation-index.html +27 -3
- package/html/guides/authentication-default-change.html +27 -3
- package/html/guides/authentication-guide.html +58 -45
- package/html/guides/claude-workflow-guide.html +27 -3
- package/html/guides/documentation-standards.html +27 -3
- package/html/guides/phosphor-icons-guide.html +27 -3
- package/html/guides/private-directory-authentication.html +59 -17
- package/html/guides/public-site-deployment.html +32 -9
- package/html/guides/search-engine-verification-guide.html +27 -3
- package/html/guides/seo-guide.html +27 -3
- package/html/guides/seo-optimization-guide.html +27 -3
- package/html/guides/troubleshooting-guide.html +27 -3
- package/html/guides/windows-setup-guide.html +27 -3
- package/html/index.html +27 -3
- package/html/js/auth.js +2 -2
- package/html/login.html +2 -2
- package/html/private/cache-control-anti-pattern.html +5 -5
- package/html/private/launch/README.html +5 -5
- package/html/private/launch/auth-cleanup-summary.html +5 -5
- package/html/private/launch/bubble-plugin-specification.html +5 -5
- package/html/private/launch/go-to-market-strategy.html +5 -5
- package/html/private/launch/launch-announcements.html +5 -5
- package/html/private/launch/vercel-deployment-auth-setup.html +27 -21
- package/html/private/next-steps-walkthrough.html +18 -45
- package/html/private/supabase-auth-implementation-completed.html +8 -8
- package/html/private/supabase-auth-implementation-plan.html +16 -33
- package/html/private/supabase-auth-integration-plan.html +34 -69
- package/html/private/supabase-auth-setup-guide.html +73 -84
- package/html/private/test-private-doc.html +5 -5
- package/html/private/user-management-tooling.html +9 -15
- package/html/sitemap.xml +44 -44
- package/html/vercel-cli-setup-guide.html +27 -3
- package/html/vercel-first-time-setup-guide.html +27 -3
- package/lib/config.js +3 -11
- package/lib/core-builder.js +7 -12
- package/lib/shared-auth-config.js +2 -10
- package/lib/supabase-auth.js +5 -11
- package/migrate-to-domain-auth.sql +47 -0
- package/package.json +1 -1
- package/setup-database-v2.sql +53 -0
- package/user-access-view.sql +49 -0
- package/user-management/README.md +9 -18
- 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-
|
|
102
|
-
"dateModified": "2025-07-
|
|
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.
|
|
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-
|
|
102
|
-
"dateModified": "2025-07-
|
|
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.
|
|
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:
|
|
259
|
-
<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>
|
|
265
|
-
<li>
|
|
266
|
-
<li>
|
|
267
|
-
<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">--
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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 = 'testuser@example.com'),
|
|
283
|
+
'doc-builder-2znroyb5z-lindsay-1340s-projects.vercel.app'
|
|
284
|
+
);
|
|
280
285
|
|
|
281
|
-
-- Verify the
|
|
282
|
-
SELECT
|
|
283
|
-
FROM
|
|
284
|
-
|
|
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 = 'doc-builder-2znroyb5z-lindsay-1340s-projects.vercel.app';
|
|
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
|
|
352
|
-
<li>Users can have access to multiple
|
|
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-
|
|
102
|
-
"dateModified": "2025-07-
|
|
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.
|
|
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">--
|
|
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
|
-
|
|
274
|
+
domain TEXT NOT NULL,
|
|
283
275
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
284
|
-
PRIMARY KEY (user_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
|
|
292
|
-
CREATE POLICY "Users see accessible sites" 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 "Users see own access" 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: 'YOUR_SUPABASE_URL_HERE',
|
|
329
|
-
supabaseAnonKey: 'YOUR_ANON_KEY_HERE'
|
|
330
|
-
siteId: '' // Will be filled in next step
|
|
312
|
+
supabaseUrl: 'YOUR_SUPABASE_URL_HERE', // Optional - has defaults
|
|
313
|
+
supabaseAnonKey: 'YOUR_ANON_KEY_HERE' // 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>
|
|
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 ('localhost:3000', 'Test Site')
|
|
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: 'the-uuid-returned-from-above'
|
|
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!" > 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
|
|
426
|
-
INSERT INTO docbuilder_access (user_id,
|
|
427
|
-
VALUES ('USER_ID_FROM_STEP_10', '
|
|
398
|
+
-- Replace with actual user ID from step 10
|
|
399
|
+
INSERT INTO docbuilder_access (user_id, domain)
|
|
400
|
+
VALUES ('USER_ID_FROM_STEP_10', 'localhost:3001');
|
|
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-
|
|
102
|
-
"dateModified": "2025-07-
|
|
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.
|
|
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: 'supabase' // Must explicitly enable
|
|
295
295
|
},
|
|
296
296
|
auth: {
|
|
297
|
-
supabaseUrl: 'https://xxx.supabase.co',
|
|
298
|
-
supabaseAnonKey: 'your-anon-key'
|
|
299
|
-
siteId
|
|
297
|
+
supabaseUrl: 'https://xxx.supabase.co', // Optional - has defaults
|
|
298
|
+
supabaseAnonKey: 'your-anon-key' // 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-
|
|
102
|
-
"dateModified": "2025-07-
|
|
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.
|
|
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
|
-
|
|
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">--
|
|
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
|
-
|
|
289
|
+
domain TEXT NOT NULL,
|
|
300
290
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
301
|
-
PRIMARY KEY (user_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
|
|
309
|
-
CREATE POLICY "Users see accessible sites" 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 "Users see own access" ON docbuilder_access
|
|
319
302
|
FOR SELECT USING (user_id = auth.uid());
|
|
320
303
|
</code></pre>
|
|
@@ -329,10 +312,10 @@ CREATE POLICY "Users see own access" 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: '',
|
|
334
|
-
supabaseAnonKey: ''
|
|
335
|
-
|
|
317
|
+
supabaseAnonKey: ''
|
|
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-
|
|
102
|
-
"dateModified": "2025-07-
|
|
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.
|
|
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>
|
|
291
|
-
<pre><code class="language-sql">--
|
|
292
|
-
CREATE TABLE
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
slug TEXT UNIQUE NOT NULL,
|
|
296
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
297
|
-
settings JSONB DEFAULT '{}'::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 '{}'::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
|
-
|
|
296
|
+
PRIMARY KEY (user_id, domain)
|
|
309
297
|
);
|
|
310
298
|
|
|
311
|
-
--
|
|
312
|
-
CREATE
|
|
313
|
-
user_id UUID REFERENCES auth.users(id),
|
|
314
|
-
site_id UUID REFERENCES doc_sites(id),
|
|
315
|
-
role TEXT NOT NULL DEFAULT 'viewer',
|
|
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
|
-
|
|
306
|
+
domain TEXT NOT NULL,
|
|
327
307
|
action TEXT NOT NULL,
|
|
328
308
|
metadata JSONB DEFAULT '{}'::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 'viewer',
|
|
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">--
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
AND (expires_at IS NULL OR expires_at > 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 "Users see own access" 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 "Insert access logs" 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('
|
|
428
|
-
.select('
|
|
392
|
+
.from('docbuilder_access')
|
|
393
|
+
.select('created_at')
|
|
429
394
|
.eq('user_id', user.id)
|
|
430
|
-
.eq('
|
|
395
|
+
.eq('domain', 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('access_logs').insert({
|
|
473
|
-
|
|
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
|
-
|
|
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
|
|
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: {
|