#!/bin/bash echo "🔍 Etsy Finance Tracker - Deployment Validation" echo "==================================================" # Check if Docker is available echo "📦 Checking Docker availability..." if command -v docker &> /dev/null; then echo "✅ Docker is available" docker --version else echo "❌ Docker is not available or not in PATH" echo "💡 You may need to use Docker Desktop or another container interface" fi # Check if Docker Compose is available echo "" echo "🐙 Checking Docker Compose availability..." if command -v docker-compose &> /dev/null; then echo "✅ docker-compose is available" docker-compose --version elif docker compose version &> /dev/null 2>&1; then echo "✅ docker compose (newer version) is available" docker compose version else echo "❌ Docker Compose is not available" echo "💡 You may need to use container interface deployment" fi # Check if required files exist echo "" echo "📁 Checking required files..." files=( "Dockerfile" "docker-compose.deploy-local.yml" "docker-compose.deploy.yml" "docker-compose.simple.yml" "nginx.deploy.conf" "package.json" "client/package.json" "server/package.json" ) for file in "${files[@]}"; do if [ -f "$file" ]; then echo "✅ $file exists" else echo "❌ $file is missing" fi done # Check for data directory echo "" echo "💾 Checking data persistence setup..." if [ -d "data" ]; then echo "✅ data directory exists" echo "📂 Contents:" ls -la data/ else echo "⚠️ data directory doesn't exist, creating..." mkdir -p data/{mongo,uploads,logs,csv,pdf} echo "✅ data directory structure created" fi # Check port availability echo "" echo "🔌 Checking port availability..." ports=(8080 8081) for port in "${ports[@]}"; do if lsof -i :$port &> /dev/null; then echo "⚠️ Port $port is in use" echo " Process using port $port:" lsof -i :$port else echo "✅ Port $port is available" fi done # Check disk space echo "" echo "💽 Checking disk space..." available_space=$(df -h . | awk 'NR==2 {print $4}') echo "Available space: $available_space" if [[ $(df . | awk 'NR==2 {print $4}') -gt 2097152 ]]; then # 2GB in KB echo "✅ Sufficient disk space available" else echo "⚠️ Low disk space - may cause build failures" fi echo "" echo "🎯 Deployment Recommendations:" echo "================================" # Docker available if command -v docker &> /dev/null || command -v docker-compose &> /dev/null; then echo "🚀 You can use command-line deployment:" if command -v docker-compose &> /dev/null; then echo " docker-compose -f docker-compose.deploy-local.yml up --build" else echo " docker compose -f docker-compose.deploy-local.yml up --build" fi else echo "🖥️ Use container interface deployment:" echo " 1. Open Docker Desktop, Portainer, or similar tool" echo " 2. Import docker-compose.deploy-local.yml" echo " 3. Deploy the stack" fi echo "" echo "📚 For detailed instructions, see:" echo " - DEPLOYMENT_GUIDE.md (comprehensive guide)" echo " - CONTAINER_INTERFACE_DEPLOYMENT.md (GUI deployment)" echo "" echo "🌐 After successful deployment:" echo " - Frontend: http://localhost:8081" echo " - API: http://localhost:8081/api" echo " - Health Check: http://localhost:8081/api/health" echo "" echo "✅ Validation complete!"