# Multi-Device Local Network Access Guide

## Quick Setup (5 Minutes)

Your Church SongLyric system is already configured for multi-device access! Follow these steps:

---

## ✅ Backend Status (Server PC)

**Current Configuration:**

- ✅ Backend running on port 5000
- ✅ Listening on all interfaces (0.0.0.0)
- ✅ Windows Firewall allows port 5000
- ✅ CORS enabled for cross-origin requests
- ✅ WebSocket enabled for real-time sync

**Server IP Addresses:**

- Primary LAN: `192.168.10.178`
- Alternative IPs: `10.5.0.2`, `192.168.233.1`, `192.168.74.1`

---

## 📱 Device Setup Instructions

### Step 1: Find Your Server IP

On the **server PC** (where backend runs), open PowerShell and run:

```powershell
ipconfig | Select-String "IPv4"
```

Look for the IP starting with `192.168.x.x` (most common) - typically `192.168.10.178`

### Step 2: Configure Each Device

On **each device** (phone, tablet, laptop):

1. **Open the app** in a browser:
   - Same network: `http://192.168.10.178:3000`
   - Or access via computer name: `http://YOUR-PC-NAME:3000`

2. **Go to Settings** (⚙️ icon in top navigation)

3. **Switch to Online Mode:**
   - Click "Online Mode (No-IP DNS)" option
   - This enables backend sync

4. **Configure Connection:**
   - Protocol: `http`
   - Hostname: `192.168.10.178` (your server IP)
   - Port: `5000`
   - Click **Save DNS Settings**

5. **Migrate Data (if needed):**
   - If prompted, click "Yes, Migrate Now"
   - Wait 5-10 seconds for completion
   - Data will sync from local storage to backend

### Step 3: Verify Connection

After saving settings:

1. Click **Run Diagnostics** in Settings
2. All tests should show ✅:
   - ✅ DNS Resolution
   - ✅ Localhost Connectivity
   - ✅ Backend Connectivity
   - ✅ Local Network (LAN) Test

3. Test data sync:
   - Add a song on one device
   - Check if it appears on another device within seconds
   - Real-time sync via WebSocket!

---

## 🔧 Troubleshooting

### Device Can't Connect

**Check 1: Same Wi-Fi Network?**

- All devices must be on the same Wi-Fi
- Check Wi-Fi name on each device

**Check 2: Backend Running?**

- On server PC, verify: `netstat -ano | findstr :5000`
- Should show: `0.0.0.0:5000` LISTENING
- Restart if needed: `node backend/server.js`

**Check 3: Correct IP Address?**

- Ping from device: `ping 192.168.10.178`
- Should get responses (not timeout)
- If timeout, check firewall or IP changed

**Check 4: Firewall Allows Port?**

- On server PC: `netsh advfirewall firewall show rule name=all | Select-String "5000"`
- Should show: `Action: Allow`
- If not, create rule (see below)

### Create Firewall Rule (if needed)

On **server PC**, run PowerShell as Administrator:

```powershell
New-NetFirewallRule -DisplayName "Church SongLyric Backend" -Direction Inbound -Protocol TCP -LocalPort 5000 -Action Allow
```

### IP Address Changed?

If server PC IP changed (after router reboot):

1. Find new IP: `ipconfig | Select-String "IPv4"`
2. Update Settings on all devices with new IP
3. Save and test

---

## 📊 Testing Multi-Device Sync

### Test 1: Real-Time Song Creation

1. **Device A**: Add a new song in Database
2. **Device B**: Refresh Database page
3. **Result**: New song appears instantly ✨

### Test 2: Profile Switching

1. **Device A**: Switch to different profile
2. **Device B**: Profile selection syncs automatically
3. **Result**: Both devices show same profile ✨

### Test 3: Worship Plan Creation

1. **Device A**: Create a worship plan with songs
2. **Device B**: Open Planning page
3. **Result**: Plan appears with all songs ✨

