Architecture
Internal Infrastructure

Internal Infrastructure Details

🚫

πŸ”’ INTERNAL USE ONLY - This page contains sensitive infrastructure information. Do not share externally or include in public documentation.

Detailed infrastructure configuration, credentials management, and internal deployment procedures for team members only.

πŸ” Complete Infrastructure Map


πŸ—οΈ Credentials & Access

Account Access Matrix

ServiceAccount EmailAccess Level2FAPassword Manager
GoDaddyadmin@altsportsdata.comOwnerβœ…1Password: GoDaddy
Cloudflareadmin@altsportsdata.comSuper Adminβœ…1Password: Cloudflare
Google Cloudassistant@altsportsdata.comOwnerβœ…1Password: GCP
Verceladmin@altsportsdata.comOwnerβœ…1Password: Vercel
Supabaseadmin@altsportsdata.comOwnerβœ…1Password: Supabase
Neo4jadmin@altsportsdata.comAdminβœ…1Password: Neo4j
Firebaseassistant@altsportsdata.comOwnerβœ…1Password: Firebase
n8n Cloudadmin@altsportsdata.comOwnerβœ…1Password: n8n

API Keys Storage

Google Cloud Secret Manager:

Secret NameUsed ByRotation Schedule
OPENAI_API_KEYBackend APIEvery 90 days
ANTHROPIC_API_KEYBackend APIEvery 90 days
SUPABASE_SERVICE_ROLE_KEYBackend APIYearly
NEO4J_PASSWORDBackend APIYearly
FIREBASE_ADMIN_SDKBackend APINever (rotate if compromised)

Access Secrets:

# List all secrets
gcloud secrets list --project altsportsdata-102243
 
# Get specific secret value (requires permission)
gcloud secrets versions access latest \
  --secret="OPENAI_API_KEY" \
  --project altsportsdata-102243
 
# Add new secret
gcloud secrets create NEW_SECRET_NAME \
  --data-file=- \
  --project altsportsdata-102243
 
# Update secret
echo -n "new-secret-value" | gcloud secrets versions add NEW_SECRET_NAME \
  --data-file=- \
  --project altsportsdata-102243

πŸ—οΈ Google Cloud Project Structure

Project: altsportsdata-102243

Service Accounts

Active Service Accounts:

  1. Cloud Run Service Account

    • Email: xxx@altsportsdata-102243.iam.gserviceaccount.com
    • Roles: Cloud Run Service Agent, Secret Manager Accessor
    • Used for: Backend API runtime
  2. Deployment Service Account

    • Email: deployment@altsportsdata-102243.iam.gserviceaccount.com
    • Roles: Cloud Run Admin, Storage Admin, Container Registry Writer
    • Used for: CI/CD deployments
  3. Firebase Admin SDK

    • Email: firebase-adminsdk-xxx@altsportsdata-102243.iam.gserviceaccount.com
    • Roles: Firebase Admin
    • Used for: Backend Firebase operations

Key Files (DO NOT COMMIT TO GIT):

  • service-account-keys/cloud-run-sa.json
  • service-account-keys/deployment-sa.json
  • service-account-keys/firebase-admin-sdk.json

πŸ’Ύ Database Connection Strings

Production Database URIs

🚫

NEVER commit these to Git! Store in Secret Manager or 1Password.

Neo4j AuraDB:

# Connection URI (store in Secret Manager)
NEO4J_URI=neo4j+s://xxx.databases.neo4j.io
NEO4J_USER=neo4j
NEO4J_PASSWORD=<stored-in-secret-manager>
 
# Database Name
NEO4J_DATABASE=altsportsleagues
 
# Region
REGION=us-east-1

Supabase:

# Project
SUPABASE_PROJECT_ID=vljfrdsqtmdujhoxwtig
SUPABASE_URL=https://vljfrdsqtmdujhoxwtig.supabase.co
 
# Keys (store in Secret Manager)
SUPABASE_ANON_KEY=<public-anon-key>
SUPABASE_SERVICE_ROLE_KEY=<secret-service-role-key>
 
# Database Direct Connection
DATABASE_URL=postgresql://postgres.<project-ref>:<password>@aws-0-us-east-1.pooler.supabase.com:5432/postgres

Firebase:

# Project
FIREBASE_PROJECT_ID=altsportsdata-102243
 
