#!/bin/bash # ======================================== # AI Recruitment Site - SAAC Deployment Script # ======================================== # This script deploys your recruitment site to StartAnAiCompany infrastructure # via apps.startanaicompany.com # # IMPORTANT: Copy this file to deploy-to-apps.sh and customize it # DO NOT commit deploy-to-apps.sh to git (it's in .gitignore) # # Prerequisites: # 1. Register for API key at: https://apps.startanaicompany.com/api/v1/register # 2. Set SAAC_API_KEY environment variable # 3. Set GITEA_API_TOKEN environment variable (required for automatic deployments) # 4. Customize your .env file with company information set -e # Exit on error # Load environment variables from .env if [ ! -f .env ]; then echo "❌ Error: .env file not found. Copy .env.example to .env and customize it." exit 1 fi source .env # Check required environment variables if [ -z "$SAAC_API_KEY" ]; then echo "❌ Error: SAAC_API_KEY environment variable not set" echo "" echo "To get your API key:" echo "1. Register at: curl -X POST https://apps.startanaicompany.com/api/v1/register \\" echo " -H 'Content-Type: application/json' \\" echo " -d '{\"email\":\"your@email.com\",\"gitea_username\":\"${GITEA_USERNAME}\"}'" echo "" echo "2. Save the returned API key" echo "3. Export it: export SAAC_API_KEY='your_api_key_here'" echo "" exit 1 fi # Check required .env variables if [ -z "$COMPANY_NAME" ]; then echo "❌ Error: COMPANY_NAME not set in .env" exit 1 fi if [ -z "$SUBDOMAIN" ]; then echo "❌ Error: SUBDOMAIN not set in .env" exit 1 fi if [ -z "$GITEA_USERNAME" ]; then echo "❌ Error: GITEA_USERNAME not set in .env" exit 1 fi if [ -z "$GITEA_REPO_NAME" ]; then echo "❌ Error: GITEA_REPO_NAME not set in .env" exit 1 fi # SAAC API configuration SAAC_API="https://apps.startanaicompany.com/api/v1" # Repository URL (HTTPS for deployment platform to clone) REPO_URL="https://git.startanaicompany.com/${GITEA_USERNAME}/${GITEA_REPO_NAME}.git" # Domain (e.g., annarecruit.startanaicompany.com or johnrecruit.startanaicompany.com) FULL_DOMAIN="${SUBDOMAIN}recruit.startanaicompany.com" echo "=========================================" echo " AI Recruitment Site Deployment" echo "=========================================" echo "📦 Configuration:" echo " Company: $COMPANY_NAME" echo " Repository: $REPO_URL" echo " Domain: https://$FULL_DOMAIN" echo "" # Create application via SAAC API echo "📝 Creating application on StartAnAiCompany server..." APP_RESPONSE=$(curl -s -X POST "${SAAC_API}/applications" \ -H "X-API-Key: ${SAAC_API_KEY}" \ -H "Content-Type: application/json" \ -d "{ \"name\": \"${SUBDOMAIN}-recruit\", \"subdomain\": \"${SUBDOMAIN}\", \"domain_suffix\": \"recruit.startanaicompany.com\", \"git_repository\": \"${REPO_URL}\", \"git_branch\": \"master\", \"template_type\": \"recruitment\", \"environment_variables\": { \"COMPANY_NAME\": \"${COMPANY_NAME}\", \"COMPANY_TAGLINE\": \"${COMPANY_TAGLINE}\", \"COMPANY_DESCRIPTION\": \"${COMPANY_DESCRIPTION}\", \"PRIMARY_COLOR\": \"${PRIMARY_COLOR}\", \"ACCENT_COLOR\": \"${ACCENT_COLOR}\", \"DARK_COLOR\": \"${DARK_COLOR}\", \"CONTACT_EMAIL\": \"${CONTACT_EMAIL}\", \"CONTACT_PHONE\": \"${CONTACT_PHONE}\", \"CONTACT_ADDRESS\": \"${CONTACT_ADDRESS}\" } }") # Check for errors if echo "$APP_RESPONSE" | grep -q "error"; then echo "❌ Deployment failed:" echo "$APP_RESPONSE" | jq '.' 2>/dev/null || echo "$APP_RESPONSE" exit 1 fi # Extract application details APP_UUID=$(echo "$APP_RESPONSE" | jq -r '.application_uuid' 2>/dev/null) DOMAIN=$(echo "$APP_RESPONSE" | jq -r '.domain' 2>/dev/null) WEBHOOK_URL=$(echo "$APP_RESPONSE" | jq -r '.webhook_url' 2>/dev/null) if [ "$APP_UUID" == "null" ] || [ -z "$APP_UUID" ]; then echo "❌ Failed to create application" echo "Response: $APP_RESPONSE" exit 1 fi echo "✅ Application created!" echo " Application UUID: $APP_UUID" echo " Domain: $DOMAIN" echo "" # Configure webhook for automatic deployments echo "🪝 Setting up deployment webhook..." if [ -z "$GITEA_API_TOKEN" ]; then echo "❌ Error: GITEA_API_TOKEN environment variable not set" echo "" echo "Automatic deployments require GITEA_API_TOKEN to set up webhooks." echo "" echo "To get your Gitea API token:" echo "1. Go to https://git.startanaicompany.com" echo "2. Click your profile → Settings → Applications" echo "3. Generate New Token (grant 'repo' permissions)" echo "4. Export it: export GITEA_API_TOKEN='your_token_here'" echo "" exit 1 fi # Create webhook in Gitea GITEA_API="https://git.startanaicompany.com/api/v1" WEBHOOK_RESPONSE=$(curl -s -X POST "${GITEA_API}/repos/${GITEA_USERNAME}/${GITEA_REPO_NAME}/hooks" \ -H "Authorization: token ${GITEA_API_TOKEN}" \ -H "Content-Type: application/json" \ -d "{ \"type\": \"gitea\", \"config\": { \"url\": \"${WEBHOOK_URL}\", \"content_type\": \"json\", \"http_method\": \"GET\" }, \"events\": [\"push\"], \"authorization_header\": \"Bearer ${SAAC_API_KEY}\", \"active\": true }") WEBHOOK_ID=$(echo "$WEBHOOK_RESPONSE" | jq -r '.id' 2>/dev/null) if [ "$WEBHOOK_ID" == "null" ] || [ -z "$WEBHOOK_ID" ]; then echo "⚠️ Warning: Failed to create Gitea webhook (may already exist)" else echo "✅ Webhook configured for automatic deployments" fi echo "" echo "=========================================" echo " Deployment Complete!" echo "=========================================" echo "" echo "📋 Deployment Details:" echo " Application UUID: $APP_UUID" echo " Domain: $DOMAIN" echo "" echo "⏳ Your site will be available in 2-3 minutes at:" echo " $DOMAIN" echo "" echo "📝 Next Steps:" echo " 1. Configure Cloudflare DNS (if not already done):" echo " - Add CNAME record:" echo " - Name: ${SUBDOMAIN}recruit" echo " - Target: apps.startanaicompany.com" echo " - Proxy: Enabled" echo "" echo " 2. Wait 2-3 minutes for deployment to complete" echo "" echo " 3. Visit your site:" echo " $DOMAIN" echo "" echo " 4. Create your first admin account via the login page:" echo " ${DOMAIN}/admin/login" echo "" echo "🔍 Monitor deployment:" echo " View logs:" echo " curl -H \"X-API-Key: \$SAAC_API_KEY\" \\" echo " ${SAAC_API}/applications/${APP_UUID}/logs" echo "" echo " List your applications:" echo " curl -H \"X-API-Key: \$SAAC_API_KEY\" \\" echo " ${SAAC_API}/applications" echo "" # Save deployment info cat > deployment-info.txt <