Files

87 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Start all services for the Daytona/devcontainer workspace.
# Launches the real Electron app with a virtual display.
#
# Usage: bash .devcontainer/start-services.sh
#
# Services started:
# - Xvfb + noVNC (port 6080) — see the Electron app in your browser
# - Vite dev server (port 5173) — React UI with HMR
# - Electron app — the real desktop app on the virtual display
# - CDP debugging (port 9825) — for automation
#
# Optional (if MySQL is available):
# - Den API (port 8788)
# - Den Web (port 3005)
cd /workspace
# ── 1. Virtual display ──
echo "==> Starting virtual display..."
.devcontainer/start-daytona-vnc.sh
sleep 2
# ── 2. Vite dev server on 0.0.0.0 (so Electron can reach it via 127.0.0.1) ──
echo "==> Starting Vite on :5173..."
cd apps/app
OPENWORK_DEV_MODE=1 nohup npx vite --host 0.0.0.0 --port 5173 > /tmp/vite.log 2>&1 &
cd /workspace
sleep 3
# ── 3. Electron app ──
echo "==> Starting Electron app..."
bash .devcontainer/start-daytona-electron.sh --detach
# ── 4. Wait for Electron to be ready ──
echo "==> Waiting for Electron..."
for i in $(seq 1 30); do
if curl -sf http://127.0.0.1:9825/json/list >/dev/null 2>&1; then
echo "Electron CDP ready."
break
fi
sleep 2
done
# ── 5. Optional: Den stack (only if MySQL is reachable) ──
if mysql -h mysql -u root -ppassword -e "SELECT 1" >/dev/null 2>&1; then
echo "==> MySQL found, starting Den stack..."
echo " Pushing DB schema..."
pnpm --filter @openwork-ee/den-db db:push 2>&1 || echo " DB push failed (may be up to date)"
echo " Starting Den API on :8788..."
pnpm dev:den:api > /tmp/den-api.log 2>&1 &
for i in $(seq 1 20); do
if curl -sf http://localhost:8788/health >/dev/null 2>&1; then
echo " Den API healthy."
break
fi
sleep 2
done
echo " Starting Den Web on :3005..."
pnpm dev:den:web > /tmp/den-web.log 2>&1 &
else
echo "==> MySQL not found, skipping Den stack."
fi
echo ""
echo "============================================"
echo " All services running!"
echo ""
echo " Desktop App (noVNC): http://localhost:6080"
echo " CDP Debug: ws://127.0.0.1:9825"
echo " Vite HMR: http://localhost:5173"
if mysql -h mysql -u root -ppassword -e "SELECT 1" >/dev/null 2>&1; then
echo " Den Web: http://localhost:3005"
echo " Den API: http://localhost:8788"
fi
echo "============================================"
echo ""
# Keep alive
wait