# Config (frontend - can be public)
NEXT_PUBLIC_FIREBASE_API_KEY=<firebase-api-key>
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=altsportsdata-102243.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=altsportsdata-102243
 
# Admin SDK (backend - MUST be secret)
GOOGLE_APPLICATION_CREDENTIALS=/path/to/firebase-admin-sdk.json

Redis (Optional):

# If using Redis Cloud or self-hosted
REDIS_URL=redis://:<password>@redis-12345.c123.us-east-1-2.ec2.cloud.redislabs.com:12345

Connection Diagram


πŸ”§ Internal Deployment Configuration

Cloud Run Service Configuration

Full Configuration (actual production values):

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: altsportsleagues-backend
  namespace: 'altsportsdata-102243'
  labels:
    cloud.googleapis.com/location: us-central1
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/minScale: '0'
        autoscaling.knative.dev/maxScale: '10'
        run.googleapis.com/cpu-throttling: 'false'
        run.googleapis.com/startup-cpu-boost: 'true'
    spec:
      containerConcurrency: 80
      timeoutSeconds: 300
      serviceAccountName: 'cloud-run-sa@altsportsdata-102243.iam.gserviceaccount.com'
      containers:
      - image: gcr.io/altsportsdata-102243/altsportsleagues-backend:latest
        ports:
        - name: http1
          containerPort: 8080
        env:
        - name: PORT
          value: '8080'
        - name: GOOGLE_CLOUD_PROJECT
          value: 'altsportsdata-102243'
        - name: OPENAI_API_KEY
          valueFrom:
            secretKeyRef:
              name: OPENAI_API_KEY
              key: latest
        - name: ANTHROPIC_API_KEY
          valueFrom:
            secretKeyRef:
              name: ANTHROPIC_API_KEY
              key: latest
        resources:
          limits:
            cpu: '2000m'
            memory: '4Gi'
          requests:
            cpu: '1000m'
            memory: '2Gi'

Vercel Project IDs

Frontend Project:

Project ID: prj_abc123xyz (not public)
Team: altsportsdata-team
Git Repository: github.com/altsportsleagues/frontend (private)
Production Branch: main
Preview Branches: All branches

Docs Project:

Project ID: prj_def456uvw (not public)
Team: altsportsdata-team
Git Repository: github.com/altsportsleagues/docs (private)
Production Branch: main

πŸ”‘ Secret Management Architecture

Secret Hierarchy

Secret Rotation Schedule

SecretCurrent RotationLast RotatedNext DueOwner
OpenAI API Key90 days2025-11-012026-01-30Tech Lead
Anthropic Key90 days2025-11-012026-01-30Tech Lead
Supabase Service Role365 days2025-01-152026-01-15DevOps
Neo4j Password365 days2025-03-012026-03-01DevOps
Firebase Admin SDKAs needed2024-10-15-Tech Lead
n8n API Token180 days2025-10-012026-04-01DevOps

Rotation Procedure:

# 1. Generate new key in platform (OpenAI, Anthropic, etc.)
# 2. Add to Secret Manager
gcloud secrets versions add OPENAI_API_KEY \
  --data-file=new-key.txt \
  --project altsportsdata-102243
 
# 3. Verify new version
gcloud secrets versions list OPENAI_API_KEY
 
# 4. Redeploy service (picks up latest automatically)
./deploy-all.sh  # Option 2
 
# 5. Test new key works
curl https://api.altsportsleagues.ai/health
 
# 6. Deactivate old key in platform (OpenAI dashboard)
# 7. Document rotation in 1Password

🌐 Network & Firewall Configuration

Cloudflare Firewall Rules

Active Rules:

Rule Configuration:

  1. Rate Limiting

    • api.altsportsleagues.ai: 100 requests/minute per IP
    • altsportsleagues.ai: 500 requests/minute per IP
    • docs.altsportsleagues.ai: No limit (static content)
  2. Geo-Blocking (if enabled)

    • Block high-risk countries (based on analytics)
    • Allow-list known VPN IPs for remote team
  3. Bot Management

    • JavaScript challenge for suspected bots
    • Allow verified bots (Google, Bing crawlers)
    • Block known malicious bots
  4. WAF Rules

    • SQL injection protection
    • XSS prevention
    • Path traversal blocking
    • OWASP Top 10 protection

πŸ“Š Internal Monitoring Dashboards


πŸ”§ Advanced Configuration

Cloud Build Trigger Configuration

GitHub Integration:

