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
```bash
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:
```bash
export FIREBASE_CREDENTIALS_PATH=/path/to/your/firebase-credentials.json
```
### 3. Run the API
```bash
uvicorn app.main:app --reload --port 7860
```
The API will be available at `http://localhost:7860`
## Docker Setup
### 1. Build the Docker Image
```bash
docker build -t colorize-api .
```
### 2. Run the Container
```bash
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
```bash
# 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:
```dockerfile
# 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
```bash
git remote add origin https://huggingface.co/spaces/LogicGoInfotechSpaces/Colorize
git push -u origin main
```
## Testing the API
### Health Check
```bash
curl http://localhost:7860/health
```
### Upload Image (with App Check token)
```bash
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)
```bash
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
```javascript
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)