ClassLens / chatkit /DEPLOY.md
chih.yikuan
πŸ”§ Fix OAuth: auto-detect redirect_uri + sync all ClassLens updates
e5c2788
# πŸš€ Deploy ClassLens to Hugging Face Spaces
## Prerequisites
1. Hugging Face account with access to [taboola-cz](https://huggingface.co/taboola-cz) organization
2. Git installed
3. OpenAI API key
## Step 1: Create the Space
### Option A: Via Hugging Face Web UI
1. Go to https://huggingface.co/new-space?owner=taboola-cz
2. Fill in:
- **Space name**: `examinsight`
- **License**: MIT
- **SDK**: Docker
- **Visibility**: Public (or Private)
3. Click "Create Space"
### Option B: Via Git
```bash
# Clone the empty space
git clone https://huggingface.co/spaces/taboola-cz/examinsight
cd examinsight
```
## Step 2: Push the Code
```bash
# From the examinsight-app/chatkit directory
cd /path/to/ClassLens/examinsight-app/chatkit
# Add HF as remote
git remote add hf https://huggingface.co/spaces/taboola-cz/examinsight
# Push to HF Spaces
git push hf main
```
Or copy files manually:
```bash
# Copy necessary files to the HF Space repo
cp -r backend frontend Dockerfile README.md .dockerignore /path/to/examinsight-space/
```
## Step 3: Configure Secrets
Go to your Space settings: https://huggingface.co/spaces/taboola-cz/examinsight/settings
Add these **Repository secrets**:
| Secret Name | Description | Required |
|-------------|-------------|----------|
| `OPENAI_API_KEY` | Your OpenAI API key | βœ… Yes |
| `ENCRYPTION_KEY` | Fernet key for token encryption | βœ… Yes |
| `GOOGLE_CLIENT_ID` | Google OAuth client ID | Optional |
| `GOOGLE_CLIENT_SECRET` | Google OAuth secret | Optional |
| `GOOGLE_REDIRECT_URI` | `https://taboola-cz-examinsight.hf.space/auth/callback` | Optional |
| `GMAIL_USER` | Gmail address for sending reports | Optional |
| `GMAIL_APP_PASSWORD` | Gmail App Password | Optional |
| `VITE_CHATKIT_API_DOMAIN_KEY` | ChatKit domain key | βœ… Yes |
### Generate Encryption Key
```bash
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
```
### Get ChatKit Domain Key
1. Go to https://platform.openai.com/settings/organization/security/domain-allowlist
2. Add domain: `taboola-cz-examinsight.hf.space`
3. Copy the generated domain key
## Step 4: Update Google OAuth (if using)
1. Go to [Google Cloud Console](https://console.cloud.google.com/apis/credentials)
2. Edit your OAuth 2.0 Client
3. Add to **Authorized redirect URIs**:
```
https://taboola-cz-examinsight.hf.space/auth/callback
```
4. Add to **Authorized JavaScript origins**:
```
https://taboola-cz-examinsight.hf.space
```
## Step 5: Deploy
The Space will automatically build when you push. Watch the build logs at:
https://huggingface.co/spaces/taboola-cz/examinsight/logs
## File Structure for HF Spaces
```
examinsight/
β”œβ”€β”€ Dockerfile # Multi-stage build
β”œβ”€β”€ README.md # Space config (YAML frontmatter)
β”œβ”€β”€ .dockerignore # Files to exclude from build
β”œβ”€β”€ backend/
β”‚ β”œβ”€β”€ pyproject.toml
β”‚ └── app/
β”‚ β”œβ”€β”€ main.py # FastAPI + static file serving
β”‚ β”œβ”€β”€ server.py # ChatKit agent
β”‚ └── ...
└── frontend/
β”œβ”€β”€ package.json
└── src/
└── ...
```
## Troubleshooting
### Build Failed
Check the build logs for errors:
- Missing dependencies β†’ Update `pyproject.toml`
- Node version issues β†’ Update Dockerfile
### ChatKit Not Working
1. Verify `OPENAI_API_KEY` is set in secrets
2. Verify `VITE_CHATKIT_API_DOMAIN_KEY` is set and valid
3. Check that domain is allowlisted in OpenAI dashboard
### Google OAuth Not Working
1. Verify redirect URI matches exactly
2. Check that test users are added (if app is in testing mode)
3. Verify Google Cloud APIs are enabled
### Static Files Not Serving
1. Check that frontend build succeeded (look for `/static/index.html` in container)
2. Verify `STATIC_DIR` path in `main.py`
## Local Testing with Docker
```bash
# Build the image
docker build -t examinsight .
# Run with env file
docker run -p 7860:7860 --env-file .env examinsight
# Open http://localhost:7860
```
## Updating the Space
```bash
# Make changes locally
# Commit and push
git add .
git commit -m "Update feature X"
git push hf main
```
The Space will automatically rebuild.
---
## Quick Reference
| URL | Description |
|-----|-------------|
| https://huggingface.co/spaces/taboola-cz/examinsight | Live Space |
| https://huggingface.co/spaces/taboola-cz/examinsight/settings | Settings & Secrets |
| https://huggingface.co/spaces/taboola-cz/examinsight/logs | Build & Runtime Logs |
| https://platform.openai.com/settings/organization/security/domain-allowlist | ChatKit Domain Keys |