Architecture
Deployment Workflow

Deployment Workflow

Step-by-step workflow for deploying services from local development to production, with testing and verification at each stage.

πŸ”„ Complete Workflow


πŸ“¦ Phase 1: Backend Deployment

Phase 1: Backend (Cloud Run)

Local Testing

cd apps/backend
./deploy-local-docker.sh

Wait for deployment, then verify:

# Health check
curl http://localhost:8090/health | jq
 
# API docs  
open http://localhost:8090/docs
 
# Test endpoint
curl http://localhost:8090/v1/leagues | jq
⚠️

Do not proceed to Cloud Run until local tests pass!

Stop local Docker:

docker compose down

Deploy to Cloud Run

cd /path/to/project/root
./deploy-all.sh

Select: Option 2 (Backend only)

Monitor: Terminal shows progress:

Building image...
Pushing to GCR...
Deploying to Cloud Run...
βœ… Deployment successful!

Save the URL:

cat .backend-url
# https://altsportsleagues-backend-xxx-uc.a.run.app

Map Custom Domain

Google Cloud Console:

  1. Navigate to Cloud Run (opens in a new tab)
  2. Click altsportsleagues-backend
  3. Tab: "Manage Custom Domains"
  4. Click "Add Mapping"
  5. Domain: api.altsportsleagues.ai
  6. Region: us-central1
  7. Continue
  8. Note CNAME: ghs.googlehosted.com

Cloudflare DNS:

  1. Cloudflare Dashboard (opens in a new tab)
  2. Domain: altsportsleagues.ai
  3. DNS β†’ Add Record
  4. Configure:
    • Type: CNAME
    • Name: api
    • Target: ghs.googlehosted.com
    • Proxy: ☁️ ON
  5. Save

Wait: 5-30 minutes for SSL verification

Verify Backend

# Test custom domain
curl https://api.altsportsleagues.ai/health | jq
 
# Test API
curl https://api.altsportsleagues.ai/v1/leagues | jq
 
# Open docs
open https://api.altsportsleagues.ai/docs

βœ… Backend is live when all tests return 200 OK!


🎨 Phase 2: Frontend Deployment

Phase 2: Frontend (Vercel)

Update Configuration

Edit clients/frontend/vercel.json:

{
  "rewrites": [
    {
      "source": "/api/v1/:path*",
      "destination": "https://api.altsportsleagues.ai/v1/:path*"
    }
  ]
}

Key change: Use custom domain, remove /api/ from backend path

Set Environment Variables

Vercel Dashboard:

  1. Go to project β†’ Settings β†’ Environment Variables
  2. Add for Production:
    NEXT_PUBLIC_API_URL=https://api.altsportsleagues.ai
    BACKEND_API_URL=https://api.altsportsleagues.ai

Deploy to Vercel

cd clients/frontend
vercel --prod

Wait: 2-5 minutes

Map Custom Domain

Vercel Dashboard:

  1. Project β†’ Settings β†’ Domains
  2. Add: altsportsleagues.ai
  3. Note CNAME from Vercel

Cloudflare:

  1. DNS β†’ Add Record
  2. Configure:
    • Type: CNAME
    • Name: @
    • Target: cname.vercel-dns.com
    • Proxy: ☁️ ON

Verify Frontend

# Open site
open https://altsportsleagues.ai
 
# Test API proxy
curl https://altsportsleagues.ai/api/v1/leagues | jq

Browser DevTools Check:

  • No CORS errors βœ…
  • API calls return 200 βœ…
  • No mixed content warnings βœ…

πŸ“š Phase 3: Documentation Site

Phase 3: Docs (Vercel)

Deploy Docs

cd apps/docs-site
vercel --prod

Map Domain

Vercel: Add docs.altsportsleagues.ai
Cloudflare: Add CNAME docs β†’ Vercel target

Verify

open https://docs.altsportsleagues.ai

βœ… Phase 4: Final Verification

Phase 4: Integration Testing

Complete System Test

# Backend direct
curl https://api.altsportsleagues.ai/health
 
# Frontend (should load)
open https://altsportsleagues.ai
 
# Frontend API proxy (should work)
curl https://altsportsleagues.ai/api/v1/leagues
 
# Docs site
open https://docs.altsportsleagues.ai
 
# n8n (if configured)
open https://n8n.altsportsleagues.ai

Browser Integration Test

  1. Visit https://altsportsleagues.ai
  2. Open DevTools (F12)
  3. Navigate to pages that make API calls
  4. Console: No errors
  5. Network: All API calls return 200
  6. Application: Firebase auth works

All systems go! If all tests pass, your production deployment is complete. πŸŽ‰


πŸ”„ Continuous Deployment

Git-Based Deployment

Frontend & Docs: Auto-deploy on Git push to main
Backend: Manual deploy via script (controlled releases)


πŸ“Š Deployment Metrics

Typical Deployment Times

ServiceLocal TestDeployDomain MapTotal
Backend2 min8 min20 min~30 min
Frontend1 min5 min10 min~16 min
Docs1 min5 min10 min~16 min
Total~60 min

Parallel Deployment: Can reduce to ~35 minutes if backend and frontend deployed simultaneously


🎯 Next Steps

Now that you understand the deployment workflow, review the specific implementation steps for the clean URL migration:

Platform

Documentation

Community

Support

partnership@altsportsdata.comdev@altsportsleagues.ai

2025 Β© AltSportsLeagues.ai. Powered by AI-driven sports business intelligence.

πŸ€– AI-Enhancedβ€’πŸ“Š Data-Drivenβ€’βš‘ Real-Time