#!/bin/bash # Smart App City — Build & Deploy Script # Usage: ./deploy.sh [web|api|all] set -e FRONTEND_DIR="$(dirname "$0")/smart-app-city/frontend" DEPLOY_DIR="/var/www/smartapp" DOCKER_COMPOSE="$(dirname "$0")/smart-app-city/docker-compose.yml" TIMESTAMP=$(date +%Y%m%d_%H%M%S) echo "🏙️ Smart App City — Deploy (${TIMESTAMP})" echo "================================================" build_web() { echo "" echo "📦 Building Expo web..." cd "${FRONTEND_DIR}" echo " → Install deps..." npm ci --legacy-peer-deps --silent 2>/dev/null echo " → Expo export:web..." npx expo export:web --output-dir dist 2>&1 | tail -5 echo " → Build OK → dist/" ls -lh dist/ | tail -5 } deploy_local() { echo "" echo "🚀 Deploying to local nginx..." if [ ! -d "${DEPLOY_DIR}" ]; then sudo mkdir -p "${DEPLOY_DIR}" fi sudo rm -rf "${DEPLOY_DIR:?}"/* sudo cp -r "${FRONTEND_DIR}/dist/"* "${DEPLOY_DIR}/" sudo chown -R www-data:www-data "${DEPLOY_DIR}" echo " → Deployed to ${DEPLOY_DIR}/" echo " → URL: https://smartapp.digitribe.fr" } deploy_docker() { echo "" echo "🐳 Deploying via Docker Compose..." cd "$(dirname "$DOCKER_COMPOSE")" docker compose up -d --build smartapp-web echo " → Container smartapp-web restarted" } case "${1:-all}" in web) build_web deploy_local ;; docker) build_web deploy_docker ;; api) cd "$(dirname "$DOCKER_COMPOSE")" docker compose up -d --build api-gateway ;; all) build_web deploy_local deploy_docker ;; *) echo "Usage: $0 [web|docker|api|all]" exit 1 ;; esac echo "" echo "✅ Deploy complete!" echo "🌐 Web: https://smartapp.digitribe.fr" echo "🔌 API: https://api-smartapp.digitribe.fr"