Docker Documentation Deployment Plan - Simplified with HTML Generation
Generated: 2025-01-12 UTC
Updated: 2025-01-12 UTC
Purpose: Simplified plan for deploying documentation with HTML generation in Docker containers
Status: Ready for Implementation (1-hour deployment)
Executive Summary
This simplified plan leverages existing infrastructure to deploy documentation with HTML generation:
- 5 new documentation files to create
- 5 specific directories to include (not entire docs folder)
- HTML generation via
doc-builderfor UI display - Secret sauce guides hidden in
.private/guides/ - Multi-stage Dockerfile build with HTML generation
- Uses existing client management system
- 1-hour implementation instead of 3 days
The system provides:
- HTML files for UI display (generated by doc-builder)
- Markdown files for Claude CLI access
- Hidden content in
.private/(markdown only, no HTML)
Simplified Documentation Architecture
Key Principle: Use What Exists
NO REORGANIZATION NEEDED - We keep the existing directory structure and only copy specific directories during Docker build.
Current Structure (Keep As-Is)
sasha/
βββ docs/ # All documentation stays here
β βββ getting-started/ # NEW: Create 3 guides
β βββ guides/ # EXISTING: 3 guides
β βββ prompts/ # EXISTING: 2 + add 1 new
β βββ specialists/ # EXISTING: 2 + add 1 new
β βββ .private/ # EXISTING: Hidden content
β β βββ guides/ # NEW: Copy from docs/private/guides/
β βββ technical/ # KEEP: Not deployed
β βββ claudecodeui/ # KEEP: Not deployed
β βββ sasha/ # KEEP: Not deployed
β βββ [other dirs] # KEEP: Not deployed
βββ CLAUDE.md # Workspace config
βββ claudecodeui/
βββ Dockerfile.sliplane # UPDATE: Add COPY commands
What Gets Deployed (Markdown + HTML)
Docker Container:
/app/workspaces/workspace/
βββ docs/ # Markdown files (for Claude CLI)
β βββ getting-started/ # Public: Onboarding
β βββ guides/ # Public: How-to guides
β βββ prompts/ # Public: Prompt templates
β βββ specialists/ # Public: AI specialists
β βββ .private/ # Hidden: Secret sauce
β βββ guides/ # Proprietary guides
βββ html-static/ # Generated HTML (for UI display)
β βββ getting-started/ # HTML versions
β βββ guides/ # HTML versions
β βββ prompts/ # HTML versions
β βββ specialists/ # HTML versions
β βββ [NO .private in HTML] # Hidden dirs not converted to HTML
βββ CLAUDE.md # Workspace configuration
No Migration Needed - Docker Handles Everything
Since we're keeping the existing structure, there's no migration. We just:
Create 5 New Files
- 3 getting-started guides
- 1 organization analyzer prompt
- 1 technical analyst specialist
Update Dockerfile with Multi-Stage Build
- Stage 1: Copy markdown directories
- Stage 2: Run doc-builder to generate HTML
- Stage 3: Copy both markdown and HTML to final image
- Includes automatic copying of private/guides β .private/guides
Docker Container Structure
/app/
βββ workspaces/
β βββ workspace/
β βββ CLAUDE.md # Workspace configuration
β βββ docs/
β βββ getting-started/ # Public: Onboarding
β βββ guides/ # Public: How-to guides
β βββ specialists/ # Public: AI templates
β βββ prompts/ # Public: Prompts
β βββ .private/ # Hidden: Secret sauce
β βββ guides/ # Proprietary methodologies
βββ config/
βββ .claude/
βββ CLAUDE.md # User-level config
Hidden Directories Already Tested
The .private directory approach has been validated:
- UI: Hidden directories (starting with
.) are not shown in the file browser - Claude CLI: Can access
.privatedirectories without issues - Already exists:
docs/.private/is already created and working
Simplified Content Plan
1. Getting Started Guides (3 NEW documents)
Location: docs/getting-started/
To Create:
welcome.md- Welcome to Sasha Studioquick-start.md- 5-minute setup guidefirst-project.md- Creating your first knowledge base
2. Specialist Templates (1 NEW, 2 existing)
Location: docs/specialists/
Existing:
marketing-sasha.md- Marketing specialisttest-specialist.md- Test specialist
To Create:
technical-analyst.md- Technical analysis specialist
3. Prompts (1 NEW, 2 existing)
Location: docs/prompts/
Existing:
claude-cli-docker-integration-guide.mdpowerpoint-creator-markdown-enhancement.md
To Create:
organization-analyzer.md- Template for analyzing organizations
4. Guides (3 existing)
Location: docs/guides/
Existing (no changes needed):
automatic-permissions-configuration.mdhidden-directories-guide.mdsliplane-container-management-guide.md
5. Hidden Proprietary Content
Location: docs/.private/guides/
Source: Copied during Docker build from docs/private/guides/ (symlink)
Content: All secret sauce methodologies and proprietary guides
Note: Docker build handles the copying automatically via COPY command
Simple Implementation Plan (1 Hour Total)
Step 1: Create Documentation (20 minutes)
# Create getting-started directory and files
mkdir -p docs/getting-started
Create these 5 files:
docs/getting-started/welcome.mddocs/getting-started/quick-start.mddocs/getting-started/first-project.mddocs/prompts/organization-analyzer.mddocs/specialists/technical-analyst.md
Step 2: Update Dockerfile (15 minutes)
Add multi-stage build to claudecodeui/Dockerfile.sliplane after line 87:
# Stage for documentation and HTML generation
FROM node:20-alpine AS docs-builder
WORKDIR /docs-build
# Copy ONLY these specific markdown directories
COPY docs/getting-started ./docs/getting-started
COPY docs/guides ./docs/guides
COPY docs/specialists ./docs/specialists
COPY docs/prompts ./docs/prompts
# Copy existing .private content
COPY docs/.private ./docs/.private
# Copy secret sauce guides from symlinked external directory
# Note: docs/private is a symlink to ../../nudge-campaign/docs/private
COPY docs/private/guides ./docs/.private/guides
# Generate HTML from markdown using doc-builder
RUN npx @knowcode/doc-builder@1.9.26 build
# In the main runner stage (around line 100), add:
# Copy markdown documentation for Claude CLI
COPY --from=docs-builder /docs-build/docs /app/workspaces/workspace/docs
# Copy generated HTML for UI display
COPY --from=docs-builder /docs-build/html-static /app/workspaces/workspace/html-static
# Copy CLAUDE.md configuration
COPY CLAUDE.md /app/workspaces/workspace/CLAUDE.md
# Ensure .private is hidden but accessible
RUN chmod 755 /app/workspaces/workspace/docs/.private || true
Step 3: Build and Deploy (30 minutes)
# Build Docker image
cd claudecodeui
docker build -f Dockerfile.sliplane -t linzoid/sasha-studio:1.0.3 .
# Push to Docker Hub
docker push linzoid/sasha-studio:1.0.3
# Deploy using existing client management
cd ../client-management
./deploy-client.sh sasha-main --tag 1.0.3
Success Criteria
- 5 new documentation files created
- Dockerfile updated with multi-stage build
- doc-builder generates HTML during Docker build
- Both markdown and HTML deployed to container
- UI displays HTML files from
html-static/ - Claude CLI accesses markdown files from
docs/ - Secret sauce in
.private/(markdown only, no HTML) - Docker image builds successfully
HTML Generation with doc-builder
How It Works
- doc-builder reads markdown files from
docs/ - Generates static HTML files in
html-static/ - Respects hidden directories (
.privatenot converted) - UI displays the HTML files to users
- Claude CLI reads the markdown files directly
Why Two Formats?
- HTML: Pretty formatted display in the UI with styling
- Markdown: Raw content for Claude CLI to process
- Security:
.privatecontent only exists in markdown
Minimal Risks
- Risk:
.privatemight be visible β Already tested and working - Risk: doc-builder fails β Pin version to @1.9.26 for stability
- Risk: Copy command fails β Use
|| trueto continue on error - Risk: Too large β Only ~15 files total, very small
Security Verification
After deployment, test:
# UI should NOT show .private
curl http://localhost:3005/api/files/list | grep -c ".private"
# Should return 0
# Claude CLI should access .private
docker exec -it sasha-container claude "ls /app/workspaces/workspace/docs/.private/guides/"
# Should list secret sauce guides
Example Content Templates
Getting Started Guide Template
# Welcome to Sasha Studio
Welcome to your AI-powered knowledge management system.
## What is Sasha Studio?
A conversational AI interface to your organization's knowledge.
## Getting Started
1. Configure your API key in Settings
2. Upload your first document
3. Ask Sasha a question about your content
## Next Steps
- Explore specialist templates
- Read the guides
- Set up your team
Organization Analyzer Prompt Template
# Organization Analysis Prompt
Use this prompt to analyze an organization and create structured documentation:
"Analyze [COMPANY] and create markdown documentation covering:
1. Company overview and history
2. Products and services
3. Team structure and key personnel
4. Market positioning
5. Technical infrastructure
6. Business processes
7. Strategic initiatives
Format as structured markdown with clear sections."
Summary
What We're Doing
- Creating 5 new files (3 getting-started, 1 prompt, 1 specialist)
- Multi-stage Docker build with doc-builder HTML generation
- Deploying both markdown (for CLI) and HTML (for UI)
- Secret sauce automatically copied and hidden
- Using existing deployment scripts
What We're NOT Doing
- NOT reorganizing directories
- NOT creating 50+ documents
- NOT building complex pipelines
- NOT implementing complex HTML generation (just using doc-builder)
Timeline
- 20 minutes: Create 5 new documentation files
- 15 minutes: Update Dockerfile with multi-stage build and HTML generation
- 30 minutes: Build and deploy
- Total: ~1 hour
Result
Documentation deployed in Docker containers with:
- HTML files displayed in UI (generated by doc-builder)
- Markdown files accessible via Claude CLI
- Secret sauce hidden (markdown only, no HTML)
- Minimal changes to existing system
- Easy to extend later
Status: Ready for immediate implementation. This simplified approach reduces complexity by 90% while achieving all core objectives.