Overview
PhotoFlow is designed to work in offline network environments where multiple PCs need to access the same photography order management system. This guide explains how to set up the server-client architecture for your team.The Problem PhotoFlow Solves
Many photography studios face these challenges:- No internet access - Working in environments without internet connectivity
- Multiple workstations - Team members working from different PCs
- Synchronization issues - Excel/spreadsheet conflicts when multiple users edit simultaneously
- Real-time updates - Need to see changes immediately without manual refreshing
Architecture
Server PC
One PC runs the PhotoFlow server:
- Hosts the application
- Runs the PostgreSQL database
- Handles all data operations
- Broadcasts updates via Socket.io
Client PCs
Other PCs connect as clients:
- Access via web browser
- Send requests to server
- Receive real-time updates
- No local database needed
No internet connection required! All communication happens within your local network.
Server Setup
Configure the PC that will act as the server:Choose Server PC
Select a PC that:
- Will remain powered on during work hours
- Has adequate resources (see Requirements)
- Is accessible to all team PCs on the network
- Has a static or consistent IP address (recommended)
Find Server IP Address
Determine the server’s IP address:Look for “IPv4 Address” under your active network adapter.
- Windows
- Linux
- macOS
Configure Static IP (Recommended)
Set a static IP to prevent the server address from changing:Router method (preferred):
- Access your router’s admin interface
- Find DHCP settings
- Reserve the IP for your server’s MAC address
- Windows: Network Settings → Change adapter options
- Linux: Edit
/etc/netplan/or/etc/network/interfaces - macOS: System Preferences → Network → Advanced
Configure Firewall
Allow incoming connections on PhotoFlow’s port:Or use Windows Firewall GUI:
- Windows
- Linux (ufw)
- Linux (firewalld)
- macOS
- Open Windows Defender Firewall
- Advanced Settings → Inbound Rules
- New Rule → Port → TCP 4173
Default port is 4173 for production build. Use 5173 for development mode, or 3000 if configured in Docker.
Client Setup
Configure PCs that will access PhotoFlow as clients:Verify Network Connection
Ensure the client PC is on the same network as the server.Test connectivity:You should see successful ping responses.
Network Requirements
Same Network
All PCs must be connected to the same local network (same router/switch).
TCP/IP
PCs must be able to communicate via TCP/IP (standard for all networks).
No Internet Required
PhotoFlow works completely offline - no internet connection needed.
Port Access
Port 4173 (or configured port) must be accessible on the server PC.
Testing Network Setup
Connectivity Test
From a client PC:Browser Test
- Open browser on client PC
- Navigate to
http://[server-ip]:4173 - Should see PhotoFlow dashboard
- Check browser console (F12) for errors
Real-Time Sync Test
If sync doesn’t work, check Socket.io connection in browser console.
Troubleshooting
Can't access from client PC
Can't access from client PC
- Verify server PC IP address hasn’t changed
- Check server PC is running PhotoFlow with
--host - Test connectivity:
ping [server-ip] - Verify firewall allows port 4173
- Ensure both PCs are on same network/subnet
- Try accessing from server PC first:
http://localhost:4173
Real-time sync not working
Real-time sync not working
- Check
VITE_SOCKET_URLin.envon server - Verify URL uses server IP, not “localhost”
- Rebuild after changing
.env:npm run build - Check browser console for Socket.io errors
- Test WebSocket connection isn’t blocked by proxy/firewall
Connection drops frequently
Connection drops frequently
- Check network stability (weak WiFi signal?)
- Verify no network equipment is blocking WebSocket
- Check server PC isn’t going to sleep
- Review server logs for errors
Slow performance on clients
Slow performance on clients
- Check network bandwidth/speed
- Verify server PC has adequate resources
- Reduce number of concurrent users
- Consider upgrading server hardware
- Check for network congestion
Different subnets
Different subnets
If PCs are on different subnets (e.g., 192.168.1.x and 192.168.2.x):
- Configure router to allow inter-subnet routing
- Or connect all PCs to same subnet
- Verify firewall rules allow cross-subnet traffic
Security Considerations
Trusted Network Only
Only deploy on trusted internal networks. PhotoFlow doesn’t include authentication by default.
Firewall Configuration
Restrict port access to your local network only. Don’t expose to the internet.
Database Security
Use strong database passwords. Don’t use defaults in production.
Physical Security
Secure physical access to the server PC. It contains all business data.
Advanced Configuration
Using a Different Port
Change the port inpackage.json or use the flag:
VITE_SOCKET_URL accordingly.
Multiple Server Instances
For redundancy, you could run multiple instances:- Primary server on PC 1
- Backup server on PC 2
- Switch DNS/hosts file if primary fails
This requires additional configuration for database replication, which is beyond PhotoFlow’s default setup.
Load Balancing
For very large teams (20+ users):- Use a reverse proxy (nginx/HAProxy)
- Balance load across multiple app instances
- Use a shared PostgreSQL database
- Configure Socket.io for clustering
Network Diagram Example
Next Steps
Environment Variables
Configure VITE_SOCKET_URL and other settings
Production Checklist
Security and performance best practices
Kanban Board
Learn about real-time synchronization features
Docker Deployment
Deploy with containers for easier management