code-generation-system / DEPLOYMENT.md
purav-2008's picture
Publishing to public space for live url
d0fdbcd
|
Raw History Blame Contribute Delete
7.47 kB

Deployment Guide

Quick Deployment Options

Option 1: Replit (Easiest - FREE)

  1. Create Account: https://replit.com/signup
  2. Create New Project: Click "Create" β†’ "Import from GitHub"
  3. Enter Repository URL: Paste your GitHub repo URL
  4. Deploy:
    pip install -r requirements.txt
    python web/app.py
    
  5. Access: Replit will provide a live URL (e.g., https://project-name.replit.dev)

Option 2: Railway (FREE tier available)

  1. Create Account: https://railway.app
  2. Connect Repository: Click "Create Project" β†’ "Deploy from GitHub"
  3. Select Your Repo: Choose the AI code generation repo
  4. Add Environment Variables (if using LLM):
    • Key: ANTHROPIC_API_KEY
    • Value: Your API key
  5. Deploy: Railway auto-deploys on push
  6. Get URL: Check "Deployments" for live URL

Option 3: Heroku (Paid but easy)

  1. Create Account: https://heroku.com
  2. Install Heroku CLI: https://devcenter.heroku.com/articles/heroku-cli
  3. Create App:
    heroku login
    heroku create your-app-name
    
  4. Deploy:
    git push heroku main
    
  5. Get URL: https://your-app-name.herokuapp.com

Option 4: Google Cloud Run (Pay-per-use)

  1. Setup:

    gcloud auth login
    gcloud config set project your-project-id
    
  2. Create Dockerfile:

    FROM python:3.9-slim
    WORKDIR /app
    COPY . .
    RUN pip install -r requirements.txt
    EXPOSE 5000
    CMD ["python", "web/app.py"]
    
  3. Deploy:

    gcloud run deploy code-gen \
      --source . \
      --platform managed \
      --region us-central1
    
  4. Get URL: GCP will provide a live URL


Local Deployment (for testing)

Prerequisites

  • Python 3.8+
  • Git

Steps

  1. Clone Repository

    git clone https://github.com/your-username/ai-code-gen.git
    cd ai-code-gen
    
  2. Install Dependencies

    pip install -r requirements.txt
    
  3. Set Environment Variables (Optional)

    export ANTHROPIC_API_KEY="your-api-key"  # For LLM features
    
  4. Run Server

    python web/app.py
    
  5. Access

    http://localhost:5000
    

Production Deployment (Best Practices)

1. Use Gunicorn

pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 web.app

2. Use Environment Variables

Create .env file:

ANTHROPIC_API_KEY=your-key
FLASK_ENV=production

3. Add SSL/HTTPS

Use a reverse proxy (Nginx, Cloudflare)

4. Enable Logging

# In web/app.py
import logging
logging.basicConfig(level=logging.INFO)

5. Add Rate Limiting

from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

limiter = Limiter(
    app=app,
    key_func=get_remote_address,
    default_limits=["200 per day", "50 per hour"]
)

Docker Deployment

Dockerfile

FROM python:3.9-slim

WORKDIR /app

# Copy requirements and install
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy application
COPY . .

# Expose port
EXPOSE 5000

# Run with gunicorn for production
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "web.app"]

Build and Run

# Build image
docker build -t code-gen:latest .

# Run container
docker run -p 5000:5000 code-gen:latest

# Access
open http://localhost:5000

Docker Compose

version: '3.8'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    environment:
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
    restart: unless-stopped

Run with:

docker-compose up

Monitoring & Logging

Application Logging

import logging

logger = logging.getLogger(__name__)

@app.route('/api/generate', methods=['POST'])
def generate():
    logger.info("Generation request received")
    try:
        # ... generation code ...
        logger.info("Generation successful")
    except Exception as e:
        logger.error(f"Generation failed: {e}")
    
    return jsonify(...)

Health Check

The API includes a health endpoint:

curl https://your-app.com/api/health

Returns:

{
  "status": "healthy",
  "timestamp": "2026-05-06T07:52:40.123456",
  "total_requests": 42
}

Performance Optimization

1. Enable Caching

from functools import lru_cache

@lru_cache(maxsize=128)
def extract_intent(prompt):
    # Intent extraction is cached
    return ...

2. Use Connection Pooling

# For database connections (future)
pool = create_engine(
    'postgresql://...',
    poolclass=StaticPool,
    pool_size=20
)

3. Enable Compression

from flask_compress import Compress
Compress(app)

4. Use CDN

Deploy static files to CDN (Cloudflare, AWS CloudFront)


Troubleshooting

Port Already in Use

# Windows
netstat -ano | findstr :5000
taskkill /PID <PID> /F

# Linux/Mac
lsof -i :5000
kill -9 <PID>

Module Not Found

pip install --upgrade pip
pip install -r requirements.txt

API Timeout

Increase timeout in production:

app.config['REQUEST_TIMEOUT'] = 60  # seconds

Memory Issues

Use rule-based generation:

pipeline = Pipeline(use_llm=False)  # Lower memory usage

Continuous Deployment (CD)

GitHub Actions

Create .github/workflows/deploy.yml:

name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-python@v2
        with:
          python-version: 3.9
      - run: pip install -r requirements.txt
      - run: pytest  # If tests exist
      - uses: AkhileshNS/heroku-deploy@v3.12.12
        with:
          heroku_api_key: ${{secrets.HEROKU_API_KEY}}
          heroku_app_name: "your-app-name"
          heroku_email: "your-email@example.com"

Push to Deploy

git push origin main
# Automatically deploys!

Monitoring Checklist

  • Health endpoint working
  • Error logging enabled
  • Performance monitored
  • API rate limits set
  • SSL/HTTPS enabled (production)
  • Environment variables secured
  • Backups configured
  • Alerts setup

Cost Estimates

Platform Free Tier Paid Tier
Replit βœ… Yes $7/mo
Railway βœ… Yes (10 GB) $5/mo+
Heroku βœ… (limited) $7-50/mo
Google Cloud Run βœ… ($11 free) $0.00002/req
Vercel βœ… (serverless) $20/mo

Recommendation: Start with Replit (free, easiest)


Live URL Examples

After deployment, you'll have URLs like:

  • Replit: https://ai-code-gen.replit.dev
  • Railway: https://ai-code-gen-production.up.railway.app
  • Heroku: https://ai-code-gen.herokuapp.com
  • Cloud Run: https://code-gen-xyz.run.app

Testing Live Deployment

# Test health
curl https://your-app-url/api/health

# Test generation
curl -X POST https://your-app-url/api/generate \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Build a todo app"}'

# Test example
curl https://your-app-url/api/example

Support

For deployment issues:

  1. Check platform-specific documentation
  2. Review application logs
  3. Test locally first
  4. Use health endpoint for diagnostics

Choose your deployment platform and go live! πŸš€