Spaces:
Running
Running
| # Deployment Configuration Guide | |
| ## Environment Variables | |
| For a secure production deployment, you must set the following environment variables. | |
| ### 1. Frontend (Next.js) | |
| These variables should be set in your Vercel project settings or `.env.production`. | |
| | Variable | Description | Example Value | | |
| |----------|-------------|---------------| | |
| | `NEXTAUTH_URL` | The canonical URL of your site | `https://your-app.com` | | |
| | `NEXTAUTH_SECRET` | A random string used to hash tokens | `openssl rand -base64 32` | | |
| | `GOOGLE_CLIENT_ID` | OAuth Client ID from Google Cloud | `123...apps.googleusercontent.com` | | |
| | `GOOGLE_CLIENT_SECRET` | OAuth Client Secret from Google Cloud | `GOCSPX-...` | | |
| | `INTERNAL_API_KEY` | **CRITICAL**: Shared secret to talk to Python backend | `long-random-string-shared-with-backend` | | |
| | `PYTHON_API_URL` | URL of your deployed Python backend | `https://api.your-app.com` | | |
| | `DATABASE_URL` | Connection string for your production DB (e.g., Postgres) | `postgresql://user:pass@host:5432/db` | | |
| > **Note on Database**: Currently, the app uses SQLite (`file:./dev.db`). For production, you should switch the `provider` in `prisma/schema.prisma` to `postgresql` or `mysql` and use a real database URL. | |
| ### 2. Backend (Python / FastAPI) | |
| These variables should be set in your backend hosting service (e.g., Railway, Render, AWS). | |
| | Variable | Description | Example Value | | |
| |----------|-------------|---------------| | |
| | `INTERNAL_API_KEY` | **CRITICAL**: Must match the Frontend key exactly | `long-random-string-shared-with-backend` | | |
| | `OPENAI_API_KEY` | For generating animation code | `sk-...` | | |
| | `ELEVENLABS_API_KEY` | For generating voiceovers | `...` | | |
| | `ANTHROPIC_API_KEY` | (Optional) If using Claude models | `sk-ant-...` | | |
| | `CODE_GEN_MODEL` | Model to use for code generation | `gpt-4o` or `claude-3-5-sonnet-20240620` | | |
| ## Security Checklist | |
| 1. [ ] **Generate a Strong `INTERNAL_API_KEY`**: Use `openssl rand -hex 32` to generate a secure key. Set this on BOTH frontend and backend. | |
| 2. [ ] **HTTPS Everywhere**: Ensure both your frontend and backend are served over HTTPS. | |
| 3. [ ] **Database**: Do not use SQLite in production if you have multiple server instances (serverless). Use a managed Postgres database (e.g., Supabase, Neon, Railway). | |
| 4. [ ] **CORS**: In `api_server.py`, update `allow_origins` to only allow your production frontend domain, not `*` or `localhost`. | |