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:
200
justfile
200
justfile
@@ -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"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user