Last updated: Aug 12, 2025, 01:09 PM UTC

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-builder for 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:

  1. Create 5 New Files

    • 3 getting-started guides
    • 1 organization analyzer prompt
    • 1 technical analyst specialist
  2. 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 .private directories 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:

  1. welcome.md - Welcome to Sasha Studio
  2. quick-start.md - 5-minute setup guide
  3. first-project.md - Creating your first knowledge base

2. Specialist Templates (1 NEW, 2 existing)

Location: docs/specialists/
Existing:

  • marketing-sasha.md - Marketing specialist
  • test-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.md
  • powerpoint-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.md
  • hidden-directories-guide.md
  • sliplane-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:

  1. docs/getting-started/welcome.md
  2. docs/getting-started/quick-start.md
  3. docs/getting-started/first-project.md
  4. docs/prompts/organization-analyzer.md
  5. docs/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

  1. doc-builder reads markdown files from docs/
  2. Generates static HTML files in html-static/
  3. Respects hidden directories (.private not converted)
  4. UI displays the HTML files to users
  5. 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: .private content only exists in markdown

Minimal Risks

  • Risk: .private might be visible β†’ Already tested and working
  • Risk: doc-builder fails β†’ Pin version to @1.9.26 for stability
  • Risk: Copy command fails β†’ Use || true to 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.