# ✅ LittleShop Deployment Checklist

## Pre-Deployment Requirements
- [ ] Portainer access: `http://10.0.0.51:9000` (sysadmin / Phenom12#.)
- [ ] Traefik network named `traefik` exists on portainer-03
- [ ] DNS `littleshop.silverlabs.uk` points to Traefik server
- [ ] Let's Encrypt resolver named `letsencrypt` configured in Traefik

## Deployment Files Ready ✅
- [x] `Dockerfile` - Multi-stage ASP.NET Core build
- [x] `docker-compose.yml` - Portainer-ready with Traefik labels
- [x] `.dockerignore` - Optimized build context
- [x] `appsettings.Production.json` - Production configuration
- [x] `.env.example` - Environment variables template

## Step-by-Step Process

### 1. Access Portainer ⏳
- [ ] Open `http://10.0.0.51:9000`
- [ ] Login: `sysadmin` / `Phenom12#.`
- [ ] Navigate to **Stacks**

### 2. Create Stack ⏳
- [ ] Click **Add stack**
- [ ] Name: `littleshop`
- [ ] Method: **Web editor** (or Repository if using Git)

### 3. Configuration ⏳
- [ ] Copy `docker-compose.yml` content
- [ ] Add environment variables:
  - [ ] `JWT_SECRET_KEY` = `YourSuperSecretKeyThatIsAtLeast32CharactersLong!`
  - [ ] `BTCPAY_SERVER_URL` = (optional, leave empty)
  - [ ] `BTCPAY_STORE_ID` = (optional, leave empty)
  - [ ] `BTCPAY_API_KEY` = (optional, leave empty)
  - [ ] `BTCPAY_WEBHOOK_SECRET` = (optional, leave empty)

### 4. Deploy ⏳
- [ ] Click **Deploy the stack**
- [ ] Wait for build completion
- [ ] Check for any error messages

### 5. Verification ⏳
- [ ] Container shows **Running** status
- [ ] No error logs in container
- [ ] Access `https://littleshop.silverlabs.uk`
- [ ] Admin panel accessible at `/Admin`

### 6. Initial Setup ⏳
- [ ] Login to admin panel: `admin` / `admin`
- [ ] **CRITICAL**: Change admin password
- [ ] Create categories
- [ ] Add products
- [ ] Test order flow

### 7. Post-Deployment ⏳
- [ ] SSL certificate working (green padlock)
- [ ] All pages load correctly
- [ ] Database persisting data
- [ ] File uploads working
- [ ] Logs being written

## Expected Results

### URLs
- **Main Site**: `https://littleshop.silverlabs.uk`
- **Admin Panel**: `https://littleshop.silverlabs.uk/Admin`
- **API Docs**: `https://littleshop.silverlabs.uk/swagger`

### Default Credentials
- **Username**: `admin`
- **Password**: `admin`
- **⚠️ MUST CHANGE ON FIRST LOGIN**

### Container Info
- **Name**: `littleshop`
- **Image**: `littleshop:latest`
- **Port**: `8080` (internal)
- **Volumes**: 3 persistent volumes for data, uploads, logs

### Traefik Integration
- **Host**: `littleshop.silverlabs.uk`
- **SSL**: Let's Encrypt automatic
- **Headers**: Proper forwarding configured

## Troubleshooting

### Build Fails
- Check source code uploaded correctly
- Verify .NET 9.0 SDK available
- Check Dockerfile syntax

### Container Won't Start
- Check environment variables
- Verify port 8080 not in use
- Check volume permissions

### Site Not Accessible
- Verify Traefik network connection
- Check DNS resolution
- Confirm SSL certificate issued

### Database Issues
- Ensure volume permissions correct
- Check `/app/data` directory writable
- Verify SQLite database created

---

**Status**: 🟢 **READY FOR DEPLOYMENT**

**Next Action**: Follow PORTAINER-STEPS.md to deploy via Portainer UI