feat: implement zero-configuration auto-enhancement demo workflow

- Add intelligent auto-enhancement that detects viable content elements
- Replace manual enhancement with automated container-first detection
- Support inline formatting (strong, em, span, links) within editable content
- Streamline demo workflow: just demo shows options, auto-enhances on demand
- Clean up legacy commands and simplify directory structure
- Auto-enhancement goes directly from source to demo-ready (no intermediate dirs)
- Add Dan Eden portfolio and simple test sites for real-world validation
- Auto-enhanced 40 elements in Dan Eden portfolio, 5 in simple site
- Achieve true zero-configuration CMS experience
This commit is contained in:
2025-09-11 19:33:21 +02:00
parent 72bd31b626
commit cf3d304fdc
90 changed files with 1399 additions and 23 deletions

200
justfile
View File

@@ -61,10 +61,7 @@ dev: build-lib build
wait $DEMO_PID $SERVER_PID
# Demo site only (for specific use cases)
demo-only:
@echo "🌐 Starting demo site only (no API server)"
@echo "⚠️ Content edits will not persist without API server"
npx --prefer-offline live-server demo-site --port=3000 --host=localhost --open=/index.html
# Start development server for about page
dev-about: build-lib build
@@ -80,9 +77,109 @@ dev-about: build-lib build
check:
npm run check
# Show demo instructions
demo:
npm run demo
# Start demo for a specific test site
demo site="":
#!/usr/bin/env bash
if [ "{{site}}" = "" ]; then
echo "📋 Available Insertr Demo Sites:"
echo "=================================="
echo ""
echo "🏠 Built-in Demo:"
echo " default - Default insertr demo site"
echo ""
echo "🌐 Test Site Demos:"
echo " dan-eden - Dan Eden's portfolio"
echo " simple - Simple test site"
echo ""
echo "📝 Usage:"
echo " just demo default - Start default demo"
echo " just demo dan-eden - Start Dan Eden portfolio demo"
echo " just demo simple - Start simple test site demo"
echo ""
echo "💡 Note: Sites are auto-enhanced on first run"
elif [ "{{site}}" = "default" ] || [ "{{site}}" = "demo" ]; then
echo "🚀 Starting default demo site..."
just dev
elif [ "{{site}}" = "dan-eden" ]; then
if [ ! -d "./test-sites/simple/dan-eden-portfolio-demo" ]; then
echo "🔧 Dan Eden demo not ready - auto-enhancing now..."
just build
./insertr auto-enhance test-sites/simple/dan-eden-portfolio --output test-sites/simple/dan-eden-portfolio-temp
./insertr enhance test-sites/simple/dan-eden-portfolio-temp --output test-sites/simple/dan-eden-portfolio-demo --site-id dan-eden
rm -rf test-sites/simple/dan-eden-portfolio-temp
fi
echo "🚀 Starting Dan Eden portfolio demo..."
just demo-site "dan-eden" "./test-sites/simple/dan-eden-portfolio-demo" "3001"
elif [ "{{site}}" = "simple" ]; then
if [ ! -d "./test-sites/simple/test-simple-demo" ]; then
echo "🔧 Simple demo not ready - auto-enhancing now..."
just build
./insertr auto-enhance test-sites/simple/test-simple --output test-sites/simple/test-simple-temp
./insertr enhance test-sites/simple/test-simple-temp --output test-sites/simple/test-simple-demo --site-id simple
rm -rf test-sites/simple/test-simple-temp
fi
echo "🚀 Starting simple test site demo..."
just demo-site "simple" "./test-sites/simple/test-simple-demo" "3002"
else
echo "❌ Unknown demo site: {{site}}"
echo ""
echo "📋 Available demo sites:"
echo " default - Default demo site"
echo " dan-eden - Dan Eden portfolio"
echo " simple - Simple test site"
echo ""
echo "🔧 Other commands:"
echo " just demo - Show all demo sites"
exit 1
fi
# Generic demo site launcher (internal command)
demo-site site_id path port="3000": build
#!/usr/bin/env bash
echo "🚀 Starting {{site_id}} demo..."
echo "📁 Path: {{path}}"
echo "🌐 Port: {{port}}"
echo "================================================"
echo ""
# Function to cleanup background processes
cleanup() {
echo ""
echo "🛑 Shutting down servers..."
kill $SERVER_PID $DEMO_PID 2>/dev/null || true
wait $SERVER_PID $DEMO_PID 2>/dev/null || true
echo "✅ Shutdown complete"
exit 0
}
trap cleanup SIGINT SIGTERM
# Start API server
echo "🔌 Starting API server (localhost:8080)..."
INSERTR_DATABASE_PATH=./dev.db ./insertr serve --dev-mode 2>&1 | sed 's/^/🔌 [{{site_id}}] /' &
SERVER_PID=$!
# Wait for server startup
echo "⏳ Waiting for API server startup..."
sleep 3
# Check server health
if curl -s http://localhost:8080/health > /dev/null 2>&1; then
echo "✅ API server ready!"
else
echo "⚠️ API server may not be ready yet"
fi
echo ""
echo "🌐 Starting {{site_id}} (localhost:{{port}})..."
echo "📝 Demo ready - test insertr functionality!"
echo ""
# Start demo site
npx --prefer-offline live-server "{{path}}" --port={{port}} --host=localhost --open=/index.html 2>&1 | sed 's/^/🌐 [{{site_id}}] /' &
DEMO_PID=$!
# Wait for both processes
wait $DEMO_PID $SERVER_PID
# Build the entire project (library + unified binary)
build:
@@ -108,9 +205,7 @@ build-insertr:
help:
./insertr --help
# Parse demo site with CLI
parse:
./insertr enhance demo-site/ --output ./dist --mock
# Enhance demo site (build-time content injection)
enhance input="demo-site" output="dist":
@@ -126,9 +221,7 @@ serve port="8080":
serve-prod port="8080" db="./insertr.db":
INSERTR_DATABASE_PATH={{db}} ./insertr serve --port {{port}}
# Start API server with auto-restart on Go file changes
serve-dev port="8080":
find . -name "*.go" | entr -r bash -c 'INSERTR_DATABASE_PATH=./dev.db ./insertr serve --port {{port}} --dev-mode'
# Check API server health
health port="8080":
@@ -147,10 +240,7 @@ clean:
rm -f insertr.db
@echo "🧹 Cleaned all build artifacts and backups"
# Restore demo site to clean original state
restore-clean:
@echo "🧹 Restoring demo site to clean state..."
./insertr restore demo --clean
# Lint code (placeholder for now)
lint:
@@ -180,14 +270,80 @@ status:
@ls -la demo-site/index.html demo-site/about.html 2>/dev/null || echo " Missing demo files"
@echo ""
@echo "🚀 Development Commands:"
@echo " just dev - Full-stack development (recommended)"
@echo " just demo-only - Demo site only (no persistence)"
@echo " just serve - API server only (localhost:8080)"
@echo " just enhance - Build-time content injection"
@echo " just dev - Full-stack development (recommended)"
@echo " just demo [site] - Start specific demo site (or show available demos)"
@echo " just serve - API server only (localhost:8080)"
@echo " just enhance - Build-time content injection"
@echo ""
@echo "🔍 Check server: just health"
@echo "🧹 Restore clean: just restore-clean"
# Generate sqlc code (for database schema changes)
sqlc:
sqlc generate
# Clean generated demo directories
clean-demos:
#!/usr/bin/env bash
echo "🧹 Cleaning generated demo directories..."
echo "========================================="
# Demo directories
if [ -d "./test-sites/simple/dan-eden-portfolio-demo" ]; then
rm -rf "./test-sites/simple/dan-eden-portfolio-demo"
echo "🗑️ Removed: dan-eden-portfolio-demo"
fi
if [ -d "./test-sites/simple/test-simple-demo" ]; then
rm -rf "./test-sites/simple/test-simple-demo"
echo "🗑️ Removed: test-simple-demo"
fi
# Clean up any temporary directories
if [ -d "./test-sites/simple/dan-eden-portfolio-temp" ]; then
rm -rf "./test-sites/simple/dan-eden-portfolio-temp"
echo "🗑️ Removed: dan-eden-portfolio-temp"
fi
if [ -d "./test-sites/simple/test-simple-temp" ]; then
rm -rf "./test-sites/simple/test-simple-temp"
echo "🗑️ Removed: test-simple-temp"
fi
# Legacy directories (cleanup from old workflow)
for legacy_dir in dan-eden-portfolio-auto-enhanced dan-eden-portfolio-full dan-eden-portfolio-auto dan-eden-portfolio-auto-v2 dan-eden-portfolio-auto-enhanced test-simple-auto-enhanced test-simple-full dan-eden-portfolio-enhanced test-simple-enhanced; do
if [ -d "./test-sites/simple/${legacy_dir}" ]; then
rm -rf "./test-sites/simple/${legacy_dir}"
echo "🗑️ Removed: ${legacy_dir} (legacy)"
fi
done
if [ -d "./test-sites/simple/dan-eden-portfolio-full" ]; then
rm -rf "./test-sites/simple/dan-eden-portfolio-full"
echo "🗑️ Removed: dan-eden-portfolio-full"
fi
if [ -d "./test-sites/simple/test-simple-auto-enhanced" ]; then
rm -rf "./test-sites/simple/test-simple-auto-enhanced"
echo "🗑️ Removed: test-simple-auto-enhanced"
fi
if [ -d "./test-sites/simple/test-simple-full" ]; then
rm -rf "./test-sites/simple/test-simple-full"
echo "🗑️ Removed: test-simple-full"
fi
echo ""
echo "✅ Demo cleanup complete!"
echo "🔧 Sites will auto-enhance when you run demo commands"