FocusFlow / deployment_guide.md
immortalindeed's picture
Professionalize UI and docs: Remove emojis and refine deployment guide
88dacfe
# Deploying to Hugging Face Spaces (Option A)
Hugging Face Spaces is the best free option for FocusFlow because it supports Docker, allowing us to compile the C++ module in the cloud.
## Step 1: Create the Space
1. Go to [Hugging Face Spaces](https://huggingface.co/spaces).
2. Click **"Create new Space"**.
3. Name your space (e.g., `FocusFlow`).
4. Select **Docker** as the SDK.
5. Choose **"Blank"** template.
6. Set visibility to **Public** or **Private**.
7. Click **Create Space**.
## Step 2: Push your code
Since your code is already on GitHub, you can either:
### Method A: Connect GitHub (Easiest)
1. On your new Space page, go to the **Settings** tab (top right).
2. Scroll down to the **"Connected Repository"** or **"Github Repository"** section.
3. If you don't see your repo, click **"Connect your GitHub"** to authorize Hugging Face.
4. Select your `kush-rc/FocusFlow` repository from the list.
5. Hugging Face will automatically build and deploy whenever you push to GitHub.
> [!NOTE]
> If you still can't see the "Connected Repository" section, it might be because the Space was created as a "Standard" Space. Make sure you selected **Docker** as the SDK during creation.
### Method B: Manually Push via Git
1. Get the Git URL of your Space (ends in `.git`).
2. Add it as a new remote:
```bash
git remote add hf https://huggingface.co/spaces/YOUR_USERNAME/FocusFlow
```
3. Push to Hugging Face:
```bash
git push -f hf main
```
## Step 3: Monitoring the Build
- Once pushed, go to the **"Logs"** tab in your Space.
- You will see the Docker image building and the C++ module compiling.
- Once finished, the Status will change to **"Running"**.
## Important Notes
- **Port**: Hugging Face requires the app to listen on port `7860`. The `Dockerfile` and `main.py` are already configured for this.
- **Webcam**: Ensure your site is accessed via `https` (Hugging Face provides this automatically) so the browser allows camera access.