# Running Sales Dashboard in Different Modes

The Sales Dashboard supports two operational modes:

## 1. DEVELOPMENT MODE (Default)
**For local development on your machine**

### How to Run:

**Option A - PowerShell (Recommended on Windows):**
```powershell
.\run_dev.ps1
```

**Option B - Command Prompt:**
```cmd
run_dev.bat
```

**Option C - Manual (any terminal):**
```bash
set FLASK_MODE=development
python app.py
```

**Configuration:**
- URL: `http://localhost:5000`
- Accessible: Only from your machine
- Google OAuth: Configured for `http://localhost:5000/oauth2callback`
- Host: `localhost` (only local connections)

---

## 2. PRODUCTION MODE
**For public deployment (sales.globalerc.pt)**

### How to Run:

**Option A - PowerShell (Recommended on Windows):**
```powershell
.\run_prod.ps1
```

**Option B - Command Prompt:**
```cmd
run_prod.bat
```

**Option C - Manual (any terminal):**
```bash
set FLASK_MODE=production
python app.py
```

**Configuration:**
- URL: `https://sales.globalerc.pt`
- Accessible: From anywhere (public)
- Google OAuth: Must be configured for `https://sales.globalerc.pt/oauth2callback` in Google Cloud Console
- Host: `0.0.0.0` (all interfaces - for reverse proxy)

### Production Setup Requirements:

1. **SSL Certificate**
   - Obtain SSL certificate for `sales.globalerc.pt`
   - Use Let's Encrypt (free) or your preferred provider

2. **Reverse Proxy (nginx or Apache)**
   - Handle HTTPS/SSL termination
   - Forward requests to Flask on `http://127.0.0.1:5000`
   
   **Example nginx config:**
   ```nginx
   server {
       listen 443 ssl http2;
       server_name sales.globalerc.pt;
       
       ssl_certificate /path/to/certificate.crt;
       ssl_certificate_key /path/to/key.key;
       
       location / {
           proxy_pass http://127.0.0.1:5000;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
   }
   ```

3. **Update Google OAuth**
   - Add `https://sales.globalerc.pt/oauth2callback` to authorized redirect URIs
   - Remove `http://localhost:5000/oauth2callback` if not needed

4. **Domain DNS**
   - Point `sales.globalerc.pt` DNS to your server IP

---

## Quick Switch Between Modes

- **Development:** `run_dev.ps1` or `run_dev.bat`
- **Production:** `run_prod.ps1` or `run_prod.bat`

The Flask app will display the current mode on startup:
```
[CONFIG] Running in DEVELOPMENT mode → localhost:5000
```
or
```
[CONFIG] Running in PRODUCTION mode → sales.globalerc.pt
```

---

## Environment Variables

You can also control the mode via environment variables:

```bash
# Development
set FLASK_MODE=development
python app.py

# Production
set FLASK_MODE=production
python app.py
```

**Default:** `development` (if FLASK_MODE not set)
