#!/bin/sh # KoolTab Production Deploy # Usage: ./scripts/deploy.sh "My Venue" admin@myvenue.com password VENUE_NAME="${1:-${SETUP_VENUE_NAME}}" ADMIN_EMAIL="${2:-${SETUP_ADMIN_EMAIL}}" ADMIN_PASSWORD="${3:-${SETUP_ADMIN_PASSWORD}}" if [ -z "$VENUE_NAME" ] || [ -z "$ADMIN_EMAIL" ] || [ -z "$ADMIN_PASSWORD" ]; then echo "Usage: $0 \"Venue Name\" admin@example.com password" echo " or: SETUP_VENUE_NAME=... SETUP_ADMIN_EMAIL=... SETUP_ADMIN_PASSWORD=... $0" exit 1 fi echo "=== Deploying KoolTab ===" echo " Venue: $VENUE_NAME" echo " Admin: $ADMIN_EMAIL" echo "" # Build and start containers docker compose -f docker-compose.prod.yml up --build -d || { echo "Deploy failed"; exit 1; } # Wait for API to be ready echo "Waiting for API..." until docker compose -f docker-compose.prod.yml exec api sh -c "node -e 'require(\"http\").get(\"http://localhost:3001/api/v1/health\",r=>{let b=\"\";r.on(\"data\",c=>b+=c);r.on(\"end\",()=>process.exit(b.includes(\"\\\"status\\\":\\\"ok\\\"\")?0:1))})'" 2>/dev/null; do sleep 2 done echo "✓ API is ready" # Seed the database echo "" echo "Seeding database..." docker compose -f docker-compose.prod.yml exec api sh -c " SETUP_VENUE_NAME='$VENUE_NAME' \ SETUP_ADMIN_EMAIL='$ADMIN_EMAIL' \ SETUP_ADMIN_PASSWORD='$ADMIN_PASSWORD' \ node prisma/setup.js " || { echo "Seed failed"; exit 1; } echo "" echo "=== Done ===" echo " Dashboard: https://kooltab.com" echo " Login: $ADMIN_EMAIL / $ADMIN_PASSWORD"