Devices
Devices (Network & Sync) is where you connect other computers and Android phones to this POS server — over the local Wi-Fi network or the internet — and manage how data syncs between them.
Overview
This page only exists on the desktop/Electron build, since it is about connecting other devices to this particular computer acting as the server. It is organised into four tabs: LAN / Local Network, Cloud Server, Sync Settings, and Server Status.
The LAN tab shows this computer's network addresses and two QR codes — one for logging the Android app into this server, and one specifically for mobile data sync — plus a live list of currently connected devices.
The Sync Settings tab controls the separate real-time Data-Sync engine (used for offline-friendly, near-real-time sync of products, customers and sales across devices), including its mode, cloud/LAN sync server URLs, and an "Initial Bootstrap" push for first-time setup.
Before You Start
- Requires the
networkfeature to be enabled on your plan. - Only available on the desktop/Electron build — it is marked
localOnlyin the navigation and does not appear on the cloud/web version. - All devices you want to connect over LAN must be on the same Wi-Fi/local network as this computer.
Step-by-Step Guide
1 Connect an Android device over LAN
- Open the LAN / Local Network tab.
- Install the BazaarPOS Android app on the device and connect it to the same Wi-Fi network as this PC.
- In the Android app, tap "Scan QR" on its server setup screen and point the camera at the top QR code shown here (this is the Backend API login QR).
- Log in with the same POS credentials used on this computer.
- If you also want mobile data sync, configure a LAN sync URL under Sync Settings first so the second "Mobile Data Sync" QR code appears, then scan that from the mobile app's Network & Sync screen.
2 Configure a remote cloud server
- Open the Cloud Server tab.
- Deploy the POS backend to a hosting provider (Railway, Render, a VPS/DigitalOcean droplet, etc.) — this page lists these as common options but does not perform the deployment itself.
- Enter the Remote Server API URL (e.g.
https://yourserver.com/api/v1) and click Save — the Android app will also use this URL once configured to do so.
3 Turn on and configure data sync
- Open Sync Settings and toggle Data Sync on.
- Choose a Sync Mode: Real-time (syncs as soon as a device connects — recommended), Periodic (fixed interval of 5/15/30/60 minutes), or Manual (only when triggered).
- Under Data-Sync Server, turn on and fill in a Cloud Sync URL for internet-based sync, and/or a Local (LAN) Sync URL for fast same-network sync (preferred automatically when both devices are on the same LAN), then click Save Sync URLs.
- Watch the Live Sync Status panel for connection state, queued items, and last sync time; click Sync Now to trigger a sync immediately.
4 Bootstrap a brand-new sync server
Run this once when you first stand up a sync server, so devices that connect afterward have existing data to pull.
- With a Cloud or Local sync URL entered, click Bootstrap Now under Initial Bootstrap.
- The app fetches all current backend data and pushes it to the sync server unencrypted (a fresh sync server has no stored encryption key yet).
- A summary of how many records were pushed per table is shown once complete.
5 Check live server status
- Open the Server Status tab to see live Online/Offline indicators and LAN URLs for the Frontend (Electron app), Backend API, and Data Sync Server, refreshed automatically every 10 seconds.
- Use the copy icon next to any URL to copy it to the clipboard for sharing or manual entry elsewhere.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
This Device (Server) card | Hostname and platform of the machine acting as the POS server, with a Refresh button. |
Backend API QR code | Scan from the Android app's server setup screen to point it at this server's API for login. |
Mobile Data Sync QR code | Scan from the mobile app's Network & Sync screen to configure it for real-time data sync; only shown once a LAN sync URL is configured. |
Network Addresses list | Every LAN IP address this server is reachable on, each with a copy-to-clipboard button. |
Connected Devices list | Devices that have checked in with the sync server in the last 5 minutes, showing platform, IP, and last-seen time. |
Remote Server API URL (Cloud tab) | The base URL of a hosted backend deployment that all devices should connect to instead of this PC. |
Data Sync toggle | Master on/off switch for the real-time data-sync engine. |
Sync Mode | Real-time, Periodic (with a 5/15/30/60-minute interval), or Manual. |
Cloud Sync URL / toggle | Internet-reachable sync server address, enabled independently of Local (LAN) Sync. |
Local (LAN) Sync URL / toggle | Same-network sync server address; preferred automatically over Cloud Sync when both devices are on the same LAN. |
Live Sync Status panel | Shows connection state (Connected/Disconnected/Syncing), queued item count, last sync time, and the last error if any. |
Sync Now | Manually triggers an immediate sync cycle regardless of the configured mode. |
Initial Bootstrap | One-time push of all existing backend data to a newly set-up sync server, unencrypted, so new devices have data to pull. |
Sync Encryption (AUTO) | Informational panel — AES-256 keys are derived automatically from your account number; no manual key setup is needed. |
Export All Data / Import JSON File | Manual JSON export/import of products, customers and sales — useful for one-off transfers between two POS servers, e.g. branch sync. |
Tips & Best Practices
- Prefer LAN sync whenever devices share the same Wi-Fi — it is faster and does not depend on an internet connection; the engine automatically prefers Local over Cloud when both are configured and reachable.
- Run Initial Bootstrap exactly once per new sync server — running it repeatedly is harmless but unnecessary once devices are already pulling data normally.
- Use the Server Status tab as your first stop when troubleshooting "device won't sync" issues — confirm the Backend API and Data Sync Server both show Online before investigating further.
Troubleshooting & FAQ
I don't see this page in the sidebar at all.
No LAN IP found / devices can't connect over Wi-Fi.
The Mobile Data Sync QR code isn't showing.
Sync shows "OFFLINE" even though the server is running.
🧑💻 Developer Notes
Source component(s):
frontend-app/packages/pos-react-lib/src/pages/NetworkSyncPage.jsx
Backend endpoints used:
GET /sync/info, GET /sync/settings, PUT /sync/settingsGET /sync/bootstrap-data, GET /sync/export, POST /sync/import{dataSyncBase}/sync/devices, {dataSyncBase}/health, {dataSyncBase}/sync/push (calls to the separate data-sync server, not the main backend)
Related tables (db-core repositories):
SyncDevice / device registry (best-effort, lives on the data-sync server, not the main backend db)SyncLog (best-effort)
Feature flag key: network
This page talks to two separate backends: the main POS backend API (for /sync/* settings and bootstrap/export/import) and a standalone Node.js "data-sync" server (for device registry, health checks and the real-time push/pull sync protocol via dataSyncEngine). Encryption keys for sync payloads are derived from the account's 10-digit account number (see the License page) rather than requiring manual key management.