@knowcode/doc-builder 1.4.24 → 1.5.0
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 +4 -1
- package/CHANGELOG.md +27 -0
- package/README.md +57 -7
- package/cli.js +251 -2
- package/doc-builder.config.js +38 -0
- package/html/README.html +71 -5
- package/html/claude-workflow-guide.html +71 -5
- package/html/documentation-index.html +77 -5
- package/html/guides/authentication-guide.html +77 -5
- package/html/guides/documentation-standards.html +77 -5
- package/html/guides/seo-guide.html +557 -0
- package/html/guides/troubleshooting-guide.html +77 -5
- package/html/index.html +71 -5
- package/html/robots.txt +5 -0
- package/html/sitemap.xml +69 -0
- package/html/vercel-cli-setup-guide.html +452 -0
- package/html/vercel-first-time-setup-guide.html +419 -0
- package/lib/config.js +39 -1
- package/lib/core-builder.js +103 -5
- package/lib/deploy.js +93 -36
- package/lib/seo.js +359 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,33 @@ All notable changes to @knowcode/doc-builder will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.4.26] - 2025-07-21
|
|
9
|
+
|
|
10
|
+
### Improved
|
|
11
|
+
- Clarified Vercel setup instructions to show both paths for question #5
|
|
12
|
+
- Now clearly indicates what prompt users see based on their answer to question #4
|
|
13
|
+
- Added "If you answered YES/NO to #4" conditional guidance
|
|
14
|
+
- Shows appropriate project name prompts for both existing and new projects
|
|
15
|
+
|
|
16
|
+
### Background
|
|
17
|
+
- Users were confused about what happens after answering NO to "Link to different existing project?"
|
|
18
|
+
- The instructions now clearly show both scenarios:
|
|
19
|
+
- YES: "What's the name of your existing project?"
|
|
20
|
+
- NO: "What is your project name?" (for creating new project)
|
|
21
|
+
- This matches the actual Vercel CLI flow more accurately
|
|
22
|
+
|
|
23
|
+
## [1.4.25] - 2025-07-21
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
- Improved production URL detection with multiple fallback methods
|
|
27
|
+
- Tries to extract project name and construct standard Vercel URL
|
|
28
|
+
- Better handling of different Vercel URL formats
|
|
29
|
+
|
|
30
|
+
### Background
|
|
31
|
+
- Previous version didn't correctly parse Vercel's output
|
|
32
|
+
- Now uses multiple methods to determine the production URL
|
|
33
|
+
- Extracts project name from deployment URL as fallback
|
|
34
|
+
|
|
8
35
|
## [1.4.24] - 2025-07-21
|
|
9
36
|
|
|
10
37
|
### Fixed
|
package/README.md
CHANGED
|
@@ -54,6 +54,7 @@ This aligns perfectly with our mission: beautiful documentation should be access
|
|
|
54
54
|
- 🌙 **Dark Mode** - Automatic dark mode support
|
|
55
55
|
- 🔄 **Live Reload** - Development server with hot reloading
|
|
56
56
|
- ☁️ **Vercel Integration** - One-command deployment to Vercel
|
|
57
|
+
- 🔍 **SEO Optimized** - Meta tags, Open Graph, Twitter Cards, and structured data
|
|
57
58
|
- 📦 **Self-Contained** - No configuration or setup required
|
|
58
59
|
- 🤖 **Claude Code Ready** - Optimized for AI-generated documentation workflows
|
|
59
60
|
|
|
@@ -119,6 +120,9 @@ module.exports = {
|
|
|
119
120
|
siteName: 'My Documentation',
|
|
120
121
|
siteDescription: 'Documentation for my project',
|
|
121
122
|
|
|
123
|
+
// Production URL (optional)
|
|
124
|
+
productionUrl: 'https://my-docs.vercel.app', // Custom URL to display after deployment
|
|
125
|
+
|
|
122
126
|
// Features
|
|
123
127
|
features: {
|
|
124
128
|
authentication: true,
|
|
@@ -145,6 +149,33 @@ npx @knowcode/doc-builder build --preset notion-inspired
|
|
|
145
149
|
|
|
146
150
|
## Commands
|
|
147
151
|
|
|
152
|
+
### set-production-url
|
|
153
|
+
Set a custom production URL to display after deployment:
|
|
154
|
+
```bash
|
|
155
|
+
# Set your custom production URL
|
|
156
|
+
npx @knowcode/doc-builder set-production-url doc-builder-delta.vercel.app
|
|
157
|
+
|
|
158
|
+
# Or with full protocol
|
|
159
|
+
npx @knowcode/doc-builder set-production-url https://my-custom-domain.com
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
This is useful when you have a custom domain or Vercel alias that differs from the auto-detected URL.
|
|
163
|
+
|
|
164
|
+
### setup-seo
|
|
165
|
+
Interactive SEO configuration wizard:
|
|
166
|
+
```bash
|
|
167
|
+
# Configure all SEO settings
|
|
168
|
+
npx @knowcode/doc-builder setup-seo
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
This wizard helps you set up:
|
|
172
|
+
- Site URL and author information
|
|
173
|
+
- Social media meta tags (Open Graph, Twitter Cards)
|
|
174
|
+
- Structured data (JSON-LD)
|
|
175
|
+
- Automatic sitemap and robots.txt generation
|
|
176
|
+
|
|
177
|
+
See the [SEO Guide](docs/guides/seo-guide.md) for complete details.
|
|
178
|
+
|
|
148
179
|
### build
|
|
149
180
|
Build the documentation site to static HTML:
|
|
150
181
|
```bash
|
|
@@ -189,15 +220,15 @@ Deploy documentation to Vercel (requires Vercel CLI):
|
|
|
189
220
|
doc-builder deploy [options]
|
|
190
221
|
|
|
191
222
|
Options:
|
|
192
|
-
-c, --config <path>
|
|
193
|
-
--prod
|
|
194
|
-
--
|
|
195
|
-
--
|
|
223
|
+
-c, --config <path> Path to config file (default: "doc-builder.config.js")
|
|
224
|
+
--no-prod Deploy as preview instead of production
|
|
225
|
+
--force Force deployment without confirmation
|
|
226
|
+
--production-url <url> Override production URL for this deployment
|
|
196
227
|
|
|
197
228
|
Examples:
|
|
198
|
-
doc-builder deploy
|
|
199
|
-
doc-builder deploy --prod
|
|
200
|
-
doc-builder deploy --
|
|
229
|
+
doc-builder deploy # Deploy to production
|
|
230
|
+
doc-builder deploy --no-prod # Deploy as preview only
|
|
231
|
+
doc-builder deploy --production-url my-docs.vercel.app # Use custom URL display
|
|
201
232
|
|
|
202
233
|
First-time setup:
|
|
203
234
|
The tool will guide you through:
|
|
@@ -324,6 +355,25 @@ npx @knowcode/doc-builder@1.4.22
|
|
|
324
355
|
- Ensure Vercel CLI is installed: `npm install -g vercel`
|
|
325
356
|
- Check that the `html/` directory was created by build command
|
|
326
357
|
|
|
358
|
+
**Wrong production URL displayed**
|
|
359
|
+
- The deployment may show a deployment-specific URL instead of your custom domain
|
|
360
|
+
- Solution 1: Set production URL in config:
|
|
361
|
+
```javascript
|
|
362
|
+
// doc-builder.config.js
|
|
363
|
+
module.exports = {
|
|
364
|
+
productionUrl: 'https://my-docs.vercel.app',
|
|
365
|
+
// ... other config
|
|
366
|
+
};
|
|
367
|
+
```
|
|
368
|
+
- Solution 2: Use command to set it:
|
|
369
|
+
```bash
|
|
370
|
+
npx @knowcode/doc-builder set-production-url my-docs.vercel.app
|
|
371
|
+
```
|
|
372
|
+
- Solution 3: Override for a single deployment:
|
|
373
|
+
```bash
|
|
374
|
+
npx @knowcode/doc-builder deploy --production-url my-docs.vercel.app
|
|
375
|
+
```
|
|
376
|
+
|
|
327
377
|
## Using in Other Projects
|
|
328
378
|
|
|
329
379
|
### Option 1: NPM Link (Development)
|
package/cli.js
CHANGED
|
@@ -118,6 +118,67 @@ ${chalk.yellow('Examples:')}
|
|
|
118
118
|
}
|
|
119
119
|
});
|
|
120
120
|
|
|
121
|
+
// Set Production URL command
|
|
122
|
+
program
|
|
123
|
+
.command('set-production-url <url>')
|
|
124
|
+
.description('Set the production URL to display after deployment')
|
|
125
|
+
.option('-c, --config <path>', 'path to config file (default: doc-builder.config.js)')
|
|
126
|
+
.addHelpText('after', `
|
|
127
|
+
${chalk.yellow('Examples:')}
|
|
128
|
+
${chalk.gray('$')} doc-builder set-production-url doc-builder-delta.vercel.app
|
|
129
|
+
${chalk.gray('$')} doc-builder set-production-url https://my-custom-domain.com
|
|
130
|
+
|
|
131
|
+
${chalk.yellow('This URL will be displayed after deployment instead of auto-detected URLs.')}
|
|
132
|
+
`)
|
|
133
|
+
.action(async (url, options) => {
|
|
134
|
+
try {
|
|
135
|
+
const configPath = path.join(process.cwd(), options.config || 'doc-builder.config.js');
|
|
136
|
+
|
|
137
|
+
// Ensure URL has protocol
|
|
138
|
+
if (!url.startsWith('http')) {
|
|
139
|
+
url = 'https://' + url;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (fs.existsSync(configPath)) {
|
|
143
|
+
// Update existing config
|
|
144
|
+
let configContent = fs.readFileSync(configPath, 'utf8');
|
|
145
|
+
|
|
146
|
+
if (configContent.includes('productionUrl:')) {
|
|
147
|
+
// Update existing productionUrl
|
|
148
|
+
configContent = configContent.replace(
|
|
149
|
+
/productionUrl:\s*['"][^'"]*['"]/,
|
|
150
|
+
`productionUrl: '${url}'`
|
|
151
|
+
);
|
|
152
|
+
} else {
|
|
153
|
+
// Add productionUrl to config
|
|
154
|
+
configContent = configContent.replace(
|
|
155
|
+
/module\.exports = {/,
|
|
156
|
+
`module.exports = {\n productionUrl: '${url}',`
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
fs.writeFileSync(configPath, configContent);
|
|
161
|
+
console.log(chalk.green(`✅ Production URL set to: ${url}`));
|
|
162
|
+
console.log(chalk.gray(`\nThis URL will be displayed after deployment.`));
|
|
163
|
+
} else {
|
|
164
|
+
console.log(chalk.yellow('⚠️ No config file found. Creating one...'));
|
|
165
|
+
await createDefaultConfig();
|
|
166
|
+
|
|
167
|
+
// Add production URL to newly created config
|
|
168
|
+
let configContent = fs.readFileSync(configPath, 'utf8');
|
|
169
|
+
configContent = configContent.replace(
|
|
170
|
+
/module\.exports = {/,
|
|
171
|
+
`module.exports = {\n productionUrl: '${url}',`
|
|
172
|
+
);
|
|
173
|
+
fs.writeFileSync(configPath, configContent);
|
|
174
|
+
console.log(chalk.green(`✅ Created config with production URL: ${url}`));
|
|
175
|
+
}
|
|
176
|
+
} catch (error) {
|
|
177
|
+
console.error(chalk.red('Failed to set production URL:'), error.message);
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
|
|
121
182
|
// Deploy command
|
|
122
183
|
program
|
|
123
184
|
.command('deploy')
|
|
@@ -125,6 +186,7 @@ program
|
|
|
125
186
|
.option('-c, --config <path>', 'path to config file (default: doc-builder.config.js)')
|
|
126
187
|
.option('--no-prod', 'deploy as preview instead of production')
|
|
127
188
|
.option('--force', 'force deployment without confirmation')
|
|
189
|
+
.option('--production-url <url>', 'override production URL for this deployment')
|
|
128
190
|
.addHelpText('after', `
|
|
129
191
|
${chalk.yellow('Examples:')}
|
|
130
192
|
${chalk.gray('$')} doc-builder deploy ${chalk.gray('# Deploy to production')}
|
|
@@ -267,6 +329,13 @@ ${chalk.yellow('Troubleshooting:')}
|
|
|
267
329
|
process.exit(1);
|
|
268
330
|
}
|
|
269
331
|
|
|
332
|
+
// Handle production URL option
|
|
333
|
+
if (options.productionUrl) {
|
|
334
|
+
config.productionUrl = options.productionUrl.startsWith('http')
|
|
335
|
+
? options.productionUrl
|
|
336
|
+
: 'https://' + options.productionUrl;
|
|
337
|
+
}
|
|
338
|
+
|
|
270
339
|
// Always build first
|
|
271
340
|
spinner.stop();
|
|
272
341
|
console.log(chalk.blue('\n📦 Building documentation first...\n'));
|
|
@@ -329,8 +398,8 @@ ${chalk.yellow('Troubleshooting:')}
|
|
|
329
398
|
productionUrl = result.productionUrl;
|
|
330
399
|
}
|
|
331
400
|
|
|
332
|
-
// Use the production URL if available,
|
|
333
|
-
const displayUrl = productionUrl || deployUrl;
|
|
401
|
+
// Use the configured production URL if available, then detected, then deployment URL
|
|
402
|
+
const displayUrl = config.productionUrl || productionUrl || deployUrl;
|
|
334
403
|
|
|
335
404
|
console.log(chalk.green('\n✅ Deployment Complete!\n'));
|
|
336
405
|
|
|
@@ -407,6 +476,186 @@ ${chalk.yellow('When to use:')}
|
|
|
407
476
|
}
|
|
408
477
|
});
|
|
409
478
|
|
|
479
|
+
// Setup SEO command
|
|
480
|
+
program
|
|
481
|
+
.command('setup-seo')
|
|
482
|
+
.description('Configure SEO settings for your documentation')
|
|
483
|
+
.option('-c, --config <path>', 'path to config file (default: doc-builder.config.js)')
|
|
484
|
+
.addHelpText('after', `
|
|
485
|
+
${chalk.yellow('What this does:')}
|
|
486
|
+
• Configures meta tags for search engines
|
|
487
|
+
• Sets up social media previews (Open Graph, Twitter Cards)
|
|
488
|
+
• Enables automatic sitemap.xml generation
|
|
489
|
+
• Creates robots.txt for search engines
|
|
490
|
+
• Adds structured data (JSON-LD)
|
|
491
|
+
|
|
492
|
+
${chalk.yellow('What you\'ll configure:')}
|
|
493
|
+
• Site URL (your production URL)
|
|
494
|
+
• Author name and organization
|
|
495
|
+
• Twitter handle for social cards
|
|
496
|
+
• Default keywords
|
|
497
|
+
• Open Graph image
|
|
498
|
+
|
|
499
|
+
${chalk.yellow('After setup:')}
|
|
500
|
+
• Run ${chalk.cyan('npx @knowcode/doc-builder build')} to generate with SEO
|
|
501
|
+
• Check meta tags in generated HTML files
|
|
502
|
+
• Submit sitemap.xml to search engines
|
|
503
|
+
`)
|
|
504
|
+
.action(async (options) => {
|
|
505
|
+
try {
|
|
506
|
+
const configPath = path.join(process.cwd(), options.config || 'doc-builder.config.js');
|
|
507
|
+
let config = {};
|
|
508
|
+
|
|
509
|
+
// Load existing config if it exists
|
|
510
|
+
if (fs.existsSync(configPath)) {
|
|
511
|
+
try {
|
|
512
|
+
delete require.cache[require.resolve(configPath)];
|
|
513
|
+
config = require(configPath);
|
|
514
|
+
} catch (e) {
|
|
515
|
+
console.log(chalk.yellow('⚠️ Could not load existing config, starting fresh'));
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
console.log(chalk.blue('\n🔍 SEO Setup for @knowcode/doc-builder\n'));
|
|
520
|
+
console.log(chalk.gray('This wizard will help you configure SEO settings for better search engine visibility.\n'));
|
|
521
|
+
|
|
522
|
+
// Interactive prompts
|
|
523
|
+
const answers = await prompts([
|
|
524
|
+
{
|
|
525
|
+
type: 'text',
|
|
526
|
+
name: 'siteUrl',
|
|
527
|
+
message: 'What is your site\'s URL?',
|
|
528
|
+
initial: config.seo?.siteUrl || config.productionUrl || 'https://my-docs.vercel.app',
|
|
529
|
+
validate: value => {
|
|
530
|
+
try {
|
|
531
|
+
new URL(value);
|
|
532
|
+
return true;
|
|
533
|
+
} catch {
|
|
534
|
+
return 'Please enter a valid URL (e.g., https://example.com)';
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
type: 'text',
|
|
540
|
+
name: 'author',
|
|
541
|
+
message: 'Author name?',
|
|
542
|
+
initial: config.seo?.author || ''
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
type: 'text',
|
|
546
|
+
name: 'twitterHandle',
|
|
547
|
+
message: 'Twitter handle?',
|
|
548
|
+
initial: config.seo?.twitterHandle || '',
|
|
549
|
+
format: value => {
|
|
550
|
+
if (!value) return '';
|
|
551
|
+
return value.startsWith('@') ? value : '@' + value;
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
type: 'text',
|
|
556
|
+
name: 'language',
|
|
557
|
+
message: 'Site language?',
|
|
558
|
+
initial: config.seo?.language || 'en-US'
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
type: 'text',
|
|
562
|
+
name: 'organizationName',
|
|
563
|
+
message: 'Organization name (optional)?',
|
|
564
|
+
initial: config.seo?.organization?.name || ''
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
type: prev => prev ? 'text' : null,
|
|
568
|
+
name: 'organizationUrl',
|
|
569
|
+
message: 'Organization URL?',
|
|
570
|
+
initial: config.seo?.organization?.url || ''
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
type: 'text',
|
|
574
|
+
name: 'ogImage',
|
|
575
|
+
message: 'Default Open Graph image URL/path?',
|
|
576
|
+
initial: config.seo?.ogImage || '/og-default.png',
|
|
577
|
+
hint: 'Recommended: 1200x630px PNG or JPG'
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
type: 'text',
|
|
581
|
+
name: 'keywords',
|
|
582
|
+
message: 'Site keywords (comma-separated)?',
|
|
583
|
+
initial: Array.isArray(config.seo?.keywords) ? config.seo.keywords.join(', ') : 'documentation, guide, api'
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
type: 'confirm',
|
|
587
|
+
name: 'generateSitemap',
|
|
588
|
+
message: 'Generate sitemap.xml?',
|
|
589
|
+
initial: config.seo?.generateSitemap !== false
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
type: 'confirm',
|
|
593
|
+
name: 'generateRobotsTxt',
|
|
594
|
+
message: 'Generate robots.txt?',
|
|
595
|
+
initial: config.seo?.generateRobotsTxt !== false
|
|
596
|
+
}
|
|
597
|
+
]);
|
|
598
|
+
|
|
599
|
+
// Build SEO config
|
|
600
|
+
const seoConfig = {
|
|
601
|
+
enabled: true,
|
|
602
|
+
siteUrl: answers.siteUrl,
|
|
603
|
+
author: answers.author,
|
|
604
|
+
twitterHandle: answers.twitterHandle,
|
|
605
|
+
language: answers.language,
|
|
606
|
+
keywords: answers.keywords.split(',').map(k => k.trim()).filter(k => k),
|
|
607
|
+
generateSitemap: answers.generateSitemap,
|
|
608
|
+
generateRobotsTxt: answers.generateRobotsTxt,
|
|
609
|
+
ogImage: answers.ogImage
|
|
610
|
+
};
|
|
611
|
+
|
|
612
|
+
// Add organization if provided
|
|
613
|
+
if (answers.organizationName) {
|
|
614
|
+
seoConfig.organization = {
|
|
615
|
+
name: answers.organizationName,
|
|
616
|
+
url: answers.organizationUrl || answers.siteUrl
|
|
617
|
+
};
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
// Update config
|
|
621
|
+
config.seo = seoConfig;
|
|
622
|
+
|
|
623
|
+
// Also update productionUrl if not set
|
|
624
|
+
if (!config.productionUrl && answers.siteUrl) {
|
|
625
|
+
config.productionUrl = answers.siteUrl;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
// Write config file
|
|
629
|
+
const configContent = `module.exports = ${JSON.stringify(config, null, 2)};\n`;
|
|
630
|
+
fs.writeFileSync(configPath, configContent);
|
|
631
|
+
|
|
632
|
+
console.log(chalk.green('\n✅ SEO configuration saved to ' + path.basename(configPath)));
|
|
633
|
+
|
|
634
|
+
console.log(chalk.blue('\nYour documentation will now include:'));
|
|
635
|
+
console.log(chalk.gray('• Meta tags for search engines'));
|
|
636
|
+
console.log(chalk.gray('• Open Graph tags for social media previews'));
|
|
637
|
+
console.log(chalk.gray('• Twitter Card tags for Twitter sharing'));
|
|
638
|
+
console.log(chalk.gray('• JSON-LD structured data'));
|
|
639
|
+
if (answers.generateSitemap) {
|
|
640
|
+
console.log(chalk.gray('• Automatic sitemap.xml generation'));
|
|
641
|
+
}
|
|
642
|
+
if (answers.generateRobotsTxt) {
|
|
643
|
+
console.log(chalk.gray('• robots.txt for crawler instructions'));
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
console.log(chalk.yellow('\n💡 Tips:'));
|
|
647
|
+
if (answers.ogImage) {
|
|
648
|
+
console.log(chalk.gray(`- Add an image at ${answers.ogImage} (1200x630px) for social previews`));
|
|
649
|
+
}
|
|
650
|
+
console.log(chalk.gray('- Run \'npx @knowcode/doc-builder build\' to generate with SEO'));
|
|
651
|
+
console.log(chalk.gray('- Check your SEO at: https://metatags.io'));
|
|
652
|
+
|
|
653
|
+
} catch (error) {
|
|
654
|
+
console.error(chalk.red('Failed to configure SEO:'), error.message);
|
|
655
|
+
process.exit(1);
|
|
656
|
+
}
|
|
657
|
+
});
|
|
658
|
+
|
|
410
659
|
// Init command
|
|
411
660
|
program
|
|
412
661
|
.command('init')
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
// Site info
|
|
3
|
+
siteName: 'Doc Builder',
|
|
4
|
+
siteDescription: 'Beautiful documentation with the least effort possible',
|
|
5
|
+
|
|
6
|
+
// Directories
|
|
7
|
+
docsDir: 'docs',
|
|
8
|
+
outputDir: 'html',
|
|
9
|
+
|
|
10
|
+
// Production URL
|
|
11
|
+
productionUrl: 'https://doc-builder-delta.vercel.app',
|
|
12
|
+
|
|
13
|
+
// Features
|
|
14
|
+
features: {
|
|
15
|
+
authentication: false,
|
|
16
|
+
changelog: true,
|
|
17
|
+
mermaid: true,
|
|
18
|
+
darkMode: true
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
// SEO configuration
|
|
22
|
+
seo: {
|
|
23
|
+
enabled: true,
|
|
24
|
+
siteUrl: 'https://doc-builder-delta.vercel.app',
|
|
25
|
+
author: 'Lindsay Smith',
|
|
26
|
+
twitterHandle: '@planbbackups',
|
|
27
|
+
language: 'en-US',
|
|
28
|
+
keywords: ['documentation', 'markdown', 'static site generator', 'vercel', 'notion-style'],
|
|
29
|
+
organization: {
|
|
30
|
+
name: 'KnowCode',
|
|
31
|
+
url: 'https://knowcode.com'
|
|
32
|
+
},
|
|
33
|
+
ogImage: '/og-default.png',
|
|
34
|
+
generateSitemap: true,
|
|
35
|
+
generateRobotsTxt: true,
|
|
36
|
+
customMetaTags: []
|
|
37
|
+
}
|
|
38
|
+
};
|
package/html/README.html
CHANGED
|
@@ -3,8 +3,30 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<meta name="description" content="
|
|
7
|
-
<title>@knowcode/doc-builder -
|
|
6
|
+
<meta name="description" content="@knowcode/doc-builder.">
|
|
7
|
+
<title>@knowcode/doc-builder - Doc Builder</title>
|
|
8
|
+
|
|
9
|
+
<meta name="author" content="Lindsay Smith">
|
|
10
|
+
<meta name="keywords" content="documentation, markdown, static site generator, vercel, notion-style, your, knowcode, doc, builder">
|
|
11
|
+
<meta name="robots" content="index, follow">
|
|
12
|
+
<link rel="canonical" href="https://doc-builder-delta.vercel.app/README.html">
|
|
13
|
+
|
|
14
|
+
<!-- Open Graph / Facebook -->
|
|
15
|
+
<meta property="og:type" content="article">
|
|
16
|
+
<meta property="og:url" content="https://doc-builder-delta.vercel.app/README.html">
|
|
17
|
+
<meta property="og:title" content="@knowcode/doc-builder - Doc Builder">
|
|
18
|
+
<meta property="og:description" content="@knowcode/doc-builder.">
|
|
19
|
+
<meta property="og:image" content="https://doc-builder-delta.vercel.app/og-default.png">
|
|
20
|
+
<meta property="og:site_name" content="Doc Builder">
|
|
21
|
+
<meta property="og:locale" content="en_US">
|
|
22
|
+
|
|
23
|
+
<!-- Twitter Card -->
|
|
24
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
25
|
+
<meta name="twitter:site" content="@planbbackups">
|
|
26
|
+
<meta name="twitter:creator" content="@planbbackups">
|
|
27
|
+
<meta name="twitter:title" content="@knowcode/doc-builder - Doc Builder">
|
|
28
|
+
<meta name="twitter:description" content="@knowcode/doc-builder.">
|
|
29
|
+
<meta name="twitter:image" content="https://doc-builder-delta.vercel.app/og-default.png">
|
|
8
30
|
|
|
9
31
|
<!-- Fonts -->
|
|
10
32
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
@@ -20,16 +42,57 @@
|
|
|
20
42
|
|
|
21
43
|
<!-- Favicon -->
|
|
22
44
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>📚</text></svg>">
|
|
45
|
+
|
|
46
|
+
<script type="application/ld+json">
|
|
47
|
+
{
|
|
48
|
+
"@context": "https://schema.org",
|
|
49
|
+
"@type": "TechArticle",
|
|
50
|
+
"headline": "@knowcode/doc-builder",
|
|
51
|
+
"description": "@knowcode/doc-builder.",
|
|
52
|
+
"author": {
|
|
53
|
+
"@type": "Person",
|
|
54
|
+
"name": "Lindsay Smith"
|
|
55
|
+
},
|
|
56
|
+
"publisher": {
|
|
57
|
+
"@type": "Organization",
|
|
58
|
+
"name": "KnowCode",
|
|
59
|
+
"url": "https://knowcode.com"
|
|
60
|
+
},
|
|
61
|
+
"datePublished": "2025-07-21T20:24:35.105Z",
|
|
62
|
+
"dateModified": "2025-07-21T20:24:35.105Z",
|
|
63
|
+
"mainEntityOfPage": {
|
|
64
|
+
"@type": "WebPage",
|
|
65
|
+
"@id": "https://doc-builder-delta.vercel.app/README.html"
|
|
66
|
+
},
|
|
67
|
+
"breadcrumb": {
|
|
68
|
+
"@type": "BreadcrumbList",
|
|
69
|
+
"itemListElement": [
|
|
70
|
+
{
|
|
71
|
+
"@type": "ListItem",
|
|
72
|
+
"position": 1,
|
|
73
|
+
"name": "Doc Builder",
|
|
74
|
+
"item": "https://doc-builder-delta.vercel.app"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"@type": "ListItem",
|
|
78
|
+
"position": 2,
|
|
79
|
+
"name": "README",
|
|
80
|
+
"item": "https://doc-builder-delta.vercel.app/README.html"
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
</script>
|
|
23
86
|
</head>
|
|
24
87
|
<body>
|
|
25
88
|
<!-- Header -->
|
|
26
89
|
<header class="header">
|
|
27
90
|
<div class="header-content">
|
|
28
|
-
<a href="/index.html" class="logo">
|
|
91
|
+
<a href="/index.html" class="logo">Doc Builder</a>
|
|
29
92
|
|
|
30
93
|
<div class="header-actions">
|
|
31
94
|
<div class="deployment-info">
|
|
32
|
-
<span class="deployment-date" title="Built with doc-builder v1.4.
|
|
95
|
+
<span class="deployment-date" title="Built with doc-builder v1.4.26">Last updated: Jul 21, 2025, 08:24 PM UTC</span>
|
|
33
96
|
</div>
|
|
34
97
|
|
|
35
98
|
|
|
@@ -80,7 +143,9 @@
|
|
|
80
143
|
<div class="nav-content" >
|
|
81
144
|
<a href="/README.html" class="nav-item active" data-tooltip="@knowcode/doc-builder."><i class="fas fa-file-alt"></i> Overview</a>
|
|
82
145
|
<a href="/claude-workflow-guide.html" class="nav-item" data-tooltip="This guide demonstrates an efficient workflow for using Claude Code with a refined CLAUDE.md file to create high-quality documentation and deploy it..."><i class="fas fa-file-alt"></i> Claude Workflow Guide</a>
|
|
83
|
-
<a href="/documentation-index.html" class="nav-item" data-tooltip="This directory contains additional documentation for the @knowcode/doc-builder project, organized by topic and purpose."><i class="fas fa-file-alt"></i> Documentation Index</a
|
|
146
|
+
<a href="/documentation-index.html" class="nav-item" data-tooltip="This directory contains additional documentation for the @knowcode/doc-builder project, organized by topic and purpose."><i class="fas fa-file-alt"></i> Documentation Index</a>
|
|
147
|
+
<a href="/vercel-cli-setup-guide.html" class="nav-item" data-tooltip="This guide provides comprehensive instructions for installing and configuring the Vercel CLI across different operating systems and environments."><i class="fas fa-file-alt"></i> Vercel Cli Setup Guide</a>
|
|
148
|
+
<a href="/vercel-first-time-setup-guide.html" class="nav-item" data-tooltip="This guide provides a detailed explanation of every prompt you'll encounter during the first-time Vercel setup process when using."><i class="fas fa-file-alt"></i> Vercel First Time Setup Guide</a></div></div>
|
|
84
149
|
<div class="nav-section" data-level="1">
|
|
85
150
|
<a class="nav-title collapsible expanded" href="#" data-target="nav-guides-1" >
|
|
86
151
|
<i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Guides
|
|
@@ -88,6 +153,7 @@
|
|
|
88
153
|
<div class="nav-content" id="nav-guides-1">
|
|
89
154
|
<a href="/guides/authentication-guide.html" class="nav-item" data-tooltip="This guide explains how to configure and use the built-in authentication feature in @knowcode/doc-builder to protect your documentation with basic..."><i class="fas fa-file-alt"></i> Authentication Guide</a>
|
|
90
155
|
<a href="/guides/documentation-standards.html" class="nav-item" data-tooltip="This document defines the documentation standards and conventions for the @knowcode/doc-builder project."><i class="fas fa-file-alt"></i> Documentation Standards</a>
|
|
156
|
+
<a href="/guides/seo-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features to help your documentation rank better in search results and..."><i class="fas fa-file-alt"></i> Seo Guide</a>
|
|
91
157
|
<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></div></div>
|
|
92
158
|
</nav>
|
|
93
159
|
<div class="resize-handle"></div>
|