From 1f079d0309e0d593e1f6616fd463f2851db4244c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hartmut=20N=C3=B6renberg?= Date: Mon, 23 Mar 2026 08:35:15 +0100 Subject: [PATCH] chore: add start/stop/restart scripts for Planarchy - scripts/start.sh: docker compose up, prisma generate, clear .next cache, start Next.js, wait for health check, show status - scripts/stop.sh: kill Next.js by PID + fuser, docker compose stop - scripts/restart.sh: stop then start Usage: ./scripts/start.sh # Start everything ./scripts/stop.sh # Stop everything ./scripts/restart.sh # Full restart Co-Authored-By: claude-flow --- scripts/restart.sh | 15 ++++++++++++++ scripts/start.sh | 51 ++++++++++++++++++++++++++++++++++++++++++++++ scripts/stop.sh | 27 ++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100755 scripts/restart.sh create mode 100755 scripts/start.sh create mode 100755 scripts/stop.sh diff --git a/scripts/restart.sh b/scripts/restart.sh new file mode 100755 index 0000000..533431a --- /dev/null +++ b/scripts/restart.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." + +echo "Restarting Planarchy..." +echo "" + +# Stop +bash scripts/stop.sh + +echo "" +sleep 1 + +# Start +bash scripts/start.sh diff --git a/scripts/start.sh b/scripts/start.sh new file mode 100755 index 0000000..8e1030a --- /dev/null +++ b/scripts/start.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." + +echo "Starting Planarchy..." + +# 1. Start Docker services +echo " Starting PostgreSQL + Redis..." +docker compose up -d postgres redis +sleep 2 + +# 2. Wait for PostgreSQL to be healthy +echo " Waiting for PostgreSQL..." +for i in {1..30}; do + if docker exec planarchy-postgres-1 pg_isready -U planarchy -q 2>/dev/null; then + break + fi + sleep 1 +done + +# 3. Regenerate Prisma client +echo " Generating Prisma client..." +pnpm --filter @planarchy/db exec prisma generate --no-hints 2>/dev/null + +# 4. Clear stale Next.js cache +rm -rf apps/web/.next + +# 5. Start Next.js dev server +echo " Starting Next.js on port 3100..." +nohup pnpm --filter @planarchy/web dev > /tmp/planarchy-dev.log 2>&1 & +echo $! > /tmp/planarchy-dev.pid + +# 6. Wait for server to be ready +echo " Waiting for server..." +for i in {1..30}; do + if curl -sf http://localhost:3100/api/health > /dev/null 2>&1; then + echo "" + echo "Planarchy is running!" + curl -s http://localhost:3100/api/ready | python3 -m json.tool 2>/dev/null || curl -s http://localhost:3100/api/ready + echo "" + echo " URL: http://localhost:3100" + echo " Logs: tail -f /tmp/planarchy-dev.log" + echo " PID: $(cat /tmp/planarchy-dev.pid)" + exit 0 + fi + sleep 1 +done + +echo "ERROR: Server failed to start within 30 seconds" +echo "Check logs: tail -50 /tmp/planarchy-dev.log" +exit 1 diff --git a/scripts/stop.sh b/scripts/stop.sh new file mode 100755 index 0000000..0e78694 --- /dev/null +++ b/scripts/stop.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." + +echo "Stopping Planarchy..." + +# 1. Stop Next.js dev server +if [ -f /tmp/planarchy-dev.pid ]; then + PID=$(cat /tmp/planarchy-dev.pid) + if kill -0 "$PID" 2>/dev/null; then + echo " Stopping Next.js (PID $PID)..." + kill "$PID" 2>/dev/null || true + sleep 1 + kill -9 "$PID" 2>/dev/null || true + fi + rm -f /tmp/planarchy-dev.pid +fi + +# Also kill anything on port 3100 +fuser -k 3100/tcp 2>/dev/null || true + +# 2. Stop Docker services (keep data volumes) +echo " Stopping PostgreSQL + Redis..." +docker compose stop postgres redis 2>/dev/null || true + +echo "" +echo "Planarchy stopped."