---

## 🌐 Access URLs for Your Network

**Server PC (localhost):**

```text
http://localhost:3000
http://localhost:5000/api
```

**Other Devices on LAN:**

```text
Frontend: http://192.168.10.178:3000
Backend API: http://192.168.10.178:5000/api
Health Check: http://192.168.10.178:5000/api/health
```

**Quick Test Command (any device):**

```powershell
curl http://192.168.10.178:5000/api/health
```

Should return:

```json
{"status":"ok","ts":1764470523364,"uptime_ms":121825.9212}
```

---

## 🚀 Starting the System

### On Server PC

**Terminal 1 - Backend:**

```powershell
cd "E:\Documents\Website Projects\Church_SongLyric\backend"
node server.js
```

**Terminal 2 - Frontend:**

```powershell
cd "E:\Documents\Website Projects\Church_SongLyric\frontend"
npm start
```

### On Other Devices

#### Option 1: Open Browser

```text
http://192.168.10.178:3000
```

**Option 2: Access via Computer Name** (if DNS resolves)

```text
http://YOUR-PC-NAME:3000
```

---

## ✨ Features Working Across Devices

- ✅ **Real-time song database** - Add, edit, delete songs
- ✅ **Profile management** - Create and switch profiles
- ✅ **Worship list** - Create plans with song lists
- ✅ **Chord transposition** - Per-profile key adjustments
- ✅ **Instant sync** - Changes appear on all devices within seconds
- ✅ **WebSocket updates** - No manual refresh needed
- ✅ **Offline fallback** - Can switch back to Local Mode anytime

---

## 💡 Best Practices

1. **Keep server PC running** - Backend must be active for multi-device access
2. **Use Static IP** - Assign static IP in router to prevent address changes
3. **Bookmark the URL** - Save `http://192.168.10.178:3000` on each device
4. **Test connectivity first** - Run diagnostics before troubleshooting
5. **One migration per device** - Only migrate data once when switching to Online Mode

---

## 🔐 Security Notes

**Local Network Only:**

- Current setup works on local Wi-Fi only
- Data is not encrypted (HTTP not HTTPS)
- Fine for church/home network
- For internet access, see `EXTERNAL_ACCESS_CHECKLIST.md`

**Data Storage:**

- Backend stores data in `backend/data.json`
- Backup this file regularly
- Each device can also keep local copy (Local Mode)

---

## 📞 Need Help?

**Quick Diagnostics:**

1. Settings → Run Diagnostics
2. Check all 4 tests pass
3. Review error messages

**Common Issues:**

- "Connection refused" = Backend not running
- "Timeout" = Wrong IP or firewall blocking
- "404 Not found" = Wrong port number
- "CORS error" = Backend CORS not configured (already set up for you!)

**Health Check Script:**

```powershell
.\backend\health-check.ps1 http://192.168.10.178:5000
```

---

## ✅ Verification Checklist

Before using across devices, verify:

- [ ] Backend running: `node backend/server.js` shows "API listening on port 5000"
- [ ] Firewall allows port 5000 (already configured)
- [ ] Can access from server: `curl http://localhost:5000/api/health` returns OK
- [ ] Can access from LAN: `curl http://192.168.10.178:5000/api/health` returns OK
- [ ] Frontend accessible: Open `http://192.168.10.178:3000` in browser
- [ ] Settings configured: Online Mode selected, hostname set to `192.168.10.178`
- [ ] Diagnostics pass: All 4 tests show ✅ in Settings → Diagnostics

If all checked, you're ready! 🎉

---

## 🎯 Next Steps

1. **Connect your first additional device** - Follow Step 2 above
2. **Test real-time sync** - Add a song and watch it appear on other device
3. **Explore features** - Profiles, plans, chord transposition
4. **Optional**: Set up external access (see `EXTERNAL_ACCESS_CHECKLIST.md`)

Your Church SongLyric system is ready for multi-device collaboration! 🙌
