feat: Fix product tables and responsive fonts
- Add product detail page ([slug].astro) with table rendering - Display productTables from site-config.ts on product pages - Add responsive font scaling for large screens (1280px+) - Base font scales from 16px to 24px on 4K displays - All text elements use responsive sizing (md/lg/xl breakpoints) - Tables styled with green headers and alternating rows - Add comprehensive documentation (FIXES_SUMMARY.md) Fixes: - Product specification tables now visible on product pages - Font too small on large screens - now responsive
This commit is contained in:
94
dealplustech-astro/skills/easypanel-deploy/deploy.sh
Executable file
94
dealplustech-astro/skills/easypanel-deploy/deploy.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
CREDENTIALS_FILE="$HOME/.easypanel/credentials"
|
||||
if [ -f "$CREDENTIALS_FILE" ]; then
|
||||
export $(grep -v '^#' "$CREDENTIALS_FILE" | xargs) 2>/dev/null || true
|
||||
fi
|
||||
|
||||
EASYPANEL_HOST="110.164.146.46"
|
||||
EASYPANEL_URL="http://${EASYPANEL_HOST}:3000"
|
||||
GITEA_REPO_URL="https://git.moreminimore.com/kunthawat/dealplustech.git"
|
||||
PROJECT_NAME="customerwebsite"
|
||||
GITEA_BRANCH="main"
|
||||
TIMESTAMP=$(date +%s)
|
||||
APP_NAME="dealplustech-${TIMESTAMP}"
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() { echo -e "${BLUE}ℹ️ $1${NC}"; }
|
||||
log_success() { echo -e "${GREEN}✅ $1${NC}"; }
|
||||
log_error() { echo -e "${RED}❌ $1${NC}"; }
|
||||
|
||||
[ -z "$EASYPANEL_API_TOKEN" ] && { log_error "Token not set"; exit 1; }
|
||||
|
||||
echo "========================================"
|
||||
echo "🚀 Deploying $APP_NAME"
|
||||
echo "========================================"
|
||||
echo ""
|
||||
|
||||
# Step 1
|
||||
log_info "Step 1/5: Creating service..."
|
||||
result=$(curl -s -X POST "${EASYPANEL_URL}/api/trpc/services.app.createService" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $EASYPANEL_API_TOKEN" \
|
||||
-d "{\"json\":{\"projectName\":\"$PROJECT_NAME\",\"domains\":[{\"host\":\"\$(EASYPANEL_DOMAIN)\"}],\"serviceName\":\"$APP_NAME\"}}" \
|
||||
--insecure)
|
||||
|
||||
if echo "$result" | grep -q '"error"'; then
|
||||
log_error "Failed: $result"
|
||||
exit 1
|
||||
fi
|
||||
log_success "✅ Service created: $APP_NAME"
|
||||
|
||||
# Step 2
|
||||
log_info "Step 2/5: Configuring Git..."
|
||||
log_info "Repository: $GITEA_REPO_URL"
|
||||
result=$(curl -s -X POST "${EASYPANEL_URL}/api/trpc/services.app.updateSourceGit" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $EASYPANEL_API_TOKEN" \
|
||||
-d "{\"json\":{\"projectName\":\"$PROJECT_NAME\",\"serviceName\":\"$APP_NAME\",\"repo\":\"$GITEA_REPO_URL\",\"ref\":\"$GITEA_BRANCH\",\"path\":\"/\"}}" \
|
||||
--insecure)
|
||||
|
||||
if echo "$result" | grep -q '"error"'; then
|
||||
log_error "Failed: $result"
|
||||
exit 1
|
||||
fi
|
||||
log_success "✅ Git configured"
|
||||
|
||||
# Step 3
|
||||
log_info "Step 3/5: Setting build type..."
|
||||
result=$(curl -s -X POST "${EASYPANEL_URL}/api/trpc/services.app.updateBuild" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $EASYPANEL_API_TOKEN" \
|
||||
-d "{\"json\":{\"projectName\":\"$PROJECT_NAME\",\"serviceName\":\"$APP_NAME\",\"build\":{\"type\":\"nixpacks\"}}}" \
|
||||
--insecure)
|
||||
log_success "✅ Build type set (nixpacks)"
|
||||
|
||||
# Step 4
|
||||
log_info "Step 4/5: Getting domain..."
|
||||
result=$(curl -s "${EASYPANEL_URL}/api/trpc/domains.getPrimaryDomain?input=%7B%22json%22%3A%7B%22projectName%22%3A%22$PROJECT_NAME%22%2C%22serviceName%22%3A%22$APP_NAME%22%7D%7D" \
|
||||
-H "Authorization: Bearer $EASYPANEL_API_TOKEN" --insecure)
|
||||
domain=$(echo "$result" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('result',{}).get('data',{}).get('domain',{}).get('host','pending'))" 2>/dev/null || echo "pending")
|
||||
log_success "✅ Domain: $domain"
|
||||
|
||||
# Step 5
|
||||
log_info "Step 5/5: Waiting for deployment..."
|
||||
for i in 1 2 3 4 5 6 7 8 9 10; do
|
||||
sleep 10
|
||||
result=$(curl -s "${EASYPANEL_URL}/api/trpc/services.app.inspectService?input=%7B%22json%22%3A%7B%22projectName%22%3A%22$PROJECT_NAME%22%2C%22serviceName%22%3A%22$APP_NAME%22%7D%7D" \
|
||||
-H "Authorization: Bearer $EASYPANEL_API_TOKEN" --insecure)
|
||||
status=$(echo "$result" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('result',{}).get('data',{}).get('status','building'))" 2>/dev/null || echo "building")
|
||||
log_info " Status: $status (attempt $i/10)"
|
||||
[ "$status" = "running" ] || [ "$status" = "ready" ] && break
|
||||
done
|
||||
|
||||
log_success "✅ Deployment complete!"
|
||||
log_info ""
|
||||
log_info "Service: $APP_NAME"
|
||||
log_info "URL: http://$domain"
|
||||
log_info ""
|
||||
log_info "To redeploy: ./deploy.sh redeploy $APP_NAME"
|
||||
Reference in New Issue
Block a user