# cloudbuild-trigger.yaml (internal reference)
name: altsportsleagues-backend-deploy
description: Auto-deploy backend on main branch push
 
trigger:
  github:
    owner: altsportsleagues
    name: backend
    push:
      branch: ^main$
 
build:
  steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/altsportsdata-102243/altsportsleagues-backend', '.']
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/altsportsdata-102243/altsportsleagues-backend']
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: gcloud
    args:
    - 'run'
    - 'deploy'
    - 'altsportsleagues-backend'
    - '--image=gcr.io/altsportsdata-102243/altsportsleagues-backend'
    - '--region=us-central1'
    - '--platform=managed'
    
timeout: 1200s
options:
  machineType: 'E2_HIGHCPU_8'

VPC Connector (If Using Private Resources)

# Create VPC connector for private database access
gcloud compute networks vpc-access connectors create altsportsleagues-connector \
  --network default \
  --region us-central1 \
  --range 10.8.0.0/28
 
# Update Cloud Run to use connector
gcloud run services update altsportsleagues-backend \
  --vpc-connector altsportsleagues-connector \
  --vpc-egress all-traffic \
  --region us-central1

Network Diagram:


🚨 Emergency Contacts & Procedures

🚫

Emergency Response Team

Incident Response

RoleNameContactResponsibility
Tech Lead(Your Name)tech-lead@altsportsdata.comArchitecture, Backend
DevOps(DevOps Name)devops@altsportsdata.comInfrastructure, Deployment
Frontend Lead(Frontend Name)frontend@altsportsdata.comFrontend, UI/UX
On-CallRotationoncall@altsportsdata.com24/7 Incident Response

Escalation Path

Incident Response Playbook:

  1. Detect - Monitoring alert or user report
  2. Assess - Determine severity (P0-P3)
  3. Alert - Notify appropriate team members
  4. Mitigate - Immediate action to reduce impact
  5. Investigate - Root cause analysis
  6. Fix - Implement permanent solution
  7. Document - Post-mortem report
  8. Improve - Prevent recurrence

πŸ’° Internal Cost Tracking

Monthly Cost Breakdown (Actual)

Current Month Spending:

Google Cloud Platform:
β”œβ”€ Cloud Run:              $23.45
β”œβ”€ Cloud Storage:          $2.15
β”œβ”€ Cloud Logging:          $5.30
β”œβ”€ Networking (egress):    $1.20
└─ Total GCP:              $32.10

Vercel:
β”œβ”€ Pro Plan:               $20.00
β”œβ”€ Bandwidth Overage:      $0.00
└─ Total Vercel:           $20.00

Databases:
β”œβ”€ Neo4j AuraDB:           $65.00
β”œβ”€ Supabase Pro:           $25.00
β”œβ”€ Firebase:               $8.45
└─ Total Databases:        $98.45

Other Services:
β”œβ”€ Cloudflare:             $0.00 (Free)
β”œβ”€ n8n Cloud:              $20.00
β”œβ”€ Domain (GoDaddy):       $1.25/month
└─ Total Other:            $21.25

━━━━━━━━━━━━━━━━━━━━━━━━
TOTAL MONTHLY:             $171.80

Cost Optimization Opportunities:

  • βœ… Already using scale-to-zero (Cloud Run)
  • βœ… Already on Cloudflare free tier
  • ⚠️ Neo4j could be optimized with better query patterns
  • ⚠️ Consider committed use discounts for GCP (save 37%)

πŸ” Internal Analytics & Business Intelligence

Real Usage Metrics (Last 30 Days)

API Request Distribution:

EndpointShare
GET /v1/leagues45%
GET /v1/teams25%
GET /v1/players15%
POST /v1/process-questionnaire8%
Other endpoints7%

User Geographic Distribution:

RegionShare
United States60%
Canada15%
Europe12%
Asia8%
Other5%

Traffic Patterns:

Peak Hours: 12PM-6PM EST
Lowest Traffic: 11PM-8AM EST
Best Deploy Window: 10PM-11PM EST (Sunday-Thursday)


πŸ”’ Security Reminder

  • ❌ Never share this page externally
  • ❌ Never commit credentials to Git
  • ❌ Never send secrets via email/Slack
  • βœ… Always use Secret Manager for production
  • βœ… Always rotate keys on schedule
  • βœ… Always use 2FA on all accounts
  • βœ… Always document access changes

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