# 🔧 Update API URL for Production

Your Flutter app is currently configured to use `localhost:3000` for API calls.
For production, you need to change it to your server IP: `192.168.8.148`

## 📝 File to Update

**File:** `luckychit/lib/core/services/api_service.dart`

**Line 5:** Change from:
```dart
static const String baseUrl = 'http://localhost:3000/api';
```

To:
```dart
static const String baseUrl = 'http://192.168.8.148:3000/api';
```

---

## 🚀 Three Ways to Deploy

### Option 1: Automated Script (Recommended)

Upload `deploy-frontend.sh` to your server and run:

```bash
# On your server (as root)
cd /home/luckychit/apps/chitfund
chmod +x deploy-frontend.sh
./deploy-frontend.sh
```

This script will:
- ✅ Backup current files
- ✅ Update API URL automatically
- ✅ Build Flutter web app
- ✅ Deploy to Nginx
- ✅ Restore original file for future edits

---

### Option 2: Quick One-Liner

Upload `deploy-frontend-simple.sh` and run:

```bash
# On your server (as root)
chmod +x deploy-frontend-simple.sh
./deploy-frontend-simple.sh
```

---

### Option 3: Manual Steps

```bash
# 1. Update API URL
cd /home/luckychit/apps/chitfund/luckychit
nano lib/core/services/api_service.dart
# Change line 5 to: static const String baseUrl = 'http://192.168.8.148:3000/api';

# 2. Build
flutter pub get
flutter build web --release

# 3. Deploy
cp -r build/web/* /var/www/luckychit/
chown -R www-data:www-data /var/www/luckychit
```

---

## 🌐 Access Your App

After deployment:
- **Frontend:** http://192.168.8.148
- **API Health:** http://192.168.8.148:3000/health
- **API Base:** http://192.168.8.148:3000/api

---

## 🔄 Update Process

When you need to update the frontend:

```bash
# Pull latest code
cd /home/luckychit/apps/chitfund
git pull

# Run deployment script
cd luckychit
./deploy-frontend.sh
```

---

## ⚠️ Important Notes

1. **Development vs Production:**
   - Keep `localhost:3000` in your local code
   - Only change to server IP when deploying to production
   - The automated scripts handle this for you

2. **CORS Settings:**
   - Your backend `.env` should already allow this IP
   - Check: `ALLOWED_ORIGINS=http://192.168.8.148`

3. **Firewall:**
   - Make sure port 80 (HTTP) is open
   - Make sure port 3000 (API) is open
   - Check: `sudo ufw status`

---

## 🐛 Troubleshooting

### Can't connect to API
```bash
# Check backend is running
pm2 status

# Test API directly
curl http://192.168.8.148:3000/health

# Check firewall
sudo ufw status | grep 3000
```

### Frontend shows blank page
```bash
# Check Nginx logs
sudo tail -f /var/log/nginx/error.log

# Check files deployed
ls -la /var/www/luckychit/

# Restart Nginx
sudo systemctl restart nginx
```

### API URL not updated
```bash
# Verify the change in built files
grep -r "192.168.8.148" /var/www/luckychit/

# If not found, rebuild and redeploy
cd /home/luckychit/apps/chitfund/luckychit
./deploy-frontend.sh
```

---

## 🔐 Production Best Practices

For production, consider:

1. **Use Environment Variables:**
   Create a config file instead of hardcoding IPs

2. **Use Domain Name:**
   Setup a domain and use it instead of IP

3. **Enable HTTPS:**
   ```bash
   sudo apt install certbot python3-certbot-nginx
   sudo certbot --nginx -d yourdomain.com
   ```

4. **Update API URL to domain:**
   ```dart
   static const String baseUrl = 'https://api.yourdomain.com';
   ```

---

## 📋 Quick Reference

| Task | Command |
|------|---------|
| Deploy frontend | `./deploy-frontend.sh` |
| Quick deploy | `./deploy-frontend-simple.sh` |
| Check backend | `pm2 status` |
| View API logs | `pm2 logs luckychit-api` |
| Test API | `curl http://192.168.8.148:3000/health` |
| View web logs | `sudo tail -f /var/log/nginx/access.log` |

---

Good luck! 🚀

