How Offline Scoring Works

Ranges often have poor or no mobile signal. DeadCenter is built from the ground up to handle this — with a native Android app, a browser PWA, and a local hub/client mesh.

1

Import the match while online (or from the hub)

Before heading to the range, open the Android app or PWA and select your match. The full match data — target sets, squads, shooters, and existing scores — is downloaded. On the Android app, data is stored in Room DB. On the PWA, it uses IndexedDB. Alternatively, import the match directly from a hub on the local network without any internet.

2

Score offline — everything saves locally

Every tap of Hit, Miss, or Shot Not Taken is instantly saved to the device’s local database. Stage times are saved locally too. The app works exactly the same whether you’re online or offline — no loading spinners, no errors.

3

Sync to hub or cloud when ready

A background sync runs every 15 seconds. If connected to a hub on the LAN, scores push to the hub. If internet is available, they go directly to the cloud. The hub can also bridge scores from clients to the cloud. Duplicate submissions are harmless — the server uses upsert logic.

4

Scoreboards update live

Once scores reach the cloud, the TV scoreboard and mobile live page pick them up on their next refresh cycle. Spectators see results appear in real-time as devices sync.

Under the Hood

Android App — Room DB

The native Android app uses Room DB for local storage. Scores persist across app restarts. The app supports standalone, hub, client, and cloud modes.

PWA — IndexedDB

The progressive web app stores scores in IndexedDB via Dexie.js. Each score is keyed by (shooterId, targetId) so re-tapping the same target overwrites rather than duplicates.

Dual Sync Paths

Each device shows two sync indicators: hub connectivity (LAN) and cloud connectivity (internet). Scores can flow through either or both paths simultaneously.

Conflict Resolution

Last-write-wins. Each score carries a device_id and recorded_at timestamp. Multiple devices can score different stages simultaneously without conflict.

Hub / Client WiFi Mesh

Set up a local scoring network at the range with zero internet. One tablet runs as the hub, the rest connect as clients.

Hub Tablet

One Android tablet starts a local server. It displays its IP address on screen. The hub collects scores from all connected clients and can also be used for scoring.

Client Tablets

Other tablets enter the hub’s IP address and connect as clients. They import the match from the hub, score their assigned stage or squad, and sync scores back over WiFi.

Bridge to Cloud

When the hub has internet (mobile hotspot, venue WiFi), it bridges all collected scores to deadcenter.co.za. Client tablets never need internet directly — the hub handles it.

Import Match from Hub

Client tablets don’t need internet to get the match data. When a client connects to the hub, it can import the full match — stages, targets, squads, shooters, and existing scores — directly from the hub over the local network. This is especially useful at remote ranges with no cell coverage.

Android App

A native Android app purpose-built for scoring on tablets in the field. Available on the Google Play Store.

Room DB Local Storage

All match data and scores are stored in Room DB on the device. Data persists across app restarts and survives loss of connectivity. No browser cache limitations.

Hub & Client Modes

The Android app can run as a hub (hosting a local server) or as a client (connecting to a hub). This enables a full local WiFi mesh for scoring at ranges with no internet.

Automatic Sync

Background sync runs every 15 seconds. When connectivity is detected — to the hub, to the cloud, or both — all unsynced scores are batched and sent. Dual status indicators show hub and cloud connectivity separately.

Device Lock & PIN

Lock the app to a specific stage or squad with a PIN. Prevents accidental navigation. If a Range Officer forgets their PIN, the Match Director can unlock with their credentials.

PWA — Download for Offline

Don’t have an Android tablet? The progressive web app works on any device with a modern browser and offers the same offline scoring capabilities.

One-Tap Download

Each match on the scoring app’s match list has a Download button. Tap it while you have connectivity and the full match payload is saved to IndexedDB on your device.

Offline Ready Indicator

Once downloaded, a green Offline Ready badge appears next to the match. You can see at a glance which matches are cached and ready to score without any network connection.

Auto-Sync When Connected

A background sync runs every 15 seconds. When connectivity is detected, all unsynced scores are batched and sent to the server. A pending counter in the header shows how many items are waiting to sync.

Clear Cache

Done with a match? Tap Clear to free up device storage. The match data is removed from the local database but nothing on the server is affected.