# Insertr Development Commands # Use `just ` to run any of these tasks # Default recipe - show available commands default: @just --list # Install all dependencies (root + lib) install: npm install cd lib && npm install # Start full-stack development (primary workflow) dev: build-lib build #!/usr/bin/env bash echo "๐Ÿš€ Starting Full-Stack Insertr Development..." echo "================================================" echo "" echo "๐Ÿ“ Unified logs below (API server + Demo site):" echo "๐Ÿ”Œ [SERVER] = API server logs" echo "๐ŸŒ [DEMO] = Demo site logs" 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 with prefixed output echo "๐Ÿ”Œ Starting API server (localhost:8080)..." INSERTR_DATABASE_PATH=./dev.db ./insertr serve --dev-mode 2>&1 | sed 's/^/๐Ÿ”Œ [SERVER] /' & 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 demo site (localhost:3000)..." echo "๐Ÿ“ Full-stack ready - edit content with real-time persistence!" echo "" # Start demo site with prefixed output (this will block) - use local installation cd {{justfile_directory()}} && npx --prefer-offline live-server test-sites/demo-site --port=3000 --host=localhost --open=/index.html 2>&1 | sed 's/^/๐ŸŒ [DEMO] /' & DEMO_PID=$! # Wait for both processes wait $DEMO_PID $SERVER_PID # Demo site only (for specific use cases) # Start development server for about page dev-about: build-lib build #!/usr/bin/env bash echo "๐Ÿš€ Starting full-stack development (about page)..." INSERTR_DATABASE_PATH=./dev.db ./insertr serve --dev-mode & SERVER_PID=$! sleep 3 npx --prefer-offline live-server test-sites/demo-site --port=3000 --host=localhost --open=/about.html kill $SERVER_PID 2>/dev/null || true # Check project status and validate setup check: npm run check # 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 --config test-sites/simple/dan-eden-portfolio/insertr.yaml ./insertr enhance test-sites/simple/dan-eden-portfolio-temp --output test-sites/simple/dan-eden-portfolio-demo --config test-sites/simple/dan-eden-portfolio/insertr.yaml 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" "3000" 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 --config test-sites/simple/test-simple/insertr.yaml ./insertr enhance test-sites/simple/test-simple-temp --output test-sites/simple/test-simple-demo --config test-sites/simple/test-simple/insertr.yaml 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" "3000" 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: npm run build # Build only the JavaScript library build-lib: npm run build:lib # Watch library files for changes (auto-rebuild) watch: cd lib && npm run dev # Start Air hot-reload for unified binary development air: air # Build unified binary only build-insertr: go build -o insertr . # Run insertr help help: ./insertr --help # Enhance demo site (build-time content injection) enhance input="test-sites/demo-site" output="dist": ./insertr enhance {{input}} --output {{output}} --mock # === Content API Server Commands === # Start content API server (default port 8080) serve port="8080": INSERTR_DATABASE_PATH=./dev.db ./insertr serve --port {{port}} --dev-mode # Start API server in production mode serve-prod port="8080" db="./insertr.db": INSERTR_DATABASE_PATH={{db}} ./insertr serve --port {{port}} # Check API server health health port="8080": @echo "๐Ÿ” Checking API server health..." @curl -s http://localhost:{{port}}/health | jq . || echo "โŒ Server not responding at localhost:{{port}}" # Clean all build artifacts and backups clean: rm -rf lib/dist rm -rf insertr rm -rf tmp rm -rf dist rm -rf node_modules rm -rf lib/node_modules rm -f dev.db rm -f insertr.db @echo "๐Ÿงน Cleaned all build artifacts and backups" # Lint code (placeholder for now) lint: npm run lint # Run tests (placeholder for now) test: npm run test # Development workflow: install deps, build lib, start dev server dev-setup: install build-lib dev # Production workflow: install deps, build everything prod-build: install build # Show project status status: @echo "๐Ÿ—๏ธ Insertr Project Status" @echo "=========================" @echo "๐Ÿ“ Root files:" @ls -la package.json justfile go.mod insertr.yaml 2>/dev/null || echo " Missing files" @echo "\n๐Ÿ“š Library files:" @ls -la lib/package.json lib/src lib/dist 2>/dev/null || echo " Missing library components" @echo "\n๐Ÿ”ง Unified binary:" @ls -la insertr main.go cmd/ internal/ 2>/dev/null || echo " Missing unified binary components" @echo "\n๐ŸŒ Demo site:" @ls -la test-sites/demo-site/index.html test-sites/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 [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" # 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"