@pagenary/publisher 2026.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/LICENSE +661 -0
- package/README.md +337 -0
- package/bin/pagenary.mjs +116 -0
- package/build.config.json +5 -0
- package/package.json +66 -0
- package/scripts/build-site.js +87 -0
- package/scripts/build-tenants.js +3569 -0
- package/scripts/build.js +99 -0
- package/scripts/generate-sections.js +41 -0
- package/scripts/lib/seo-generator.js +558 -0
- package/scripts/lint-content.js +62 -0
- package/scripts/seo-smoke.js +94 -0
- package/scripts/serve.js +142 -0
- package/site/app.js +1 -0
- package/site/index.html +57 -0
- package/site/lib/categories.js +1 -0
- package/site/lib/export.js +1 -0
- package/site/lib/manifest-utils.js +1 -0
- package/site/lib/router.js +1 -0
- package/site/lib/search.js +1 -0
- package/site/llms.txt +22 -0
- package/site/manifest.js +132 -0
- package/site/mermaid-init.js +1 -0
- package/site/pages/api.html +339 -0
- package/site/pages/architecture.html +303 -0
- package/site/pages/deployment.html +282 -0
- package/site/pages/developer-guide.html +157 -0
- package/site/pages/extending.html +135 -0
- package/site/pages/quickstart.html +318 -0
- package/site/pages/seo-strategy.html +121 -0
- package/site/pages/tenant-config.html +519 -0
- package/site/pages/welcome.html +116 -0
- package/site/robots.txt +10 -0
- package/site/sections/api.js +3 -0
- package/site/sections/architecture.js +3 -0
- package/site/sections/deployment.js +3 -0
- package/site/sections/developer-guide.js +3 -0
- package/site/sections/extending.js +3 -0
- package/site/sections/quickstart.js +3 -0
- package/site/sections/section-templates.js +1 -0
- package/site/sections/seo-strategy.js +3 -0
- package/site/sections/tenant-config.js +3 -0
- package/site/sections/welcome.js +3 -0
- package/site/seo.js +1 -0
- package/site/sitemap.xml +63 -0
- package/site/styles.css +1982 -0
- package/site/syntax-highlight.js +1 -0
- package/src/app.js +988 -0
- package/src/index.html +56 -0
- package/src/lib/categories.js +55 -0
- package/src/lib/export.js +195 -0
- package/src/lib/manifest-utils.js +69 -0
- package/src/lib/router.js +44 -0
- package/src/lib/search.js +151 -0
- package/src/manifest.js +246 -0
- package/src/mermaid-init.js +207 -0
- package/src/sections/archive-future-roadmap.js +7 -0
- package/src/sections/archive-initiative-alpha.js +7 -0
- package/src/sections/archive-milestone-records.js +7 -0
- package/src/sections/archive-timeline-overview.js +7 -0
- package/src/sections/core-technology-compliance-frameworks.js +7 -0
- package/src/sections/core-technology-coordination-model.js +7 -0
- package/src/sections/core-technology-data-definitions.js +7 -0
- package/src/sections/core-technology-hardware-integration.js +7 -0
- package/src/sections/core-technology-integrity-controls.js +7 -0
- package/src/sections/core-technology-network-topology.js +7 -0
- package/src/sections/core-technology-operator-requirements.js +7 -0
- package/src/sections/core-technology-overview.js +7 -0
- package/src/sections/core-technology-service-interfaces.js +7 -0
- package/src/sections/core-technology-synchronization-strategy.js +7 -0
- package/src/sections/core-technology-system-foundation.js +7 -0
- package/src/sections/developers-api-credentials.js +7 -0
- package/src/sections/developers-api-operations.js +7 -0
- package/src/sections/developers-api-reference.js +7 -0
- package/src/sections/developers-api-websocket.js +7 -0
- package/src/sections/developers-automation-blueprints.js +7 -0
- package/src/sections/developers-automation-modules.js +7 -0
- package/src/sections/developers-automation-patterns.js +7 -0
- package/src/sections/developers-deployment-playbook.js +7 -0
- package/src/sections/developers-overview.js +7 -0
- package/src/sections/developers-scheduling-patterns.js +7 -0
- package/src/sections/developers-sdk-go.js +7 -0
- package/src/sections/developers-sdk-javascript.js +7 -0
- package/src/sections/developers-sdk-python.js +7 -0
- package/src/sections/developers-sdk-rust.js +7 -0
- package/src/sections/developers-sdks.js +7 -0
- package/src/sections/developers-solution-examples.js +7 -0
- package/src/sections/developers-testing-framework.js +7 -0
- package/src/sections/getting-started-architecture-basics.js +7 -0
- package/src/sections/getting-started-introduction.js +7 -0
- package/src/sections/getting-started-performance-overview.js +7 -0
- package/src/sections/governance-community-initiatives.js +7 -0
- package/src/sections/governance-dao-overview.js +7 -0
- package/src/sections/governance-multi-token.js +7 -0
- package/src/sections/governance-overview.js +7 -0
- package/src/sections/governance-proposal-process.js +7 -0
- package/src/sections/governance-proposals.js +7 -0
- package/src/sections/governance-structure.js +7 -0
- package/src/sections/governance-token-distribution.js +7 -0
- package/src/sections/governance-treasury.js +7 -0
- package/src/sections/operations-environment-prep.js +7 -0
- package/src/sections/operations-getting-started.js +7 -0
- package/src/sections/operations-incentives-guide.js +7 -0
- package/src/sections/operations-incentives-strategies.js +7 -0
- package/src/sections/operations-incentives.js +7 -0
- package/src/sections/operations-infrastructure.js +7 -0
- package/src/sections/operations-monitoring.js +7 -0
- package/src/sections/operations-overview.js +7 -0
- package/src/sections/operations-performance.js +7 -0
- package/src/sections/operations-power-infrastructure.js +7 -0
- package/src/sections/operations-setup-guide.js +7 -0
- package/src/sections/operations-sync-setup.js +7 -0
- package/src/sections/products-flagship-solution.js +7 -0
- package/src/sections/products-solution-library.js +7 -0
- package/src/sections/resources-brand-assets.js +7 -0
- package/src/sections/resources-faq.js +7 -0
- package/src/sections/resources-glossary.js +7 -0
- package/src/sections/resources-research-papers.js +7 -0
- package/src/sections/section-templates.js +873 -0
- package/src/sections/security-audits.js +7 -0
- package/src/sections/security-best-practices.js +7 -0
- package/src/sections/security-bug-bounty.js +7 -0
- package/src/sections/security-incident-response.js +7 -0
- package/src/sections/security-overview.js +7 -0
- package/src/sections/technical-architecture.js +7 -0
- package/src/sections/technical-whitepaper.js +7 -0
- package/src/sections/tutorial-automation-bot.js +7 -0
- package/src/sections/tutorial-build-first-integration.js +7 -0
- package/src/sections/tutorial-deploy-automation.js +7 -0
- package/src/sections/tutorial-event-driven-experience.js +7 -0
- package/src/sections/tutorial-operations-onboarding.js +7 -0
- package/src/sections/tutorial-systems-integration.js +7 -0
- package/src/sections/tutorials-overview.js +7 -0
- package/src/sections/use-case-connected-devices.js +7 -0
- package/src/sections/use-case-digital-auctions.js +7 -0
- package/src/sections/use-case-financial-automation.js +7 -0
- package/src/sections/use-case-interactive-media.js +7 -0
- package/src/sections/use-case-realtime-execution.js +7 -0
- package/src/sections/use-case-research-analytics.js +7 -0
- package/src/sections/use-case-supply-operations.js +7 -0
- package/src/sections/use-cases-overview.js +7 -0
- package/src/sections/welcome-overview.js +7 -0
- package/src/seo.js +90 -0
- package/src/styles.css +1982 -0
- package/src/syntax-highlight.js +90 -0
- package/tenants.json.example +68 -0
- package/tenants.schema.json +231 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Quickstart | Pagenary Docs</title>
|
|
7
|
+
<meta name="description" content="Install, build the default bundle, and serve it locally." />
|
|
8
|
+
<link rel="canonical" href="/#quickstart" />
|
|
9
|
+
|
|
10
|
+
<!-- Open Graph -->
|
|
11
|
+
<meta property="og:title" content="Quickstart" />
|
|
12
|
+
<meta property="og:description" content="Install, build the default bundle, and serve it locally." />
|
|
13
|
+
<meta property="og:type" content="article" />
|
|
14
|
+
<meta property="og:url" content="/#quickstart" />
|
|
15
|
+
|
|
16
|
+
<!-- Twitter Card -->
|
|
17
|
+
<meta name="twitter:card" content="summary" />
|
|
18
|
+
<meta name="twitter:title" content="Quickstart" />
|
|
19
|
+
<meta name="twitter:description" content="Install, build the default bundle, and serve it locally." />
|
|
20
|
+
|
|
21
|
+
<!-- Structured Data -->
|
|
22
|
+
<script type="application/ld+json">
|
|
23
|
+
[
|
|
24
|
+
{
|
|
25
|
+
"@context": "https://schema.org",
|
|
26
|
+
"@type": "TechArticle",
|
|
27
|
+
"headline": "Quickstart",
|
|
28
|
+
"description": "Install, build the default bundle, and serve it locally.",
|
|
29
|
+
"url": "/#quickstart",
|
|
30
|
+
"dateModified": "2026-05-26",
|
|
31
|
+
"mainEntityOfPage": {
|
|
32
|
+
"@type": "WebPage",
|
|
33
|
+
"@id": "/#quickstart"
|
|
34
|
+
},
|
|
35
|
+
"isPartOf": {
|
|
36
|
+
"@type": "WebSite",
|
|
37
|
+
"name": "Pagenary Docs",
|
|
38
|
+
"url": "/"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"@context": "https://schema.org",
|
|
43
|
+
"@type": "BreadcrumbList",
|
|
44
|
+
"itemListElement": [
|
|
45
|
+
{
|
|
46
|
+
"@type": "ListItem",
|
|
47
|
+
"position": 1,
|
|
48
|
+
"name": "Home",
|
|
49
|
+
"item": "/"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"@type": "ListItem",
|
|
53
|
+
"position": 2,
|
|
54
|
+
"name": "Getting Started",
|
|
55
|
+
"item": "/#getting-started"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"@type": "ListItem",
|
|
59
|
+
"position": 3,
|
|
60
|
+
"name": "Quickstart",
|
|
61
|
+
"item": "/#quickstart"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
</script>
|
|
67
|
+
|
|
68
|
+
<!-- Redirect to SPA for JavaScript-enabled browsers -->
|
|
69
|
+
<script>
|
|
70
|
+
if (typeof window !== 'undefined') {
|
|
71
|
+
window.location.replace('/#quickstart');
|
|
72
|
+
}
|
|
73
|
+
</script>
|
|
74
|
+
<noscript>
|
|
75
|
+
<meta http-equiv="refresh" content="0; url=/#quickstart" />
|
|
76
|
+
</noscript>
|
|
77
|
+
|
|
78
|
+
<link rel="stylesheet" href="../styles.css" />
|
|
79
|
+
<style>
|
|
80
|
+
.static-content { max-width: 800px; margin: 0 auto; padding: 2rem; }
|
|
81
|
+
.static-footer { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid #eee; font-size: 0.9rem; color: #666; }
|
|
82
|
+
</style>
|
|
83
|
+
</head>
|
|
84
|
+
<body>
|
|
85
|
+
<main class="static-content">
|
|
86
|
+
<article>
|
|
87
|
+
<h1>Quickstart</h1>
|
|
88
|
+
<p class="lead">Install, build the default bundle, and serve it locally.</p>
|
|
89
|
+
<div class="section-body">
|
|
90
|
+
<section class="section doc markdown">
|
|
91
|
+
<div class="doc-content">
|
|
92
|
+
<h1 id="quick-start-guide">Quick Start Guide</h1>
|
|
93
|
+
<p>Create your first Pagenary documentation site in 10 minutes.</p>
|
|
94
|
+
<h2 id="prerequisites">Prerequisites</h2>
|
|
95
|
+
<ul>
|
|
96
|
+
<li>Node.js 18+</li>
|
|
97
|
+
<li>Git (for version control)</li>
|
|
98
|
+
</ul>
|
|
99
|
+
<h2 id="step-1-set-up-the-publisher">Step 1: Set Up the Publisher</h2>
|
|
100
|
+
<pre><code class="language-bash"># Clone the repository
|
|
101
|
+
git clone https://github.com/jmagly/dbbuilder.git pagenary
|
|
102
|
+
cd pagenary
|
|
103
|
+
|
|
104
|
+
# Install dependencies
|
|
105
|
+
npm run bootstrap
|
|
106
|
+
|
|
107
|
+
# Verify installation
|
|
108
|
+
cd apps/publisher
|
|
109
|
+
npm run build
|
|
110
|
+
npm run serve
|
|
111
|
+
# Visit http://localhost:5173 to see the default docs</code></pre>
|
|
112
|
+
<h2 id="key-features">Key Features</h2>
|
|
113
|
+
<p>Pagenary includes several powerful features out of the box:</p>
|
|
114
|
+
<ul>
|
|
115
|
+
<li><strong>Command Palette</strong> - Press `Ctrl+K` (or `Cmd+K` on Mac) to quickly navigate, search, and export</li>
|
|
116
|
+
<li><strong>Mermaid Diagrams</strong> - Embed flowcharts, sequence diagrams, and more using Mermaid syntax</li>
|
|
117
|
+
<li><strong>Smart External Links</strong> - External links automatically open in new tabs with security headers</li>
|
|
118
|
+
</ul>
|
|
119
|
+
<h2 id="step-2-create-your-tenant-directory">Step 2: Create Your Tenant Directory</h2>
|
|
120
|
+
<p>Create a new directory for your documentation (can be anywhere on your system):</p>
|
|
121
|
+
<pre><code class="language-bash">mkdir ~/my-docs
|
|
122
|
+
cd ~/my-docs</code></pre>
|
|
123
|
+
<p>Create the basic structure:</p>
|
|
124
|
+
<pre><code class="language-bash">mkdir content</code></pre>
|
|
125
|
+
<h2 id="step-3-add-branding-configuration">Step 3: Add Branding Configuration</h2>
|
|
126
|
+
<p>Create `config.json`:</p>
|
|
127
|
+
<pre><code class="language-json">{
|
|
128
|
+
"title": "My Product Documentation",
|
|
129
|
+
"description": "Complete guide to using My Product",
|
|
130
|
+
"brandMark": "MY",
|
|
131
|
+
"brandSub": "PRODUCT",
|
|
132
|
+
"tagline": "Documentation that works",
|
|
133
|
+
"copyright": "My Company",
|
|
134
|
+
"accentColor": "#3B82F6",
|
|
135
|
+
"surfaceColor": "#F8FAFC"
|
|
136
|
+
}</code></pre>
|
|
137
|
+
<h2 id="step-4-create-your-first-content">Step 4: Create Your First Content</h2>
|
|
138
|
+
<p>Create `content/welcome.md`:</p>
|
|
139
|
+
<pre><code class="language-markdown"># Welcome to My Product
|
|
140
|
+
|
|
141
|
+
This is your documentation home page.
|
|
142
|
+
|
|
143
|
+
## Getting Started
|
|
144
|
+
|
|
145
|
+
Here's what you need to know to get started with My Product.
|
|
146
|
+
|
|
147
|
+
### Installation
|
|
148
|
+
|
|
149
|
+
\`\`\`bash
|
|
150
|
+
npm install my-product
|
|
151
|
+
\`\`\`
|
|
152
|
+
|
|
153
|
+
### Quick Example
|
|
154
|
+
|
|
155
|
+
\`\`\`javascript
|
|
156
|
+
import { MyProduct } from 'my-product';
|
|
157
|
+
|
|
158
|
+
const app = new MyProduct();
|
|
159
|
+
app.start();
|
|
160
|
+
\`\`\`
|
|
161
|
+
|
|
162
|
+
## Features
|
|
163
|
+
|
|
164
|
+
- **Fast** - Built for speed
|
|
165
|
+
- **Simple** - Easy to use
|
|
166
|
+
- **Powerful** - Full-featured
|
|
167
|
+
|
|
168
|
+
## Architecture
|
|
169
|
+
|
|
170
|
+
\`\`\`mermaid
|
|
171
|
+
graph TD
|
|
172
|
+
A[User] --> B[Frontend]
|
|
173
|
+
B --> C[API]
|
|
174
|
+
C --> D[Database]
|
|
175
|
+
\`\`\`</code></pre>
|
|
176
|
+
<p>Create `content/installation.md`:</p>
|
|
177
|
+
<pre><code class="language-markdown"># Installation Guide
|
|
178
|
+
|
|
179
|
+
## Requirements
|
|
180
|
+
|
|
181
|
+
- Node.js 18 or higher
|
|
182
|
+
- npm or yarn
|
|
183
|
+
|
|
184
|
+
## Install via npm
|
|
185
|
+
|
|
186
|
+
\`\`\`bash
|
|
187
|
+
npm install my-product
|
|
188
|
+
\`\`\`
|
|
189
|
+
|
|
190
|
+
## Install via yarn
|
|
191
|
+
|
|
192
|
+
\`\`\`bash
|
|
193
|
+
yarn add my-product
|
|
194
|
+
\`\`\`
|
|
195
|
+
|
|
196
|
+
## Verify Installation
|
|
197
|
+
|
|
198
|
+
\`\`\`bash
|
|
199
|
+
npx my-product --version
|
|
200
|
+
\`\`\`</code></pre>
|
|
201
|
+
<h2 id="step-5-create-navigation-manifest">Step 5: Create Navigation Manifest</h2>
|
|
202
|
+
<p>Create `manifest.json`:</p>
|
|
203
|
+
<pre><code class="language-json">[
|
|
204
|
+
{
|
|
205
|
+
"id": "welcome",
|
|
206
|
+
"title": "Welcome",
|
|
207
|
+
"summary": "Introduction to My Product",
|
|
208
|
+
"file": "welcome.md"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": "installation",
|
|
212
|
+
"title": "Installation",
|
|
213
|
+
"summary": "How to install My Product",
|
|
214
|
+
"file": "installation.md"
|
|
215
|
+
}
|
|
216
|
+
]</code></pre>
|
|
217
|
+
<h2 id="step-6-register-your-tenant">Step 6: Register Your Tenant</h2>
|
|
218
|
+
<p>Go back to the publisher directory and edit `tenants.json`:</p>
|
|
219
|
+
<pre><code class="language-bash">cd /path/to/pagenary/apps/publisher</code></pre>
|
|
220
|
+
<p>Add your tenant to `tenants.json`:</p>
|
|
221
|
+
<pre><code class="language-json">{
|
|
222
|
+
"my-docs": {
|
|
223
|
+
"source": "/home/youruser/my-docs",
|
|
224
|
+
"domain": "my-docs.local"
|
|
225
|
+
}
|
|
226
|
+
}</code></pre>
|
|
227
|
+
<h2 id="step-7-build-and-preview">Step 7: Build and Preview</h2>
|
|
228
|
+
<pre><code class="language-bash"># Build your tenant
|
|
229
|
+
npm run build:tenants my-docs
|
|
230
|
+
|
|
231
|
+
# Start the server
|
|
232
|
+
npm run serve
|
|
233
|
+
|
|
234
|
+
# Visit http://localhost:5173/my-docs/</code></pre>
|
|
235
|
+
<p>You should see your documentation with your branding applied.</p>
|
|
236
|
+
<h2 id="step-8-set-up-local-domain-optional">Step 8: Set Up Local Domain (Optional)</h2>
|
|
237
|
+
<p>For a more realistic preview with custom domains:</p>
|
|
238
|
+
<p>1. Edit `/etc/hosts` (Linux/Mac) or `C:\Windows\System32\drivers\etc\hosts` (Windows):</p>
|
|
239
|
+
<pre><code>127.0.0.1 my-docs.local</code></pre>
|
|
240
|
+
<p>2. Start the Caddy server:</p>
|
|
241
|
+
<pre><code class="language-bash">npm run caddy:up</code></pre>
|
|
242
|
+
<p>3. Visit http://my-docs.local</p>
|
|
243
|
+
<h2 id="next-steps">Next Steps</h2>
|
|
244
|
+
<h3 id="add-more-content">Add More Content</h3>
|
|
245
|
+
<p>Create additional `.md`, `.html`, or `.js` files in `content/`:</p>
|
|
246
|
+
<pre><code>content/
|
|
247
|
+
├── welcome.md
|
|
248
|
+
├── installation.md
|
|
249
|
+
├── guides/
|
|
250
|
+
│ ├── _manifest.json
|
|
251
|
+
│ ├── getting-started.md
|
|
252
|
+
│ └── advanced.md
|
|
253
|
+
└── api/
|
|
254
|
+
├── _manifest.json
|
|
255
|
+
└── reference.md</code></pre>
|
|
256
|
+
<h3 id="organize-with-section-manifests">Organize with Section Manifests</h3>
|
|
257
|
+
<p>Create `content/guides/_manifest.json`:</p>
|
|
258
|
+
<pre><code class="language-json">{
|
|
259
|
+
"title": "Guides",
|
|
260
|
+
"sections": [
|
|
261
|
+
{ "id": "getting-started", "title": "Getting Started", "file": "getting-started.md" },
|
|
262
|
+
{ "id": "advanced", "title": "Advanced Usage", "file": "advanced.md" }
|
|
263
|
+
]
|
|
264
|
+
}</code></pre>
|
|
265
|
+
<h3 id="add-rich-content">Add Rich Content</h3>
|
|
266
|
+
<p><strong>Tables:</strong></p>
|
|
267
|
+
<div class="html-block"><table class="spec-table">
|
|
268
|
+
<thead>
|
|
269
|
+
<tr><th>Feature</th><th>Status</th></tr>
|
|
270
|
+
</thead>
|
|
271
|
+
<tbody>
|
|
272
|
+
<tr><td>Search</td><td>Ready</td></tr>
|
|
273
|
+
<tr><td>Export</td><td>Ready</td></tr>
|
|
274
|
+
</tbody>
|
|
275
|
+
</table></div>
|
|
276
|
+
<p><strong>Diagrams:</strong></p>
|
|
277
|
+
<pre><code class="language-mermaid">sequenceDiagram
|
|
278
|
+
User->>API: Request
|
|
279
|
+
API->>DB: Query
|
|
280
|
+
DB-->>API: Results
|
|
281
|
+
API-->>User: Response</code></pre>
|
|
282
|
+
<h3 id="customize-theme">Customize Theme</h3>
|
|
283
|
+
<p>Adjust colors in `config.json`:</p>
|
|
284
|
+
<table><thead><tr><th style="text-align: left">Color</th><th style="text-align: left">Purpose</th><th style="text-align: left">Example</th></tr></thead><tbody><tr><td style="text-align: left">`accentColor`</td><td style="text-align: left">Links, buttons, highlights</td><td style="text-align: left">`#3B82F6` (blue)</td></tr><tr><td style="text-align: left">`surfaceColor`</td><td style="text-align: left">Page background</td><td style="text-align: left">`#F8FAFC` (off-white)</td></tr></tbody></table>
|
|
285
|
+
<h3 id="deploy">Deploy</h3>
|
|
286
|
+
<p>Your built site is in `dist/my-docs/`. Deploy it anywhere that serves static files:</p>
|
|
287
|
+
<ul>
|
|
288
|
+
<li><strong>Netlify/Vercel</strong>: Point to `dist/my-docs/`</li>
|
|
289
|
+
<li><strong>S3/GCS</strong>: Upload the folder</li>
|
|
290
|
+
<li><strong>Docker</strong>: Use the included Caddy setup</li>
|
|
291
|
+
</ul>
|
|
292
|
+
<h2 id="troubleshooting">Troubleshooting</h2>
|
|
293
|
+
<h3 id="content-not-appearing">Content not appearing?</h3>
|
|
294
|
+
<p>1. Check that `manifest.json` references the correct file paths</p>
|
|
295
|
+
<p>2. Verify files exist in `content/`</p>
|
|
296
|
+
<p>3. Run `npm run build:tenants my-docs` and check for errors</p>
|
|
297
|
+
<h3 id="styles-not-applied">Styles not applied?</h3>
|
|
298
|
+
<p>1. Verify `config.json` is valid JSON</p>
|
|
299
|
+
<p>2. Check color values are valid hex codes (e.g., `#3B82F6`)</p>
|
|
300
|
+
<h3 id="search-not-working">Search not working?</h3>
|
|
301
|
+
<p>Search indexes content on first use. Wait for "Indexing content..." to complete.</p>
|
|
302
|
+
<h2 id="resources">Resources</h2>
|
|
303
|
+
<ul>
|
|
304
|
+
<li><a href="#tenant-config">Tenant Configuration</a> - All config options</li>
|
|
305
|
+
<li><a href="#architecture">Architecture</a> - How it works</li>
|
|
306
|
+
<li><a href="#api">API Reference</a> - Module documentation</li>
|
|
307
|
+
<li><a href="#deployment">Deployment</a> - Hosting guide</li>
|
|
308
|
+
</ul>
|
|
309
|
+
</div>
|
|
310
|
+
</section>
|
|
311
|
+
</div>
|
|
312
|
+
</article>
|
|
313
|
+
<footer class="static-footer">
|
|
314
|
+
<p>View interactive version: <a href="/#quickstart">Quickstart</a></p>
|
|
315
|
+
</footer>
|
|
316
|
+
</main>
|
|
317
|
+
</body>
|
|
318
|
+
</html>
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>SEO Strategy | Pagenary Docs</title>
|
|
7
|
+
<meta name="description" content="Metadata, hash-routing considerations, and discoverability." />
|
|
8
|
+
<link rel="canonical" href="/#seo-strategy" />
|
|
9
|
+
|
|
10
|
+
<!-- Open Graph -->
|
|
11
|
+
<meta property="og:title" content="SEO Strategy" />
|
|
12
|
+
<meta property="og:description" content="Metadata, hash-routing considerations, and discoverability." />
|
|
13
|
+
<meta property="og:type" content="article" />
|
|
14
|
+
<meta property="og:url" content="/#seo-strategy" />
|
|
15
|
+
|
|
16
|
+
<!-- Twitter Card -->
|
|
17
|
+
<meta name="twitter:card" content="summary" />
|
|
18
|
+
<meta name="twitter:title" content="SEO Strategy" />
|
|
19
|
+
<meta name="twitter:description" content="Metadata, hash-routing considerations, and discoverability." />
|
|
20
|
+
|
|
21
|
+
<!-- Structured Data -->
|
|
22
|
+
<script type="application/ld+json">
|
|
23
|
+
[
|
|
24
|
+
{
|
|
25
|
+
"@context": "https://schema.org",
|
|
26
|
+
"@type": "TechArticle",
|
|
27
|
+
"headline": "SEO Strategy",
|
|
28
|
+
"description": "Metadata, hash-routing considerations, and discoverability.",
|
|
29
|
+
"url": "/#seo-strategy",
|
|
30
|
+
"dateModified": "2026-05-26",
|
|
31
|
+
"mainEntityOfPage": {
|
|
32
|
+
"@type": "WebPage",
|
|
33
|
+
"@id": "/#seo-strategy"
|
|
34
|
+
},
|
|
35
|
+
"isPartOf": {
|
|
36
|
+
"@type": "WebSite",
|
|
37
|
+
"name": "Pagenary Docs",
|
|
38
|
+
"url": "/"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"@context": "https://schema.org",
|
|
43
|
+
"@type": "BreadcrumbList",
|
|
44
|
+
"itemListElement": [
|
|
45
|
+
{
|
|
46
|
+
"@type": "ListItem",
|
|
47
|
+
"position": 1,
|
|
48
|
+
"name": "Home",
|
|
49
|
+
"item": "/"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"@type": "ListItem",
|
|
53
|
+
"position": 2,
|
|
54
|
+
"name": "Reference",
|
|
55
|
+
"item": "/#reference"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"@type": "ListItem",
|
|
59
|
+
"position": 3,
|
|
60
|
+
"name": "SEO Strategy",
|
|
61
|
+
"item": "/#seo-strategy"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
</script>
|
|
67
|
+
|
|
68
|
+
<!-- Redirect to SPA for JavaScript-enabled browsers -->
|
|
69
|
+
<script>
|
|
70
|
+
if (typeof window !== 'undefined') {
|
|
71
|
+
window.location.replace('/#seo-strategy');
|
|
72
|
+
}
|
|
73
|
+
</script>
|
|
74
|
+
<noscript>
|
|
75
|
+
<meta http-equiv="refresh" content="0; url=/#seo-strategy" />
|
|
76
|
+
</noscript>
|
|
77
|
+
|
|
78
|
+
<link rel="stylesheet" href="../styles.css" />
|
|
79
|
+
<style>
|
|
80
|
+
.static-content { max-width: 800px; margin: 0 auto; padding: 2rem; }
|
|
81
|
+
.static-footer { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid #eee; font-size: 0.9rem; color: #666; }
|
|
82
|
+
</style>
|
|
83
|
+
</head>
|
|
84
|
+
<body>
|
|
85
|
+
<main class="static-content">
|
|
86
|
+
<article>
|
|
87
|
+
<h1>SEO Strategy</h1>
|
|
88
|
+
<p class="lead">Metadata, hash-routing considerations, and discoverability.</p>
|
|
89
|
+
<div class="section-body">
|
|
90
|
+
<section class="section doc markdown">
|
|
91
|
+
<div class="doc-content">
|
|
92
|
+
<h1 id="seo-strategy-notes">SEO Strategy Notes</h1>
|
|
93
|
+
<p>Docs Toolkit is primarily an internal enablement asset, but clean metadata keeps shared links professional and predictable.</p>
|
|
94
|
+
<h2 id="core-actions">Core Actions</h2>
|
|
95
|
+
<ul>
|
|
96
|
+
<li>Maintain a descriptive `<title>` and `<meta name="description">` in `src/index.html`.</li>
|
|
97
|
+
<li>Keep manifest summaries concise—these values power link previews and the export document.</li>
|
|
98
|
+
<li>Use human-readable, hyphenated IDs in `manifest.js` so hash URLs remain friendly.</li>
|
|
99
|
+
</ul>
|
|
100
|
+
<h2 id="hash-routing-considerations">Hash Routing Considerations</h2>
|
|
101
|
+
<ul>
|
|
102
|
+
<li>Hash routes (`#/page-id`) mean the host only serves `index.html`; the browser handles navigation.</li>
|
|
103
|
+
<li>When sharing links, include the hash so teammates land directly on the intended section.</li>
|
|
104
|
+
<li>Avoid uppercase or spaces in IDs to prevent encoding quirks.</li>
|
|
105
|
+
</ul>
|
|
106
|
+
<h2 id="optional-enhancements">Optional Enhancements</h2>
|
|
107
|
+
<ul>
|
|
108
|
+
<li>Add JSON-LD when tenant offerings need richer preview cards.</li>
|
|
109
|
+
<li>Inject Open Graph/Twitter meta tags if the docs will be shared outside the reseller organization.</li>
|
|
110
|
+
<li>Monitor for broken links or missing content using the lint script or a CI crawler.</li>
|
|
111
|
+
</ul>
|
|
112
|
+
</div>
|
|
113
|
+
</section>
|
|
114
|
+
</div>
|
|
115
|
+
</article>
|
|
116
|
+
<footer class="static-footer">
|
|
117
|
+
<p>View interactive version: <a href="/#seo-strategy">SEO Strategy</a></p>
|
|
118
|
+
</footer>
|
|
119
|
+
</main>
|
|
120
|
+
</body>
|
|
121
|
+
</html>
|