#!/usr/bin/env bash # Publish upbeatBytes: build the frontend, sync it to the live Caddy site, # rebuild/restart the API container, and reload Caddy. One command to redeploy. set -euo pipefail repo="$(cd "$(dirname "$0")/.." && pwd)" site="/home/jay/srv/sites/upbeatbytes" api_compose="/home/jay/srv/upbeatbytes/compose.yaml" echo "→ building frontend" ( cd "$repo/frontend" && npm run build ) echo "→ syncing static site to $site (assets first, shell + SW last)" bash "$repo/deploy/sync-static.sh" "$repo/frontend/build" "$site" echo "→ rebuilding/refreshing API container" docker compose -f "$api_compose" up -d --build echo "→ reloading Caddy" docker exec caddy caddy reload --config /etc/caddy/Caddyfile --adapter caddyfile # Non-fatal smoke check: the digest masthead points at this static asset, so a # missing/unserved logo-email.png would silently break the newsletter header. echo "→ smoke check" curl -fsS -o /dev/null -w ' logo-email.png → %{http_code} %{content_type}\n' \ https://upbeatbytes.com/logo-email.png \ || echo " ⚠ logo-email.png is not being served — the digest masthead would break!" echo "✓ Published upbeatBytes → https://upbeatbytes.com"