File size: 3,649 Bytes
d790e98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Deployment Guide: Hugging Face Spaces

This guide will help you deploy your **Prism** application to Hugging Face Spaces using Docker.

## Prerequisites

1.  A [Hugging Face account](https://huggingface.co/join).
2.  Git installed on your computer.

## Step 1: Create a New Space

1.  Go to [huggingface.co/new-space](https://huggingface.co/new-space).
2.  **Space Name**: Enter a name (e.g., `prism-classifier`).
3.  **License**: Choose a license (e.g., MIT) or leave blank.
4.  **SDK**: Select **Docker**.
5.  **Space Hardware**: Select **CPU Basic (Free)** (or upgrade if you need more power for AI models).
6.  **Visibility**: Public or Private.
7.  Click **Create Space**.

## Step 2: Setup Git for Deployment

You need to link your local project to the Hugging Face Space.

1.  Open your terminal in the project root (`d:\My Stuff\Coding Projects\Prism`).
2.  Initialize Git (if not already done):
    ```bash
    git init
    ```
3.  Add the Hugging Face remote (replace `YOUR_USERNAME` and `SPACE_NAME`):
    ```bash
    git remote add space https://huggingface.co/spaces/YOUR_USERNAME/SPACE_NAME
    ```

## Step 3: Prepare Files (Already Done!)

I have already configured the necessary files for you:
*   **`Dockerfile`**: Builds the React frontend and sets up the Python backend.
*   **`app.py`**: Configured to run on port 7860 (required by HF Spaces).
*   **`requirements.txt`**: Lists all Python dependencies.

## Step 4: Deploy

To deploy, simply commit your changes and push to the `space` remote.

1.  **Add files**:
    ```bash
    git add .
    ```
2.  **Commit**:
    ```bash
    git commit -m "Initial deploy to Hugging Face"
    ```
3.  **Push**:
    ```bash
    git push space master:main
    ```
    *(Note: HF Spaces usually use `main` branch. If your local branch is `master`, use `master:main`. If local is `main`, just `git push space main`)*.

    > **IMPORTANT: Authentication**
    > When asked for your **Username**, enter your Hugging Face username.
    > When asked for your **Password**, you MUST enter an **Access Token**, not your account password.
    >
    > **How to get a Token:**
    > 1. Go to [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens).
    > 2. Click **Create new token**.
    > 3. Type: **Write**. Name: "Deploy".
    > 4. Copy the token (starts with `hf_...`).
    > 5. Paste this token when the terminal asks for your password.
    >
    > **Troubleshooting: "Updates were rejected"**
    > If you see an error saying "Updates were rejected", it means your Space already has a `README.md` that you don't have locally.
    > For the **first push only**, you can force overwrite it:
    > ```bash
    > git push --force space master:main
    > ```
    >
    > **Troubleshooting: "File larger than 10MB"**
    > If you see an error about `static/background.mp3` being too large, you need **Git LFS**:
    > ```bash
    > git lfs install
    > git lfs track "static/background.mp3"
    > git add .gitattributes
    > git commit --amend --no-edit
    > git push --force space master:main
    > ```

## Step 5: Future Updates

To reflect future changes on the live site:

1.  Make your changes in the code.
2.  Run:
    ```bash
    git add .
    git commit -m "Update description"
    git push space master:main
    ```
    
The Space will automatically rebuild and update!

## Troubleshooting

*   **Build Failures**: Check the "Logs" tab in your Hugging Face Space to see why the build failed.
*   **Large Files**: If you have large model files (>10MB), you might need to use `git lfs`. However, your models seem to be downloaded at runtime, so this shouldn't be an issue.