chore: add start.sh and seed-forms.sh deployment scripts
This commit is contained in:
27
teressa-copeland-homes/seed-forms.sh
Executable file
27
teressa-copeland-homes/seed-forms.sh
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# ============================================================
|
||||||
|
# Re-seed the forms library after adding new PDFs.
|
||||||
|
# Drop PDFs into seeds/forms/ then run: ./seed-forms.sh
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
set -e
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
|
||||||
|
|
||||||
|
FORMS_COUNT=$(ls seeds/forms/*.pdf 2>/dev/null | wc -l | tr -d ' ')
|
||||||
|
if [ "$FORMS_COUNT" -eq 0 ]; then
|
||||||
|
echo -e "${YELLOW}No PDF files found in seeds/forms/ — nothing to seed.${NC}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}▶ Seeding $FORMS_COUNT forms into database...${NC}"
|
||||||
|
DATABASE_URL="postgresql://postgres:postgres@localhost:5433/teressa" \
|
||||||
|
npx tsx scripts/seed-forms.ts 2>&1 | tail -2
|
||||||
|
|
||||||
|
echo -e "${GREEN}▶ Copying forms into container...${NC}"
|
||||||
|
docker compose exec app mkdir -p /app/seeds/forms 2>/dev/null || true
|
||||||
|
docker cp seeds/forms/. "$(docker compose ps -q app)":/app/seeds/forms/
|
||||||
|
docker compose exec app chown -R nextjs:nodejs /app/seeds/forms/ 2>/dev/null || true
|
||||||
|
|
||||||
|
echo -e "${GREEN}✓ Done — forms available in the app.${NC}"
|
||||||
103
teressa-copeland-homes/start.sh
Executable file
103
teressa-copeland-homes/start.sh
Executable file
@@ -0,0 +1,103 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# ============================================================
|
||||||
|
# Teressa Copeland Homes — Start Script
|
||||||
|
# Run from the teressa-copeland-homes/ directory:
|
||||||
|
# chmod +x start.sh (first time only)
|
||||||
|
# ./start.sh
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
cd "$SCRIPT_DIR"
|
||||||
|
|
||||||
|
# ── Helpers ──────────────────────────────────────────────────
|
||||||
|
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
|
||||||
|
info() { echo -e "${GREEN}▶ $1${NC}"; }
|
||||||
|
warn() { echo -e "${YELLOW}⚠ $1${NC}"; }
|
||||||
|
error() { echo -e "${RED}✗ $1${NC}"; exit 1; }
|
||||||
|
|
||||||
|
# ── 1. Check prerequisites ────────────────────────────────────
|
||||||
|
command -v docker >/dev/null 2>&1 || error "Docker not found. Install Docker Desktop first."
|
||||||
|
command -v docker compose >/dev/null 2>&1 || error "docker compose not found. Update Docker Desktop."
|
||||||
|
|
||||||
|
# ── 2. Check .env.production exists ──────────────────────────
|
||||||
|
if [ ! -f ".env.production" ]; then
|
||||||
|
error ".env.production not found. Copy .env.production.example to .env.production and fill in your values."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ── 3. Build the app image ────────────────────────────────────
|
||||||
|
info "Building app image (this takes ~2 min on first run)..."
|
||||||
|
docker compose build app
|
||||||
|
|
||||||
|
# ── 4. Start everything ───────────────────────────────────────
|
||||||
|
info "Starting database and app..."
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# ── 5. Wait for database to be healthy ───────────────────────
|
||||||
|
info "Waiting for database..."
|
||||||
|
for i in $(seq 1 30); do
|
||||||
|
if docker compose exec db pg_isready -U postgres -q 2>/dev/null; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
# ── 6. Run migrations ─────────────────────────────────────────
|
||||||
|
info "Running database migrations..."
|
||||||
|
DATABASE_URL="postgresql://postgres:postgres@localhost:5433/teressa" \
|
||||||
|
npx drizzle-kit migrate 2>&1 | tail -3
|
||||||
|
|
||||||
|
# ── 7. Seed agent account (safe to re-run — skips if exists) ──
|
||||||
|
info "Seeding agent account..."
|
||||||
|
DATABASE_URL="postgresql://postgres:postgres@localhost:5433/teressa" \
|
||||||
|
AGENT_EMAIL="teressa@tcopelandhomes.com" \
|
||||||
|
AGENT_PASSWORD="AgentPortal2024!" \
|
||||||
|
npx tsx scripts/seed.ts 2>&1 | tail -3
|
||||||
|
|
||||||
|
# ── 8. Seed forms library ─────────────────────────────────────
|
||||||
|
FORMS_COUNT=$(ls seeds/forms/*.pdf 2>/dev/null | wc -l | tr -d ' ')
|
||||||
|
if [ "$FORMS_COUNT" -gt 0 ]; then
|
||||||
|
info "Seeding $FORMS_COUNT PDF forms into library..."
|
||||||
|
DATABASE_URL="postgresql://postgres:postgres@localhost:5433/teressa" \
|
||||||
|
npx tsx scripts/seed-forms.ts 2>&1 | tail -2
|
||||||
|
|
||||||
|
info "Copying forms into container..."
|
||||||
|
docker compose exec app mkdir -p /app/seeds/forms 2>/dev/null || true
|
||||||
|
docker cp seeds/forms/. "$(docker compose ps -q app)":/app/seeds/forms/
|
||||||
|
docker compose exec app chown -R nextjs:nodejs /app/seeds/forms/ 2>/dev/null || true
|
||||||
|
else
|
||||||
|
warn "No PDF forms found in seeds/forms/ — skipping forms seed."
|
||||||
|
warn "See below for how to add your forms."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ── 9. Health check ───────────────────────────────────────────
|
||||||
|
info "Checking app health..."
|
||||||
|
sleep 3
|
||||||
|
HEALTH=$(curl -s http://localhost:3001/api/health 2>/dev/null || echo "unreachable")
|
||||||
|
if echo "$HEALTH" | grep -q '"ok":true'; then
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}════════════════════════════════════════${NC}"
|
||||||
|
echo -e "${GREEN} ✓ App is running!${NC}"
|
||||||
|
echo -e "${GREEN} Open: http://localhost:3001/agent/login${NC}"
|
||||||
|
echo -e "${GREEN} Email: teressa@tcopelandhomes.com${NC}"
|
||||||
|
echo -e "${GREEN} Password: AgentPortal2024!${NC}"
|
||||||
|
echo -e "${GREEN}════════════════════════════════════════${NC}"
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
warn "Health check inconclusive (app may still be starting). Try: http://localhost:3001/api/health"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ── 10. Where to put forms ────────────────────────────────────
|
||||||
|
echo ""
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo " 📄 ADDING PDF FORMS TO THE LIBRARY"
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo " Drop PDF files into:"
|
||||||
|
echo " teressa-copeland-homes/seeds/forms/"
|
||||||
|
echo ""
|
||||||
|
echo " Then run:"
|
||||||
|
echo " ./seed-forms.sh"
|
||||||
|
echo " (or just re-run ./start.sh)"
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo ""
|
||||||
Reference in New Issue
Block a user