vibespot 1.3.0 → 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/README.md +59 -9
- package/dist/index.js +370 -370
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/ui/dashboard.js +4 -3
- package/ui/docs/index.html +344 -24
- package/ui/docs/screenshots/module-overview-slideout.png +0 -0
- package/ui/docs/screenshots.zip +0 -0
- package/ui/index.html +26 -21
- package/ui/settings.js +22 -16
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibespot",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "AI-powered HubSpot CMS landing page builder — vibe coding & React converter",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"build": "tsup",
|
|
20
20
|
"test": "vitest run",
|
|
21
21
|
"test:watch": "vitest",
|
|
22
|
-
"prepublishOnly": "npm run build"
|
|
22
|
+
"prepublishOnly": "npm run build",
|
|
23
|
+
"contact-monitor": "tsx scripts/contact-monitor.ts"
|
|
23
24
|
},
|
|
24
25
|
"dependencies": {
|
|
25
26
|
"@anthropic-ai/sdk": "^0.92.0",
|
package/ui/dashboard.js
CHANGED
|
@@ -1292,15 +1292,16 @@ if (humanifyCheckbox) {
|
|
|
1292
1292
|
// ---------------------------------------------------------------------------
|
|
1293
1293
|
|
|
1294
1294
|
function switchWorkspaceTab(tabName) {
|
|
1295
|
+
if (tabName === "settings") {
|
|
1296
|
+
if (typeof openSettings === "function") openSettings();
|
|
1297
|
+
return;
|
|
1298
|
+
}
|
|
1295
1299
|
document.querySelectorAll(".workspace-tab").forEach((btn) => {
|
|
1296
1300
|
btn.classList.toggle("active", btn.dataset.wsTab === tabName);
|
|
1297
1301
|
});
|
|
1298
1302
|
document.querySelectorAll(".workspace-panel").forEach((panel) => {
|
|
1299
1303
|
panel.classList.toggle("active", panel.dataset.wsPanel === tabName);
|
|
1300
1304
|
});
|
|
1301
|
-
if (tabName === "settings" && typeof refreshSettings === "function") {
|
|
1302
|
-
refreshSettings();
|
|
1303
|
-
}
|
|
1304
1305
|
if (tabName === "library") {
|
|
1305
1306
|
refreshDashboard();
|
|
1306
1307
|
}
|
package/ui/docs/index.html
CHANGED
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
<a class="doc-nav__link" href="#editor">The Editor</a>
|
|
61
61
|
<a class="doc-nav__link doc-nav__link--sub" href="#editor-layout">Layout</a>
|
|
62
62
|
<a class="doc-nav__link doc-nav__link--sub" href="#workspace-tabs">Workspace Tabs</a>
|
|
63
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#project-overview">Project Overview</a>
|
|
63
64
|
<a class="doc-nav__link doc-nav__link--sub" href="#chat-panel">Chat</a>
|
|
64
65
|
<a class="doc-nav__link doc-nav__link--sub" href="#preview-panel">Preview</a>
|
|
65
66
|
<a class="doc-nav__link doc-nav__link--sub" href="#code-editor">Code Editor</a>
|
|
@@ -71,6 +72,11 @@
|
|
|
71
72
|
<a class="doc-nav__link doc-nav__link--sub" href="#multi-page">Multi-Page Sites</a>
|
|
72
73
|
<a class="doc-nav__link doc-nav__link--sub" href="#templates">Templates</a>
|
|
73
74
|
<a class="doc-nav__link doc-nav__link--sub" href="#module-library">Module Library</a>
|
|
75
|
+
<a class="doc-nav__link" href="#first-generation">Your First Generation</a>
|
|
76
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#first-gen-page">Page Workflow</a>
|
|
77
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#first-gen-email">Email Workflow</a>
|
|
78
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#first-gen-editing">Editing with Module Overview</a>
|
|
79
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#first-gen-publish">Publishing to HubSpot</a>
|
|
74
80
|
</div>
|
|
75
81
|
|
|
76
82
|
<div class="doc-nav__section">
|
|
@@ -106,6 +112,12 @@
|
|
|
106
112
|
<a class="doc-nav__link doc-nav__link--sub" href="#auto-fix">Auto-Fix</a>
|
|
107
113
|
<a class="doc-nav__link doc-nav__link--sub" href="#creating-page-hubspot">Creating a Page</a>
|
|
108
114
|
<a class="doc-nav__link" href="#zip-download">ZIP Download</a>
|
|
115
|
+
<a class="doc-nav__link" href="#docker-deployment">Docker Deployment</a>
|
|
116
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#docker-quick-start">Quick Start</a>
|
|
117
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#docker-https">HTTPS with Caddy</a>
|
|
118
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#docker-env-vars">Environment Variables</a>
|
|
119
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#docker-persistence">Persistence</a>
|
|
120
|
+
<a class="doc-nav__link doc-nav__link--sub" href="#docker-reverse-proxy">Reverse Proxy & k8s</a>
|
|
109
121
|
<a class="doc-nav__link" href="#marketplace">Marketplace</a>
|
|
110
122
|
<a class="doc-nav__link" href="#version-history">Version History</a>
|
|
111
123
|
</div>
|
|
@@ -189,7 +201,7 @@ vibespot</code></pre>
|
|
|
189
201
|
<div class="doc-feature">
|
|
190
202
|
<div class="doc-feature__icon">🎨</div>
|
|
191
203
|
<div class="doc-feature__title">Multi-Engine AI</div>
|
|
192
|
-
<div class="doc-feature__desc">Works with Anthropic, OpenAI, Gemini, Claude Code, Gemini CLI, and Codex CLI.</div>
|
|
204
|
+
<div class="doc-feature__desc">Works with Anthropic, OpenAI, Gemini, Langdock, Claude Code, Gemini CLI, and Codex CLI.</div>
|
|
193
205
|
</div>
|
|
194
206
|
<div class="doc-feature">
|
|
195
207
|
<div class="doc-feature__icon">🕒</div>
|
|
@@ -207,7 +219,7 @@ vibespot</code></pre>
|
|
|
207
219
|
<p>vibeSpot stores its configuration at <code>~/.vibespot/config.json</code>. You can configure everything through the Settings panel in the web UI, or by editing the config file directly.</p>
|
|
208
220
|
|
|
209
221
|
<h3 id="ai-engines">AI Engines</h3>
|
|
210
|
-
<p>vibeSpot supports
|
|
222
|
+
<p>vibeSpot supports eight AI engines. You only need one to get started. The table below compares them:</p>
|
|
211
223
|
|
|
212
224
|
<table>
|
|
213
225
|
<thead>
|
|
@@ -219,6 +231,7 @@ vibespot</code></pre>
|
|
|
219
231
|
<tr><td>Claude OAuth</td><td>API</td><td>Run <code>claude setup-token</code>, paste token</td><td>Included in Claude subscription</td><td>Subscribers without API budget</td></tr>
|
|
220
232
|
<tr><td>OpenAI API</td><td>API</td><td>Add <code>OPENAI_API_KEY</code></td><td>Pay-per-token</td><td>GPT-5.5 users, existing OpenAI budget</td></tr>
|
|
221
233
|
<tr><td>Gemini API</td><td>API</td><td>Add <code>GEMINI_API_KEY</code></td><td>Free tier available</td><td>Cost-conscious users, free quota</td></tr>
|
|
234
|
+
<tr><td>Langdock</td><td>API</td><td>Add <code>LANGDOCK_API_KEY</code></td><td>Pay-per-token (via Langdock)</td><td>EU data residency, GDPR compliance</td></tr>
|
|
222
235
|
<tr><td>Gemini CLI</td><td>CLI</td><td>Install <code>gemini</code> CLI, authenticate</td><td>Free (with Google account)</td><td>Free option without API keys</td></tr>
|
|
223
236
|
<tr><td>Codex CLI</td><td>CLI</td><td>Install <code>codex</code> CLI, authenticate</td><td>Included in OpenAI subscription</td><td>OpenAI subscribers</td></tr>
|
|
224
237
|
</tbody>
|
|
@@ -231,6 +244,7 @@ vibespot</code></pre>
|
|
|
231
244
|
<button class="doc-tabs__tab" data-tab="tab-claude-oauth">Claude OAuth</button>
|
|
232
245
|
<button class="doc-tabs__tab" data-tab="tab-openai">OpenAI API</button>
|
|
233
246
|
<button class="doc-tabs__tab" data-tab="tab-gemini-api">Gemini API</button>
|
|
247
|
+
<button class="doc-tabs__tab" data-tab="tab-langdock">Langdock</button>
|
|
234
248
|
<button class="doc-tabs__tab" data-tab="tab-gemini-cli">Gemini CLI</button>
|
|
235
249
|
<button class="doc-tabs__tab" data-tab="tab-codex">Codex CLI</button>
|
|
236
250
|
</div>
|
|
@@ -278,6 +292,18 @@ vibespot</code></pre>
|
|
|
278
292
|
<li>Select <strong>Gemini API</strong> as the engine.</li>
|
|
279
293
|
</ol>
|
|
280
294
|
</div>
|
|
295
|
+
<div class="doc-tabs__panel" id="tab-langdock">
|
|
296
|
+
<p>Langdock is an EU-hosted AI gateway based in Frankfurt. It routes Claude requests through an Anthropic-compatible endpoint, so all Anthropic features (prompt caching, structured output, extended thinking) work unchanged. Langdock provides a single GDPR-native DPA covering OpenAI, Anthropic, Mistral, and Google models.</p>
|
|
297
|
+
<ol class="doc-steps">
|
|
298
|
+
<li>Sign up at <a href="https://langdock.com" target="_blank">langdock.com</a> and generate an API key.</li>
|
|
299
|
+
<li>In vibeSpot Settings → AI tab, paste the key into the Langdock API Key field. Or set the environment variable: <code>export LANGDOCK_API_KEY=...</code></li>
|
|
300
|
+
<li>Select <strong>Langdock</strong> as the engine. The default model is <code>claude-sonnet-4-20250514</code>. All Claude models are available through the gateway.</li>
|
|
301
|
+
</ol>
|
|
302
|
+
<div class="doc-callout doc-callout--info">
|
|
303
|
+
<div class="doc-callout__label">ℹ Self-Hosted Deployments</div>
|
|
304
|
+
<p>For private-cloud or self-hosted Langdock installations, set <code>LANGDOCK_BASE_URL</code> to override the default endpoint (<code>https://api.langdock.com/anthropic</code>). You can also set this in the config file as <code>langdockBaseUrl</code>.</p>
|
|
305
|
+
</div>
|
|
306
|
+
</div>
|
|
281
307
|
<div class="doc-tabs__panel" id="tab-gemini-cli">
|
|
282
308
|
<p>The Gemini CLI runs as a local subprocess, similar to Claude Code.</p>
|
|
283
309
|
<ol class="doc-steps">
|
|
@@ -319,10 +345,13 @@ vibespot</code></pre>
|
|
|
319
345
|
<tr><th>Field</th><th>Type</th><th>Description</th></tr>
|
|
320
346
|
</thead>
|
|
321
347
|
<tbody>
|
|
322
|
-
<tr><td><code>aiEngine</code></td><td>string</td><td>Active AI engine: <code>"anthropic-api"</code>, <code>"claude-code"</code>, <code>"claude-oauth"</code>, <code>"openai-api"</code>, <code>"gemini-api"</code>, <code>"gemini-cli"</code>, <code>"codex-cli"</code></td></tr>
|
|
348
|
+
<tr><td><code>aiEngine</code></td><td>string</td><td>Active AI engine: <code>"anthropic-api"</code>, <code>"claude-code"</code>, <code>"claude-oauth"</code>, <code>"openai-api"</code>, <code>"gemini-api"</code>, <code>"langdock-api"</code>, <code>"gemini-cli"</code>, <code>"codex-cli"</code></td></tr>
|
|
323
349
|
<tr><td><code>anthropicApiKey</code></td><td>string</td><td>Anthropic API key (starts with <code>sk-ant-</code>)</td></tr>
|
|
324
350
|
<tr><td><code>openaiApiKey</code></td><td>string</td><td>OpenAI API key (starts with <code>sk-</code>)</td></tr>
|
|
325
351
|
<tr><td><code>geminiApiKey</code></td><td>string</td><td>Google AI / Gemini API key</td></tr>
|
|
352
|
+
<tr><td><code>langdockApiKey</code></td><td>string</td><td>Langdock API key for the EU gateway</td></tr>
|
|
353
|
+
<tr><td><code>langdockApiModel</code></td><td>string</td><td>Langdock model override (default: <code>claude-sonnet-4-20250514</code>)</td></tr>
|
|
354
|
+
<tr><td><code>langdockBaseUrl</code></td><td>string</td><td>Override Langdock endpoint for self-hosted/private-cloud deployments (default: <code>https://api.langdock.com/anthropic</code>)</td></tr>
|
|
326
355
|
<tr><td><code>claudeCodeModel</code></td><td>string</td><td>Model override for Claude Code CLI</td></tr>
|
|
327
356
|
<tr><td><code>anthropicApiModel</code></td><td>string</td><td>Anthropic API model (default: <code>claude-sonnet-4-20250514</code>)</td></tr>
|
|
328
357
|
<tr><td><code>openaiApiModel</code></td><td>string</td><td>OpenAI API model (default: <code>gpt-5.5</code>)</td></tr>
|
|
@@ -336,7 +365,7 @@ vibespot</code></pre>
|
|
|
336
365
|
</table>
|
|
337
366
|
|
|
338
367
|
<h3 id="env-vars">Environment Variables</h3>
|
|
339
|
-
<p>API keys can
|
|
368
|
+
<p>API keys and server settings can be set as environment variables. The config file takes precedence — environment variables are used as fallbacks when no key is set in the config. In Docker deployments, env vars are the primary configuration method (see <a href="#docker-deployment">Docker Deployment</a>).</p>
|
|
340
369
|
<table>
|
|
341
370
|
<thead>
|
|
342
371
|
<tr><th>Variable</th><th>Description</th></tr>
|
|
@@ -346,6 +375,14 @@ vibespot</code></pre>
|
|
|
346
375
|
<tr><td><code>OPENAI_API_KEY</code></td><td>OpenAI API key for GPT models</td></tr>
|
|
347
376
|
<tr><td><code>GEMINI_API_KEY</code></td><td>Google AI API key for Gemini models</td></tr>
|
|
348
377
|
<tr><td><code>GOOGLE_AI_API_KEY</code></td><td>Alternative name for the Gemini API key (same effect as <code>GEMINI_API_KEY</code>)</td></tr>
|
|
378
|
+
<tr><td><code>LANGDOCK_API_KEY</code></td><td>Langdock EU gateway key</td></tr>
|
|
379
|
+
<tr><td><code>LANGDOCK_BASE_URL</code></td><td>Override Langdock endpoint for self-hosted deployments</td></tr>
|
|
380
|
+
<tr><td><code>HUBSPOT_PERSONAL_ACCESS_KEY</code></td><td>HubSpot PAK — enables theme upload without configuring through the UI</td></tr>
|
|
381
|
+
<tr><td><code>FIGMA_TOKEN</code></td><td>Figma personal access token for design import</td></tr>
|
|
382
|
+
<tr><td><code>VIBESPOT_AI_ENGINE</code></td><td>Default engine: <code>anthropic-api</code>, <code>openai-api</code>, <code>gemini-api</code>, <code>langdock-api</code></td></tr>
|
|
383
|
+
<tr><td><code>VIBESPOT_AGENTIC_MODE</code></td><td>Set <code>true</code> to enable the multi-stage agentic pipeline</td></tr>
|
|
384
|
+
<tr><td><code>VIBESPOT_PORT</code></td><td>Override the HTTP server port (default: <code>4200</code>)</td></tr>
|
|
385
|
+
<tr><td><code>VIBESPOT_NO_OPEN</code></td><td>Set <code>1</code> to suppress auto-opening the browser on startup</td></tr>
|
|
349
386
|
</tbody>
|
|
350
387
|
</table>
|
|
351
388
|
</div>
|
|
@@ -372,17 +409,39 @@ vibespot</code></pre>
|
|
|
372
409
|
<ul>
|
|
373
410
|
<li><strong>Pages</strong> — Create new pages and manage existing templates. The page tree sidebar shows all templates with type badges (LP, Blog, Web, Sec), labels, and module counts.</li>
|
|
374
411
|
<li><strong>Brand</strong> — Brand kit (colors, fonts, logo URL) with a live visual preview card showing color swatches, sample text, and logo thumbnail. Also surfaces import analysis results for themes fetched from HubSpot.</li>
|
|
375
|
-
<li><strong>Library</strong> —
|
|
412
|
+
<li><strong>Library</strong> — Project assets browser showing images, fonts, and scripts in the active theme. Also provides access to the shared module library for adding reusable modules to any template.</li>
|
|
376
413
|
<li><strong>Marketplace</strong> — Marketplace validation and listing metadata editor.</li>
|
|
377
414
|
<li><strong>Settings</strong> — Quick access to AI, HubSpot, Figma, GitHub, and vibeSpot configuration.</li>
|
|
378
415
|
</ul>
|
|
379
416
|
|
|
380
|
-
<img class="doc-screenshot" src="screenshots/workspace-tabs.png" alt="
|
|
381
|
-
|
|
382
|
-
<img class="doc-screenshot" src="screenshots/editor-full-layout.png" alt="The full editor layout showing chat panel on the left, live preview on the right, and workspace tabs in the topbar">
|
|
417
|
+
<img class="doc-screenshot" src="screenshots/workspace-tabs.png" alt="The full editor layout showing chat panel on the left, live preview on the right, and workspace tabs (Pages, Brand, Library, Marketplace, Settings) in the topbar">
|
|
383
418
|
|
|
384
419
|
<p>The topbar provides access to theme settings, upload, version history, responsive viewport toggle, and the settings gear.</p>
|
|
385
420
|
|
|
421
|
+
<h3 id="project-overview">Project Overview Table</h3>
|
|
422
|
+
<p>When you have multiple projects, the Project Home shows a <strong>sortable table</strong> that gives you a bird's-eye view of every project in your workspace:</p>
|
|
423
|
+
<table>
|
|
424
|
+
<thead>
|
|
425
|
+
<tr><th>Column</th><th>What it shows</th></tr>
|
|
426
|
+
</thead>
|
|
427
|
+
<tbody>
|
|
428
|
+
<tr><td><strong>Name</strong></td><td>The project (theme) name. Click to open it in the editor.</td></tr>
|
|
429
|
+
<tr><td><strong>Pages</strong></td><td>Number of page templates (landing pages, website pages, blog posts).</td></tr>
|
|
430
|
+
<tr><td><strong>Emails</strong></td><td>Number of email templates in the project.</td></tr>
|
|
431
|
+
<tr><td><strong>Modules</strong></td><td>Total module count across all templates.</td></tr>
|
|
432
|
+
<tr><td><strong>Brand Assets</strong></td><td>Whether a brand kit is configured (checkmark or dash).</td></tr>
|
|
433
|
+
</tbody>
|
|
434
|
+
</table>
|
|
435
|
+
|
|
436
|
+
<h4 id="bulk-operations">Bulk Operations</h4>
|
|
437
|
+
<p>Select multiple projects using the checkboxes in the leftmost column, or click the header checkbox to select all. A floating toolbar appears with the selection count and two actions:</p>
|
|
438
|
+
<ul>
|
|
439
|
+
<li><strong>Duplicate</strong> — Copies all selected projects (only available for projects with saved sessions).</li>
|
|
440
|
+
<li><strong>Delete</strong> — Removes all selected projects. A confirmation dialog asks whether to also delete local theme files from disk.</li>
|
|
441
|
+
</ul>
|
|
442
|
+
|
|
443
|
+
<img class="doc-screenshot" src="screenshots/project-overview-table.png" alt="Project overview table showing multiple projects with pages, emails, modules, and brand asset columns, with two rows selected and the bulk toolbar visible">
|
|
444
|
+
|
|
386
445
|
<h3 id="chat-panel">Chat Panel</h3>
|
|
387
446
|
<p>The chat panel is your primary way to interact with the AI. Type a message describing what you want and press <kbd>Enter</kbd> to send. Use <kbd>Shift</kbd>+<kbd>Enter</kbd> to insert a new line without sending.</p>
|
|
388
447
|
<p>During generation, the chat panel shows a real-time pipeline progress UI with stage indicators and per-module status cards. Each module progresses through: <em>queued</em> → <em>generating...</em> → <em>validating...</em> → <em>✔</em> (complete) or <em>✗</em> (failed). If a module fails, it may show <em>retrying...</em> before a second attempt.</p>
|
|
@@ -396,7 +455,9 @@ vibespot</code></pre>
|
|
|
396
455
|
<p>Drag and drop files onto the chat input, or click the attachment button to browse.</p>
|
|
397
456
|
|
|
398
457
|
<h4 id="starter-templates">Starter Templates</h4>
|
|
399
|
-
<p>For quick starts, the
|
|
458
|
+
<p>For quick starts, click <strong>From Template</strong> on the Project Home screen (or use the templates icon in the chat input area). Nine starter templates bootstrap a new theme with pre-built modules, shared CSS/JS, and module order — instant preview with no AI wait:</p>
|
|
459
|
+
|
|
460
|
+
<p><strong>Page starters:</strong></p>
|
|
400
461
|
<ul>
|
|
401
462
|
<li><strong>SaaS Landing Page</strong> — Hero, features grid, pricing, testimonials, CTA, footer</li>
|
|
402
463
|
<li><strong>Portfolio</strong> — About section, project gallery, skills, contact form</li>
|
|
@@ -406,6 +467,13 @@ vibespot</code></pre>
|
|
|
406
467
|
<li><strong>Blog Content Hub</strong> — 8-module blog layout with post body, author bio, related posts, sidebar, and navigation</li>
|
|
407
468
|
</ul>
|
|
408
469
|
|
|
470
|
+
<p><strong>Email starters:</strong></p>
|
|
471
|
+
<ul>
|
|
472
|
+
<li><strong>Welcome Email</strong> — Logo header, greeting, onboarding steps, CTA button, footer</li>
|
|
473
|
+
<li><strong>Announcement Email</strong> — Header, announcement body, feature highlights, CTA</li>
|
|
474
|
+
<li><strong>Newsletter Email</strong> — Header, content sections, article cards, footer</li>
|
|
475
|
+
</ul>
|
|
476
|
+
|
|
409
477
|
<h4 id="smart-suggestions">Smart Chat Suggestions</h4>
|
|
410
478
|
<p>After each pipeline completion, contextual suggestion chips appear below the assistant message with follow-up actions tailored to your current page. The suggestions are filtered by which modules already exist — you won't see "Add a pricing section" if you already have one. Click a chip to send it as the next message, or ignore them and type your own prompt.</p>
|
|
411
479
|
|
|
@@ -516,14 +584,17 @@ vibespot</code></pre>
|
|
|
516
584
|
</div>
|
|
517
585
|
</div>
|
|
518
586
|
|
|
519
|
-
<p>The
|
|
587
|
+
<p>The Project Home screen greets you with a time-of-day message ("Good morning / afternoon / evening") and six <strong>asset-type cards</strong>. Each card scopes the prompt and pipeline to the right content type:</p>
|
|
520
588
|
<ul>
|
|
521
|
-
<li><strong>
|
|
522
|
-
<li><strong>
|
|
523
|
-
<li><strong>
|
|
524
|
-
<li><strong>
|
|
525
|
-
<li><strong>From
|
|
589
|
+
<li><strong>Landing Page</strong> — Full-width marketing pages with standard HubSpot CMS modules.</li>
|
|
590
|
+
<li><strong>Email</strong> — Table-based email templates with inline CSS and MSO/VML conditional structure.</li>
|
|
591
|
+
<li><strong>Website</strong> — Standard website pages (About, Contact, Services).</li>
|
|
592
|
+
<li><strong>Blog Post</strong> — Blog templates with HubSpot blog variables.</li>
|
|
593
|
+
<li><strong>From Template</strong> — Opens the starter template grid (SaaS, Portfolio, Restaurant, Event, Coming Soon, Blog, plus three email starters).</li>
|
|
594
|
+
<li><strong>Import</strong> — Shows a source picker: HubSpot (fetch existing theme), Figma (translate a design), or React (convert a project).</li>
|
|
526
595
|
</ul>
|
|
596
|
+
<p>Clicking an asset-type card reveals a scoped prompt input with an eyebrow label (e.g. "Landing Page") and a per-type placeholder. Enter a project name and your description, then vibeSpot creates the theme directory and opens the editor.</p>
|
|
597
|
+
<p>You can also reach your existing projects from the sidebar list (“Continue”) or the <a href="#project-overview">project overview table</a> when you have multiple projects.</p>
|
|
527
598
|
|
|
528
599
|
<h3 id="onboarding">Onboarding Walkthrough</h3>
|
|
529
600
|
<p>On first launch (no projects, no local themes), vibeSpot shows a <strong>3-step onboarding walkthrough</strong> on the Project Home screen:</p>
|
|
@@ -534,8 +605,6 @@ vibespot</code></pre>
|
|
|
534
605
|
</ol>
|
|
535
606
|
<p>The walkthrough includes back/next/skip controls and progress dots. Once completed, a <code>vibespot:introSeen</code> localStorage flag prevents it from reappearing. After the intro, the existing AI-engine setup walkthrough still triggers if no engine is configured. Force-show with <code>?intro</code> in the URL.</p>
|
|
536
607
|
|
|
537
|
-
<img class="doc-screenshot" src="screenshots/onboarding-walkthrough.png" alt="The 3-step onboarding walkthrough shown on first launch, with progress dots and Skip/Next controls">
|
|
538
|
-
|
|
539
608
|
<h3 id="first-page">Your First Page</h3>
|
|
540
609
|
<p>Follow these steps to build your first landing page from scratch:</p>
|
|
541
610
|
<ol class="doc-steps">
|
|
@@ -558,10 +627,10 @@ vibespot</code></pre>
|
|
|
558
627
|
<p>vibeSpot supports three content types, each with its own pipeline prompts, validation rules, and starter templates:</p>
|
|
559
628
|
<ul>
|
|
560
629
|
<li><strong>Landing Page</strong> — The default. Full-width marketing pages with standard HubSpot CMS modules.</li>
|
|
561
|
-
<li><strong>Email</strong> — HubSpot email templates with table-based layout, inline CSS design tokens, and MSO/VML conditional structure for Outlook compatibility. Select "Email" from the page type dropdown
|
|
630
|
+
<li><strong>Email</strong> — HubSpot email templates with table-based layout, inline CSS design tokens, and MSO/VML conditional structure for Outlook compatibility. Select the <strong>Email</strong> card on the Project Home screen, choose "Email" from the page type dropdown, or use <code>vibespot email</code> from the CLI. The pipeline routes through email-specific prompts at every stage (architect, module developer, validator). A dedicated <strong>email client preview</strong> (envelope icon in the topbar) renders your email as it appears in Gmail, Outlook Desktop, and Apple Mail.</li>
|
|
562
631
|
<li><strong>Blog</strong> — Blog templates with HubSpot blog variables (<code>content.post_body</code>, <code>content.author</code>, <code>blog_recent_posts</code>, etc.). Blog-specific prompts, validator auto-fix, and a pre-built Blog Content Hub starter template with 8 modules.</li>
|
|
563
632
|
</ul>
|
|
564
|
-
<p>The intent analyzer detects the content type from your prompt (e.g. "create a welcome email" triggers the email pipeline). You can also set it explicitly via the page type dropdown.</p>
|
|
633
|
+
<p>The intent analyzer detects the content type from your prompt (e.g. "create a welcome email" triggers the email pipeline). You can also set it explicitly via the asset-type cards on the Project Home screen or the page type dropdown.</p>
|
|
565
634
|
|
|
566
635
|
<img class="doc-screenshot" src="screenshots/content-type-dropdown.png" alt="Page type dropdown showing Landing Page, Email, Website, and Blog Post options">
|
|
567
636
|
|
|
@@ -606,12 +675,182 @@ vibespot</code></pre>
|
|
|
606
675
|
</ul>
|
|
607
676
|
</div>
|
|
608
677
|
|
|
678
|
+
<!-- ============================================================
|
|
679
|
+
Section 4b: Your First Generation
|
|
680
|
+
============================================================ -->
|
|
681
|
+
<div class="doc-section" id="first-generation">
|
|
682
|
+
<h2 id="first-generation-heading">Your First Generation <a href="#first-generation" class="doc-anchor">#</a></h2>
|
|
683
|
+
<p class="doc-subtitle">Step-by-step walkthroughs for generating your first landing page, your first email template, editing with the module overview, and publishing to HubSpot.</p>
|
|
684
|
+
|
|
685
|
+
<h3 id="first-gen-page">Page Workflow: Landing Page from Scratch</h3>
|
|
686
|
+
<p>This walkthrough creates a complete landing page and deploys it to HubSpot. Estimated time: 5–10 minutes.</p>
|
|
687
|
+
<ol class="doc-steps">
|
|
688
|
+
<li>
|
|
689
|
+
<strong>Launch vibeSpot.</strong> Run <code>npx vibespot</code> in your terminal. The web UI opens at <code>localhost:4200</code>.
|
|
690
|
+
</li>
|
|
691
|
+
<li>
|
|
692
|
+
<strong>Pick an asset type.</strong> On Project Home you see six asset-type cards. Click <strong>Landing Page</strong>. A prompt input appears with the eyebrow "Landing Page" and a placeholder hint.
|
|
693
|
+
<img class="doc-screenshot" src="screenshots/asset-type-cards.png" alt="Six asset-type cards on the Project Home screen: Landing Page, Email, Website, Blog Post, From Template, and Import">
|
|
694
|
+
</li>
|
|
695
|
+
<li>
|
|
696
|
+
<strong>Name your project.</strong> Type a kebab-case name (e.g. <code>acme-launch</code>) and press Enter. vibeSpot creates a theme directory at <code>~/vibespot-themes/acme-launch</code> and opens the editor.
|
|
697
|
+
</li>
|
|
698
|
+
<li>
|
|
699
|
+
<strong>Describe the page.</strong> In the chat panel, write a detailed prompt. Include the page purpose, sections, headlines, and design preferences. Example:
|
|
700
|
+
<pre><code>Build a SaaS landing page for Acme — a project management tool.
|
|
701
|
+
Use a dark navy (#0f172a) and white palette with orange (#f97316) accents.
|
|
702
|
+
Sections: hero with headline "Ship Projects Faster" and a CTA button,
|
|
703
|
+
3-column features grid with icons, pricing table (Free / Pro / Enterprise),
|
|
704
|
+
testimonial carousel, and a minimal footer with social links.</code></pre>
|
|
705
|
+
</li>
|
|
706
|
+
<li>
|
|
707
|
+
<strong>Watch the pipeline.</strong> The four-stage pipeline runs:
|
|
708
|
+
<ul>
|
|
709
|
+
<li><strong>Intent Analyzer</strong> — classifies your request as <code>create</code> and plans which modules to build.</li>
|
|
710
|
+
<li><strong>Page Architect</strong> — creates a CSS design system (<code>:root</code> variables, shared styles) and plans module specs.</li>
|
|
711
|
+
<li><strong>Module Developer</strong> — generates all modules in parallel. Each module card in the chat panel shows its status: <em>queued</em> → <em>generating</em> → <em>complete</em>.</li>
|
|
712
|
+
<li><strong>Quality Check</strong> — validates HubL syntax, field names, and meta.json fields; auto-fixes any issues.</li>
|
|
713
|
+
</ul>
|
|
714
|
+
The live preview populates incrementally as modules finish. Skeleton placeholders hold the position of modules still generating.
|
|
715
|
+
<img class="doc-screenshot" src="screenshots/pipeline-progress.png" alt="Pipeline progress cards in the chat panel showing Intent Analyzer complete, Page Architect complete, and Module Developer generating modules in parallel">
|
|
716
|
+
</li>
|
|
717
|
+
<li>
|
|
718
|
+
<strong>Review in the preview.</strong> Once the pipeline completes, the full page renders in the preview panel. Use the responsive toggles (desktop / tablet / mobile) to check the layout at different breakpoints.
|
|
719
|
+
</li>
|
|
720
|
+
<li>
|
|
721
|
+
<strong>Refine with follow-up prompts.</strong> Send targeted messages to iterate:
|
|
722
|
+
<ul>
|
|
723
|
+
<li><em>"Change the hero background to a gradient from #0f172a to #1e293b"</em></li>
|
|
724
|
+
<li><em>"Add a FAQ section with 5 questions after the pricing table"</em></li>
|
|
725
|
+
<li><em>"Remove the testimonial carousel"</em></li>
|
|
726
|
+
</ul>
|
|
727
|
+
The pipeline only regenerates the affected modules; everything else stays intact.
|
|
728
|
+
</li>
|
|
729
|
+
<li>
|
|
730
|
+
<strong>Deploy.</strong> Click the orange <strong>Deploy</strong> button in the topbar. Select your HubSpot account, monitor the upload progress, and click the link in the celebration screen to create a page in HubSpot. See <a href="#first-gen-publish">Publishing to HubSpot</a> below for the full flow.
|
|
731
|
+
</li>
|
|
732
|
+
</ol>
|
|
733
|
+
|
|
734
|
+
<h3 id="first-gen-email">Email Workflow: Marketing Email from Scratch</h3>
|
|
735
|
+
<p>vibeSpot generates HubSpot email templates with table-based layout, inline CSS, and Outlook-compatible MSO/VML conditionals. Estimated time: 5–10 minutes.</p>
|
|
736
|
+
<ol class="doc-steps">
|
|
737
|
+
<li>
|
|
738
|
+
<strong>Choose Email.</strong> On Project Home, click the <strong>Email</strong> asset-type card. The prompt input shows the eyebrow "Email" and a placeholder: <em>"Describe the email you want to create…"</em>
|
|
739
|
+
</li>
|
|
740
|
+
<li>
|
|
741
|
+
<strong>Name and describe.</strong> Enter a project name (e.g. <code>acme-welcome</code>), then describe the email:
|
|
742
|
+
<pre><code>Create a welcome email for Acme. Include:
|
|
743
|
+
- Logo header with brand colors
|
|
744
|
+
- Greeting with the recipient's first name
|
|
745
|
+
- 3-step onboarding guide with icons
|
|
746
|
+
- A large "Get Started" CTA button
|
|
747
|
+
- Footer with unsubscribe link and social icons</code></pre>
|
|
748
|
+
</li>
|
|
749
|
+
<li>
|
|
750
|
+
<strong>Pipeline generates email modules.</strong> The same four-stage pipeline runs, but with email-specific prompts at every stage:
|
|
751
|
+
<ul>
|
|
752
|
+
<li>The <strong>Email Architect</strong> plans table-based layouts with inline CSS tokens and MSO conditional structure.</li>
|
|
753
|
+
<li>The <strong>Module Developer</strong> generates email-safe HubL — no floats, no flexbox, table cells with inline styles.</li>
|
|
754
|
+
<li>The <strong>Validator</strong> sets <code>host_template_types: ["EMAIL"]</code> in meta.json and skips CSS-prefix fixes (not needed for email).</li>
|
|
755
|
+
</ul>
|
|
756
|
+
</li>
|
|
757
|
+
<li>
|
|
758
|
+
<strong>Preview across email clients.</strong> Click the <strong>envelope icon</strong> in the topbar to open the email client preview. This renders your email as it would appear in Gmail, Outlook Desktop, and Apple Mail, with heuristic notes for each client (e.g. "Outlook ignores <code>border-radius</code>").
|
|
759
|
+
<img class="doc-screenshot" src="screenshots/email-client-preview.png" alt="Email client preview overlay showing Gmail, Outlook Desktop, and Apple Mail tabs with the rendered email and rendering notes">
|
|
760
|
+
</li>
|
|
761
|
+
<li>
|
|
762
|
+
<strong>Iterate.</strong> Use the same chat-based workflow to modify sections: <em>"Make the CTA button larger"</em> or <em>"Add a product screenshot below the onboarding steps."</em>
|
|
763
|
+
</li>
|
|
764
|
+
<li>
|
|
765
|
+
<strong>Deploy to HubSpot.</strong> Click <strong>Deploy</strong>. Email templates upload to your HubSpot portal under the theme’s <code>templates/</code> directory. In HubSpot, go to <strong>Marketing → Email → Create email</strong> and select your template from the theme.
|
|
766
|
+
</li>
|
|
767
|
+
</ol>
|
|
768
|
+
|
|
769
|
+
<div class="doc-callout doc-callout--tip">
|
|
770
|
+
<div class="doc-callout__label">Email starter templates</div>
|
|
771
|
+
<p>For a faster start, pick <strong>From Template</strong> on the Project Home screen. Three email starters are available: Welcome, Announcement, and Newsletter. Each is a pre-built email bundle you can customize immediately.</p>
|
|
772
|
+
</div>
|
|
773
|
+
|
|
774
|
+
<h3 id="first-gen-editing">Editing with the Module Overview</h3>
|
|
775
|
+
<p>After generation, the <strong>Module Overview</strong> (click the grid icon at the top of the left panel) is your central hub for reviewing and editing every module on the page. Here is a step-by-step editing workflow using the module overview:</p>
|
|
776
|
+
<ol class="doc-steps">
|
|
777
|
+
<li>
|
|
778
|
+
<strong>Open the module overview.</strong> Click the <strong>Modules</strong> button (grid icon with a count badge) at the top of the left panel. The slideout opens, listing every module in page order.
|
|
779
|
+
<img class="doc-screenshot" src="screenshots/module-overview-slideout.png" alt="Module overview slideout showing a list of modules (Hero, Features Grid, Pricing, Footer) with drag handles, gear icons, and delete buttons">
|
|
780
|
+
</li>
|
|
781
|
+
<li>
|
|
782
|
+
<strong>Reorder modules.</strong> Grab a module by its drag handle (⠷) and move it up or down. The preview updates instantly to reflect the new page order. Recommended flow for landing pages: Navigation → Hero → Features → Social Proof → Pricing/CTA → Footer.
|
|
783
|
+
</li>
|
|
784
|
+
<li>
|
|
785
|
+
<strong>Edit fields.</strong> Click the <strong>gear icon</strong> (⚙) on any module to open its field editor. The slideout switches to a form generated from the module's <code>fields.json</code>:
|
|
786
|
+
<ul>
|
|
787
|
+
<li><strong>Text fields</strong> — edit headlines, body copy, button labels directly.</li>
|
|
788
|
+
<li><strong>Color pickers</strong> — change background colors, text colors, accents.</li>
|
|
789
|
+
<li><strong>Image fields</strong> — swap image URLs.</li>
|
|
790
|
+
<li><strong>Number fields</strong> — adjust spacing, font sizes.</li>
|
|
791
|
+
<li><strong>Boolean toggles</strong> — show/hide optional elements.</li>
|
|
792
|
+
<li><strong>Choice dropdowns</strong> — select from predefined options.</li>
|
|
793
|
+
<li><strong>Groups</strong> — expand nested field sets (e.g. "Style" groups for padding and colors).</li>
|
|
794
|
+
</ul>
|
|
795
|
+
All changes are <strong>debounced at 300ms</strong> and the preview refreshes automatically. No save button needed.
|
|
796
|
+
</li>
|
|
797
|
+
<li>
|
|
798
|
+
<strong>Delete a module.</strong> Click the <strong>×</strong> icon on a module and confirm. The module is removed from the current template. If the module is used in other templates, it stays in the library.
|
|
799
|
+
</li>
|
|
800
|
+
<li>
|
|
801
|
+
<strong>Add from library.</strong> Click the <strong>+</strong> button in the module overview header to browse the module library. Select any existing module to add it to the current template without regenerating it.
|
|
802
|
+
</li>
|
|
803
|
+
</ol>
|
|
804
|
+
<p>This workflow works identically for pages and emails. For emails, the module list shows email-specific modules (email-header, email-body, email-footer, etc.) and the preview renders with table-based layout.</p>
|
|
805
|
+
|
|
806
|
+
<h3 id="first-gen-publish">Publishing to HubSpot</h3>
|
|
807
|
+
<p>Once your page or email looks right in the preview, deploy it to your HubSpot portal. This walkthrough covers the full flow from vibeSpot to a live HubSpot page.</p>
|
|
808
|
+
<ol class="doc-steps">
|
|
809
|
+
<li>
|
|
810
|
+
<strong>Connect your HubSpot account (one-time).</strong> Open <strong>Settings → HubSpot</strong> and click <strong>Add Account</strong>. Paste a Personal Access Key (PAK) from your HubSpot portal (Settings → Integrations → Private Apps → create a key with <strong>CMS</strong> scope). vibeSpot validates the key and detects your portal ID and data center.
|
|
811
|
+
</li>
|
|
812
|
+
<li>
|
|
813
|
+
<strong>Click Deploy.</strong> The orange <strong>Deploy</strong> button is in the top-right of the topbar. vibeSpot writes all files to disk, runs auto-fix on any known HubSpot compatibility issues, then uploads the entire theme: folder structure, shared CSS/JS, all modules, and templates.
|
|
814
|
+
<img class="doc-screenshot" src="screenshots/deploy-progress.png" alt="Deploy progress panel showing file upload progress bar at 72% with auto-fix log entries and per-file upload status">
|
|
815
|
+
</li>
|
|
816
|
+
<li>
|
|
817
|
+
<strong>Monitor progress.</strong> A progress panel shows:
|
|
818
|
+
<ul>
|
|
819
|
+
<li>A progress bar with file count (e.g. "36/50 files")</li>
|
|
820
|
+
<li>Auto-fix log entries (e.g. "textarea → text in Hero/fields.json")</li>
|
|
821
|
+
<li>Per-file upload status with checkmarks</li>
|
|
822
|
+
</ul>
|
|
823
|
+
API mode (default) uploads modules in parallel. CLI mode uploads sequentially.
|
|
824
|
+
</li>
|
|
825
|
+
<li>
|
|
826
|
+
<strong>Celebration screen.</strong> On success, a screen with confetti shows a direct link to your HubSpot portal. Click it to jump straight into creating a page.
|
|
827
|
+
</li>
|
|
828
|
+
<li>
|
|
829
|
+
<strong>Create a page in HubSpot.</strong>
|
|
830
|
+
<ul>
|
|
831
|
+
<li><strong>For landing pages:</strong> Go to <strong>Content → Landing Pages → Create</strong>. Select your vibeSpot theme, pick the template, and you'll see all your modules pre-configured in HubSpot's page editor. Edit content using HubSpot's native editor, then publish.</li>
|
|
832
|
+
<li><strong>For emails:</strong> Go to <strong>Marketing → Email → Create email</strong>. Choose your vibeSpot email template. Modules appear in HubSpot's drag-and-drop email editor with all fields editable. Customize and send.</li>
|
|
833
|
+
</ul>
|
|
834
|
+
</li>
|
|
835
|
+
</ol>
|
|
836
|
+
|
|
837
|
+
<div class="doc-callout doc-callout--warning">
|
|
838
|
+
<div class="doc-callout__label">Upload errors</div>
|
|
839
|
+
<p>If the upload fails, vibeSpot's auto-fix system scans for known issues (deprecated field types, reserved names, CDN imports) and retries up to 3 times. If auto-fix cannot resolve the error, click <strong>"Fix with AI"</strong> to let the AI diagnose and repair the issue. See <a href="#auto-fix">Auto-Fix</a> for the full list of handled issues.</p>
|
|
840
|
+
</div>
|
|
841
|
+
|
|
842
|
+
<div class="doc-callout doc-callout--info">
|
|
843
|
+
<div class="doc-callout__label">Email deploy differences</div>
|
|
844
|
+
<p>Email templates upload the same way as page themes, but the template file includes HubSpot email-specific metadata: <code>templateType: email</code>, MSO/VML namespaces, and <code>dnd_area</code> references so modules appear in HubSpot's email drag-and-drop editor.</p>
|
|
845
|
+
</div>
|
|
846
|
+
</div>
|
|
847
|
+
|
|
609
848
|
<!-- ============================================================
|
|
610
849
|
Section 5: AI Generation
|
|
611
850
|
============================================================ -->
|
|
612
851
|
<div class="doc-section" id="ai-generation">
|
|
613
852
|
<h2 id="ai-generation-heading">AI Generation <a href="#ai-generation" class="doc-anchor">#</a></h2>
|
|
614
|
-
<p>vibeSpot offers two generation modes: a simpler single-call mode and a
|
|
853
|
+
<p>vibeSpot offers two generation modes: a simpler single-call mode and a multi-stage agentic pipeline. The agentic pipeline is the default and recommended mode.</p>
|
|
615
854
|
|
|
616
855
|
<h3 id="single-call">Single-Call Mode</h3>
|
|
617
856
|
<p>In single-call mode, the AI generates all modules in a single API request. The response contains a <code>vibespot-modules</code> JSON code block with all module definitions. This mode is simpler but less reliable for complex pages because the AI must produce all modules in one shot.</p>
|
|
@@ -1010,11 +1249,13 @@ vibespot</code></pre>
|
|
|
1010
1249
|
</ol>
|
|
1011
1250
|
<p>This is especially useful for HubL syntax errors, invalid field configurations, or template rendering issues that rule-based auto-fix cannot handle.</p>
|
|
1012
1251
|
|
|
1013
|
-
<h3 id="creating-page-hubspot">Creating a Page in HubSpot</h3>
|
|
1014
|
-
<p>After a successful upload, follow these steps in HubSpot
|
|
1252
|
+
<h3 id="creating-page-hubspot">Creating a Page or Email in HubSpot</h3>
|
|
1253
|
+
<p>After a successful upload, follow these steps in HubSpot:</p>
|
|
1254
|
+
|
|
1255
|
+
<h4>Landing Pages & Website Pages</h4>
|
|
1015
1256
|
<ol class="doc-steps">
|
|
1016
|
-
<li><strong>Go to Content → Landing Pages</strong> in your HubSpot portal.</li>
|
|
1017
|
-
<li><strong>Click "Create"</strong> and select
|
|
1257
|
+
<li><strong>Go to Content → Landing Pages</strong> (or Website Pages) in your HubSpot portal.</li>
|
|
1258
|
+
<li><strong>Click "Create"</strong> and select the page type.</li>
|
|
1018
1259
|
<li><strong>Choose your theme</strong> from the template selector. Your vibeSpot theme appears under your portal's themes.</li>
|
|
1019
1260
|
<li><strong>Select a template</strong> from the templates you created in vibeSpot.</li>
|
|
1020
1261
|
<li><strong>Drag modules</strong> from the sidebar into the page layout, or use the pre-configured module order from vibeSpot.</li>
|
|
@@ -1022,6 +1263,15 @@ vibespot</code></pre>
|
|
|
1022
1263
|
<li><strong>Publish</strong> when ready. Your page is live.</li>
|
|
1023
1264
|
</ol>
|
|
1024
1265
|
|
|
1266
|
+
<h4>Email Templates</h4>
|
|
1267
|
+
<ol class="doc-steps">
|
|
1268
|
+
<li><strong>Go to Marketing → Email</strong> in your HubSpot portal.</li>
|
|
1269
|
+
<li><strong>Click "Create email"</strong> and choose Regular or Automated.</li>
|
|
1270
|
+
<li><strong>Select your vibeSpot email template</strong> from the template picker. Your email modules are pre-loaded in the HubSpot drag-and-drop email editor.</li>
|
|
1271
|
+
<li><strong>Edit content</strong> — text, images, CTAs, and all fields you defined in vibeSpot are editable in HubSpot's email editor.</li>
|
|
1272
|
+
<li><strong>Configure recipients, subject line, and send settings</strong>, then send or schedule.</li>
|
|
1273
|
+
</ol>
|
|
1274
|
+
|
|
1025
1275
|
<h3 id="multi-account">Multi-Account Support</h3>
|
|
1026
1276
|
<p>vibeSpot supports multiple HubSpot portal connections. This is useful for agencies managing client portals or teams with staging and production environments.</p>
|
|
1027
1277
|
<ul>
|
|
@@ -1045,6 +1295,76 @@ vibespot</code></pre>
|
|
|
1045
1295
|
</div>
|
|
1046
1296
|
</div>
|
|
1047
1297
|
|
|
1298
|
+
<!-- ============================================================
|
|
1299
|
+
Section: Docker Deployment
|
|
1300
|
+
============================================================ -->
|
|
1301
|
+
<div class="doc-section" id="docker-deployment">
|
|
1302
|
+
<h2 id="docker-deployment-heading">Docker Deployment <a href="#docker-deployment" class="doc-anchor">#</a></h2>
|
|
1303
|
+
<p>Run vibeSpot as a containerised service for your team. The Docker image bundles the server, UI, and all dependencies — just add an AI API key.</p>
|
|
1304
|
+
|
|
1305
|
+
<h3 id="docker-quick-start">Quick Start (LAN / VPN) <a href="#docker-quick-start" class="doc-anchor">#</a></h3>
|
|
1306
|
+
<pre><code>cp .env.example .env
|
|
1307
|
+
# Edit .env — set at least one AI API key (e.g. ANTHROPIC_API_KEY)
|
|
1308
|
+
docker compose up -d</code></pre>
|
|
1309
|
+
<p>Open <code>http://<host-ip>:4200</code> in a browser. All AI keys, engine selection, and HubSpot credentials are configured via the <code>.env</code> file — no interactive setup needed.</p>
|
|
1310
|
+
|
|
1311
|
+
<h3 id="docker-https">HTTPS with Caddy <a href="#docker-https" class="doc-anchor">#</a></h3>
|
|
1312
|
+
<p>For public or semi-public deployments, activate the Caddy reverse proxy profile. Caddy auto-provisions a TLS certificate from Let’s Encrypt.</p>
|
|
1313
|
+
<pre><code>cp .env.example .env
|
|
1314
|
+
# Set VIBESPOT_DOMAIN=vibespot.example.com and your AI key
|
|
1315
|
+
docker compose --profile https up -d</code></pre>
|
|
1316
|
+
<p>Caddy binds ports 80 and 443. Point your DNS A record at the host, and HTTPS works automatically.</p>
|
|
1317
|
+
|
|
1318
|
+
<h3 id="docker-env-vars">Environment Variables <a href="#docker-env-vars" class="doc-anchor">#</a></h3>
|
|
1319
|
+
<p>The Docker image reads all configuration from environment variables. The <code>.env.example</code> file documents every option.</p>
|
|
1320
|
+
|
|
1321
|
+
<table>
|
|
1322
|
+
<thead>
|
|
1323
|
+
<tr><th>Variable</th><th>Default</th><th>Description</th></tr>
|
|
1324
|
+
</thead>
|
|
1325
|
+
<tbody>
|
|
1326
|
+
<tr><td><code>VIBESPOT_PORT</code></td><td><code>4200</code></td><td>Port the server listens on inside the container</td></tr>
|
|
1327
|
+
<tr><td><code>VIBESPOT_DOMAIN</code></td><td>—</td><td>Public domain for the Caddy HTTPS profile</td></tr>
|
|
1328
|
+
<tr><td><code>VIBESPOT_NO_OPEN</code></td><td><code>1</code></td><td>Suppress auto-open browser (set automatically in Docker)</td></tr>
|
|
1329
|
+
<tr><td><code>VIBESPOT_AI_ENGINE</code></td><td>—</td><td>Default engine: <code>anthropic-api</code>, <code>openai-api</code>, <code>gemini-api</code>, <code>langdock-api</code></td></tr>
|
|
1330
|
+
<tr><td><code>VIBESPOT_AGENTIC_MODE</code></td><td>—</td><td>Set <code>true</code> to enable the multi-stage agentic pipeline</td></tr>
|
|
1331
|
+
<tr><td><code>ANTHROPIC_API_KEY</code></td><td>—</td><td>Anthropic Claude API key</td></tr>
|
|
1332
|
+
<tr><td><code>OPENAI_API_KEY</code></td><td>—</td><td>OpenAI API key</td></tr>
|
|
1333
|
+
<tr><td><code>GEMINI_API_KEY</code></td><td>—</td><td>Google Gemini API key</td></tr>
|
|
1334
|
+
<tr><td><code>LANGDOCK_API_KEY</code></td><td>—</td><td>Langdock EU gateway key</td></tr>
|
|
1335
|
+
<tr><td><code>HUBSPOT_PERSONAL_ACCESS_KEY</code></td><td>—</td><td>HubSpot PAK for theme uploads</td></tr>
|
|
1336
|
+
<tr><td><code>FIGMA_TOKEN</code></td><td>—</td><td>Figma personal access token for design import</td></tr>
|
|
1337
|
+
</tbody>
|
|
1338
|
+
</table>
|
|
1339
|
+
|
|
1340
|
+
<h3 id="docker-persistence">Persistence <a href="#docker-persistence" class="doc-anchor">#</a></h3>
|
|
1341
|
+
<p>Two named Docker volumes keep data across container restarts:</p>
|
|
1342
|
+
<table>
|
|
1343
|
+
<thead>
|
|
1344
|
+
<tr><th>Volume</th><th>Container path</th><th>Contents</th></tr>
|
|
1345
|
+
</thead>
|
|
1346
|
+
<tbody>
|
|
1347
|
+
<tr><td><code>vibespot-config</code></td><td><code>/home/vibespot/.vibespot</code></td><td>config.json, session data</td></tr>
|
|
1348
|
+
<tr><td><code>vibespot-themes</code></td><td><code>/home/vibespot/vibespot-themes</code></td><td>Generated HubSpot themes</td></tr>
|
|
1349
|
+
</tbody>
|
|
1350
|
+
</table>
|
|
1351
|
+
<p>To back up:</p>
|
|
1352
|
+
<pre><code>docker compose cp vibespot:/home/vibespot/.vibespot ./backup-config
|
|
1353
|
+
docker compose cp vibespot:/home/vibespot/vibespot-themes ./backup-themes</code></pre>
|
|
1354
|
+
|
|
1355
|
+
<h3 id="docker-reverse-proxy">Reverse Proxy & Kubernetes <a href="#docker-reverse-proxy" class="doc-anchor">#</a></h3>
|
|
1356
|
+
<p>If you already have a reverse proxy (nginx, Traefik, k8s Ingress), skip the Caddy profile and point your proxy at port 4200. Key requirements:</p>
|
|
1357
|
+
<ul>
|
|
1358
|
+
<li><strong>WebSocket upgrade</strong> — the chat, pipeline progress, and upload UI all use a persistent WebSocket connection.</li>
|
|
1359
|
+
<li><strong>Timeout > 120s</strong> — agentic AI generation can run for several minutes. Set read/send timeouts to at least 300s.</li>
|
|
1360
|
+
<li><strong>No buffering</strong> — for streaming AI responses, disable proxy buffering.</li>
|
|
1361
|
+
</ul>
|
|
1362
|
+
<div class="doc-callout doc-callout--tip">
|
|
1363
|
+
<div class="doc-callout__label">📖 Full guide</div>
|
|
1364
|
+
<p>For nginx configs, Kubernetes manifests, security considerations, and troubleshooting, see the complete <a href="https://github.com/borismichel/vibespot/blob/main/docs/docker-deployment.md" target="_blank">Docker Deployment Guide</a>.</p>
|
|
1365
|
+
</div>
|
|
1366
|
+
</div>
|
|
1367
|
+
|
|
1048
1368
|
<!-- ============================================================
|
|
1049
1369
|
Section: HubSpot Marketplace publication path
|
|
1050
1370
|
============================================================ -->
|
|
Binary file
|
|
Binary file
|