|
Download SETUP.md from Seth0330/EMAILOUT: direct link, hf CLI and curl.
- Browser
- Download file 4.46 kB
-
https://huggingface.co/spaces/Seth0330/EMAILOUT/resolve/main/SETUP.md
- Command line
-
hf download hf://spaces/Seth0330/EMAILOUT/SETUP.md
-
curl -L -o SETUP.md https://huggingface.co/spaces/Seth0330/EMAILOUT/resolve/main/SETUP.md
4.46 kB
| # EMAILOUT Setup Guide | |
| ## Prerequisites | |
| 1. OpenAI API Key - Get one from https://platform.openai.com/api-keys | |
| ## Hugging Face Spaces Setup | |
| 1. **Create a new Space**: | |
| - Go to https://huggingface.co/spaces | |
| - Click "Create new Space" | |
| - Select "Docker" as the SDK | |
| - Name it "EMAILOUT" (or your preferred name) | |
| 2. **Add OpenAI API Key as Secret**: | |
| - Go to your Space Settings | |
| - Navigate to "Secrets" section | |
| - Add a new secret: | |
| - Key: `OPENAI_API_KEY` | |
| - Value: Your OpenAI API key | |
| 3. **Upload Files**: | |
| - Upload all project files to your Space | |
| - The Dockerfile will handle the build process | |
| 4. **Deploy**: | |
| - The Space will automatically build and deploy | |
| - Monitor the logs for any build errors | |
| ## Local Development | |
| 1. **Install Dependencies**: | |
| ```bash | |
| # Backend | |
| cd backend | |
| pip install -r requirements.txt | |
| # Frontend | |
| cd ../frontend | |
| npm install | |
| ``` | |
| 2. **Set Environment Variables**: | |
| ```bash | |
| export OPENAI_API_KEY=your_api_key_here | |
| ``` | |
| **Google Sign-In (optional)** β create an OAuth **Web application** client in [Google Cloud Console](https://console.cloud.google.com/apis/credentials) (APIs & Services β Credentials). Under **Authorized redirect URIs** add exactly: | |
| - Local (Vite dev): `http://localhost:5173/api/auth/google/callback` | |
| - Docker / Hugging Face / your public URL: `https://<your-host>/api/auth/google/callback` | |
| Then set: | |
| ```bash | |
| export GOOGLE_CLIENT_ID=... | |
| export GOOGLE_CLIENT_SECRET=... | |
| # Must match the redirect URI above (recommended for dev): | |
| export FRONTEND_ORIGIN=http://localhost:5173 | |
| # Or set the full callback explicitly: | |
| # export GOOGLE_REDIRECT_URI=http://localhost:5173/api/auth/google/callback | |
| # Strong random secret for signed session cookies (required in production): | |
| export SESSION_SECRET=$(openssl rand -hex 32) | |
| ``` | |
| For **Hugging Face Spaces**, set `FRONTEND_ORIGIN` to **`https://`**, e.g. `https://your-space.hf.space` (not `http://`). Googleβs OAuth policy rejects `http://` redirect URIs for public hosts; the **Authorized redirect URI** in Google Cloud must be the **https** callback, e.g. `https://your-space.hf.space/api/auth/google/callback`. | |
| For HTTPS deployments, also set `HTTPS_ONLY_COOKIES=1` and add your public origin to `CORS_ORIGINS` if the browser origin differs from the API host. | |
| **Multi-tenant / workspaces:** After sign-in, each user gets a workspace; the first user on an empty database becomes **admin** of the default workspace. Admins can **invite** others (Google accounts only) via the header; invitees open the link, then sign in with the **same email** as invited. **Smartlead webhook URL** must include your workspace id, e.g. `https://your-host/api/webhooks/smartlead?tenant_id=1` (replace `1` with your workspace id from the header switcher). | |
| 3. **Run Backend**: | |
| ```bash | |
| cd backend | |
| uvicorn app.main:app --reload --port 8000 | |
| ``` | |
| 4. **Run Frontend**: | |
| ```bash | |
| cd frontend | |
| npm run dev | |
| ``` | |
| ## Project Structure | |
| ``` | |
| EMAILOUT/ | |
| βββ backend/ | |
| β βββ app/ | |
| β β βββ __init__.py | |
| β β βββ main.py # FastAPI application | |
| β β βββ database.py # SQLite database models | |
| β β βββ models.py # Pydantic models | |
| β β βββ gpt_service.py # OpenAI GPT integration | |
| β βββ requirements.txt | |
| βββ frontend/ | |
| β βββ src/ | |
| β β βββ pages/ | |
| β β β βββ EmailSequenceGenerator.jsx | |
| β β βββ components/ | |
| β β β βββ upload/ | |
| β β β βββ products/ | |
| β β β βββ prompts/ | |
| β β β βββ sequences/ | |
| β β β βββ ui/ | |
| β β βββ ... | |
| β βββ package.json | |
| βββ Dockerfile | |
| βββ README.md | |
| ``` | |
| ## Features | |
| - β CSV Upload from Apollo | |
| - β Product Selection with Custom Products | |
| - β Prompt Template Editor | |
| - β GPT-Powered Sequence Generation | |
| - β Real-time Streaming Results | |
| - β CSV Export for Klenty/Outreach | |
| ## API Endpoints | |
| - `POST /api/upload-csv` - Upload CSV file | |
| - `POST /api/save-prompts` - Save prompt templates | |
| - `GET /api/generate-sequences` - Generate sequences (SSE stream) | |
| - `GET /api/download-sequences` - Download sequences as CSV | |
| ## Database | |
| SQLite database is stored at `/data/emailout.db` (persistent in HF Spaces). | |
| Uploaded files are stored at `/data/uploads/`. | |