|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +echo "=== DocuCraft Deployment Setup ===" |
| 5 | +echo "" |
| 6 | + |
| 7 | +# Check prerequisites |
| 8 | +echo "=== Checking prerequisites ===" |
| 9 | +command -v gh >/dev/null 2>&1 || { echo "Missing: gh (GitHub CLI)"; exit 1; } |
| 10 | +command -v vercel >/dev/null 2>&1 || { echo "Missing: vercel (Vercel CLI)"; exit 1; } |
| 11 | +command -v supabase >/dev/null 2>&1 || { echo "Missing: supabase (Supabase CLI)"; exit 1; } |
| 12 | +command -v railway >/dev/null 2>&1 || { echo "Missing: railway (Railway CLI)"; exit 1; } |
| 13 | +echo "All prerequisites installed." |
| 14 | +echo "" |
| 15 | + |
| 16 | +echo "=== Step 1: Create a Supabase project ===" |
| 17 | +echo "1. Go to https://supabase.com/dashboard/projects" |
| 18 | +echo "2. Click 'New Project'" |
| 19 | +echo "3. Name: docucraft" |
| 20 | +echo "4. Set a strong database password" |
| 21 | +echo "5. Choose region closest to you" |
| 22 | +echo "6. After creation, go to Project Settings > API" |
| 23 | +echo "7. Copy: Project URL, anon key, service_role key" |
| 24 | +echo "" |
| 25 | + |
| 26 | +echo "=== Step 2: Create a GitHub App ===" |
| 27 | +echo "1. Go to https://github.com/settings/apps/new" |
| 28 | +echo "2. GitHub App name: DocuCraft" |
| 29 | +echo "3. Homepage URL: https://docucraft.dev" |
| 30 | +echo "4. Webhook URL: https://docucraft.dev/api/github/webhook" |
| 31 | +echo "5. Webhook secret: generate with: openssl rand -hex 32" |
| 32 | +echo "6. Permissions:" |
| 33 | +echo " - Pull requests: Read & Write" |
| 34 | +echo " - Contents: Read-only" |
| 35 | +echo " - Metadata: Read-only" |
| 36 | +echo " - Checks: Read & Write" |
| 37 | +echo "7. Subscribe to events: Pull request" |
| 38 | +echo "8. Where can this App be installed?: Any account" |
| 39 | +echo "9. After creation, generate a private key" |
| 40 | +echo "10. Copy: App ID, Client ID, Client Secret, Private Key, Webhook Secret" |
| 41 | +echo "" |
| 42 | + |
| 43 | +echo "=== Step 3: Set up Vercel deployment ===" |
| 44 | +echo "vercel login" |
| 45 | +echo "vercel link --project docucraft" |
| 46 | +echo "vercel env add NEXT_PUBLIC_SUPABASE_URL" |
| 47 | +echo "vercel env add NEXT_PUBLIC_SUPABASE_ANON_KEY" |
| 48 | +echo "vercel env add SUPABASE_SERVICE_ROLE_KEY" |
| 49 | +echo "vercel env add GITHUB_APP_ID" |
| 50 | +echo "vercel env add GITHUB_APP_CLIENT_ID" |
| 51 | +echo "vercel env add GITHUB_APP_CLIENT_SECRET" |
| 52 | +echo "vercel env add GITHUB_APP_PRIVATE_KEY" |
| 53 | +echo "vercel env add GITHUB_APP_WEBHOOK_SECRET" |
| 54 | +echo "vercel env add OPENAI_API_KEY" |
| 55 | +echo "vercel env add NEXT_PUBLIC_APP_URL" |
| 56 | +echo "vercel --prod" |
| 57 | +echo "" |
| 58 | + |
| 59 | +echo "=== Step 4: Deploy Supabase migrations ===" |
| 60 | +echo "supabase link --project-ref <your-project-ref>" |
| 61 | +echo "supabase db push" |
| 62 | +echo "" |
| 63 | + |
| 64 | +echo "=== Step 5: Update Railway environment variables ===" |
| 65 | +echo "railway login" |
| 66 | +echo "railway link" |
| 67 | +echo "railway variables --set NEXT_PUBLIC_SUPABASE_URL=..." |
| 68 | +echo "railway variables --set SUPABASE_SERVICE_ROLE_KEY=..." |
| 69 | +echo "railway variables --set GITHUB_APP_PRIVATE_KEY=..." |
| 70 | +echo "# ... set all other vars ..." |
| 71 | +echo "" |
| 72 | + |
| 73 | +echo "=== Step 6: Install the GitHub App ===" |
| 74 | +echo "1. Go to your GitHub App's public page" |
| 75 | +echo "2. Click 'Install' on your account/org" |
| 76 | +echo "3. Select repos to grant access" |
| 77 | +echo "" |
| 78 | + |
| 79 | +echo "=== Done! ===" |
| 80 | +echo "Your DocuCraft instance should now be live." |
| 81 | +echo "Test it by opening a PR on a connected repo." |
0 commit comments