# Podcast Checklist

Episode production tracker for *Verse by Verse with Nate*.

## Deploy

### 1. Build and push to GHCR

```bash
docker build -t ghcr.io/nmemmert/podcast-checklist:latest .
docker push ghcr.io/nmemmert/podcast-checklist:latest
```

### 2. On the Oracle Cloud VM

```bash
docker pull ghcr.io/nmemmert/podcast-checklist:latest
docker rm -f podcast-checklist 2>/dev/null || true
docker run -d \
  --name podcast-checklist \
  --restart unless-stopped \
  -p 3001:3000 \
  -v podcast-checklist-data:/data \
  ghcr.io/nmemmert/podcast-checklist:latest
```

> Uses port **3001** on the host so it doesn't clash with your existing site on 3000.
> Progress is saved to a named Docker volume (`podcast-checklist-data`) so it survives container restarts and re-deploys.

### 3. Cloudflare DNS

Add a CNAME record in Cloudflare:
- **Name:** `checklist` (or whatever subdomain you want)
- **Target:** `versebyversewithnate.us`
- **Proxy:** Enabled (orange cloud)

### 4. Cloudflare Tunnel or Nginx proxy

If you're using Nginx Proxy Manager or a Cloudflare Tunnel on the VM, add a rule to forward `checklist.versebyversewithnate.us` → `localhost:3001`.

---

## Update workflow

Same as your site:

```bash
# Local
docker build -t ghcr.io/nmemmert/podcast-checklist:latest .
docker push ghcr.io/nmemmert/podcast-checklist:latest

# SSH into VM
docker pull ghcr.io/nmemmert/podcast-checklist:latest
docker rm -f podcast-checklist
docker run -d \
  --name podcast-checklist \
  --restart unless-stopped \
  -p 3001:3000 \
  -v podcast-checklist-data:/data \
  ghcr.io/nmemmert/podcast-checklist:latest
```

Progress data is in the named volume and is **not affected** by pulling a new image.
