LogicGoInfotechSpaces's picture
Initial commit: Colorize API with Firebase App Check integration
60c56d7
|
raw
history blame
4.94 kB

Setup Guide for Colorize API

Prerequisites

  1. Python 3.10+
  2. Docker (for containerized deployment)
  3. Firebase Admin SDK credentials file
  4. Hugging Face account with access to the Colorize Space

Local Development Setup

1. Install Dependencies

pip install -r requirements.txt

2. Firebase Credentials

Copy your Firebase Admin SDK JSON file to the project root:

  • Source: C:\Colorize\colorize-662df-firebase-adminsdk-fbsvc-e080668793.json
  • Destination: colorize-662df-firebase-adminsdk-fbsvc-e080668793.json

Or set the path in environment variable:

export FIREBASE_CREDENTIALS_PATH=/path/to/your/firebase-credentials.json

3. Run the API

uvicorn app.main:app --reload --port 7860

The API will be available at http://localhost:7860

Docker Setup

1. Build the Docker Image

docker build -t colorize-api .

2. Run the Container

docker run -p 7860:7860 \
  -v $(pwd)/colorize-662df-firebase-adminsdk-fbsvc-e080668793.json:/app/colorize-662df-firebase-adminsdk-fbsvc-e080668793.json \
  -e BASE_URL=http://localhost:7860 \
  colorize-api

Hugging Face Spaces Deployment

1. Prepare Your Repository

# Initialize git repository
git init
git add .
git commit -m "Initial commit: Colorize API with Firebase App Check"

2. Set Up Hugging Face Space

  1. Go to https://huggingface.co/spaces/LogicGoInfotechSpaces/Colorize
  2. If the space doesn't exist, create a new Docker space

3. Add Firebase Credentials as Secret

In Hugging Face Space settings:

  1. Go to Settings → Secrets
  2. Add a new secret:
    • Name: FIREBASE_CREDENTIALS
    • Value: Contents of your Firebase Admin SDK JSON file

4. Update Dockerfile for Secrets (if needed)

The Dockerfile will automatically use the credentials file if it exists. For Hugging Face Spaces, you may need to create the file from secrets:

# Add this to Dockerfile if using HF secrets
RUN echo "$FIREBASE_CREDENTIALS" > colorize-662df-firebase-adminsdk-fbsvc-e080668793.json || true

5. Push to Hugging Face

git remote add origin https://huggingface.co/spaces/LogicGoInfotechSpaces/Colorize
git push -u origin main

Testing the API

Health Check

curl http://localhost:7860/health

Upload Image (with App Check token)

curl -X POST http://localhost:7860/upload \
  -H "X-Firebase-AppCheck: YOUR_APP_CHECK_TOKEN" \
  -F "file=@path/to/image.jpg"

Colorize Image (with App Check token)

curl -X POST http://localhost:7860/colorize \
  -H "X-Firebase-AppCheck: YOUR_APP_CHECK_TOKEN" \
  -F "file=@path/to/grayscale_image.jpg"

Frontend Integration

Initialize Firebase App Check

import { initializeApp } from "firebase/app";
import { initializeAppCheck, ReCaptchaEnterpriseProvider } from "firebase/app-check";

const firebaseConfig = {
  apiKey: "AIzaSyBIB6rcfyyqy5niERTXWvVD714Ter4Vx68",
  authDomain: "colorize-662df.firebaseapp.com",
  projectId: "colorize-662df",
  storageBucket: "colorize-662df.firebasestorage.app",
  messagingSenderId: "69166278311",
  appId: "1:69166278311:web:0e8c50b8dd8627aaeadd82",
  measurementId: "G-58CC2J8XKX"
};

const app = initializeApp(firebaseConfig);

// Initialize App Check
const appCheck = initializeAppCheck(app, {
  provider: new ReCaptchaEnterpriseProvider('YOUR_RECAPTCHA_SITE_KEY'),
  isTokenAutoRefreshEnabled: true
});

// Get token and make API call
async function colorizeImage(imageFile) {
  const token = await appCheck.getToken();
  
  const formData = new FormData();
  formData.append('file', imageFile);
  
  const response = await fetch('https://your-space.hf.space/colorize', {
    method: 'POST',
    headers: {
      'X-Firebase-AppCheck': token.token
    },
    body: formData
  });
  
  const result = await response.json();
  console.log('Colorized image URL:', result.download_url);
  return result;
}

Troubleshooting

Model Loading Issues

If the ColorizeNet model fails to load:

  1. Check your internet connection (model downloads from Hugging Face)
  2. Verify you have sufficient disk space
  3. Check logs for specific error messages

Firebase App Check Issues

If App Check verification fails:

  1. Verify your Firebase credentials file is correct
  2. Check that App Check is enabled in Firebase Console
  3. Ensure the token is being sent in the X-Firebase-AppCheck header

Port Issues

Hugging Face Spaces uses port 7860 by default. Make sure your Dockerfile exposes this port.

Environment Variables

  • FIREBASE_CREDENTIALS_PATH: Path to Firebase Admin SDK JSON file
  • ENABLE_APP_CHECK: Enable/disable Firebase App Check (true/false)
  • BASE_URL: Base URL for generating download URLs
  • PORT: Port to run the API on (default: 7860)
  • MODEL_ID: Hugging Face model ID (default: rsortino/ColorizeNet)
  • NUM_INFERENCE_STEPS: Number of inference steps (default: 20)