🔵 ⓪ NFC Quick Button — Floating Action Button
A floating glass orb button appears above the bottom navigation bar whenever a drill is active. It gives you instant NFC control and tab navigation without reaching for the nav bar.
Tap — toggles NFC scanning on or off from any tab. The button glows green with an animated ring when NFC is active, and shows a pause icon when stopped.
Hold & Swipe left/right — after a short press (0.35 s) the button locks into swipe mode. Slide your finger left or right to navigate between tabs (Scan → Quick → Settings → Help) without lifting your thumb. A spring animation confirms each navigation step.
Long-press to dismiss (2 seconds) — press and hold the button for 2 seconds. A gradient progress ring (green → blue → purple) fills around the button as you hold. At 2 seconds, the button sinks and dissolves downward with a haptic triple-pulse. The button automatically reappears from below after 5 seconds with a spring bounce animation. This is useful when the button is obscuring content you need to read.
• Moving your finger or lifting early cancels the dismiss — the progress ring resets instantly.
• The button will not dismiss during an active swipe gesture.
• The button is hidden on the Login screen and any overlay screens (merge summary, etc.) and reappears automatically when you return to normal view.
🔐 ① Login & Security
The default password is
dc. Enter it on the login screen to unlock the app.
•
Change Password — go to
Settings → Change Password. Enter your
current password first to verify identity, then type a new password (min 4 characters) and tap Save. Passwords are stored as a secure SHA-256 hash — never as plaintext.
•
Biometric Login — after setting a custom password, go to
Settings → Biometric Login and tap
Register Biometrics. On next login the app will auto-prompt Face ID or Fingerprint — no typing needed.
•
Remove Biometrics — tap
Remove Biometrics in Settings to disable and revert to password only.
•
Logout — tap
Logout in the bottom navigation. Confirm in the dialog. You will need your password to re-enter.
•
Download Sample CSV — available on the login screen. Download a 100-employee example to see the required file format before creating your own roster.
•
⚠ Security note: Anyone with physical access to an unlocked device can read the browser's local storage. Always set a strong custom password (more than 4 characters) and log out when leaving the device unattended.
⚙️ ② Setup — Before the Drill
Step 1 — Select Device Role
Use the
Device Role selector in the Control Panel (Scan tab).
•
Master — the central device. Collects and merges all scan data from Scanners at the end of the drill. Shown with a yellow network hub icon in the header.
•
Scanner A–Z — tap the dropdown and choose a unique letter for this device (A, B, C … Z). Each Scanner covers an assigned area. Shown with a green letter icon in the header.
Step 2 — Configure Drill Info (optional but recommended)
Go to
Settings → Drill Info to label this drill before it starts.
•
Drill Name / Type — e.g. "Emergency Evacuation Drill". Appears in all exports and reports.
•
Location / Area — e.g. "Building B — East Wing". Included in the HTML report.
•
Scanner Display Name — custom label for this device, e.g. "Zone 3 — North Exit — Alex". Shown in scan logs and the merge summary. Tap
Save Drill Info to apply.
Step 3 — Prepare your CSV roster
Create a spreadsheet with exactly these 5 columns (row 1 = header, employee data from row 2 onward):
NFC_CODE · EMPLOYEE_ID · EMPLOYEE_NAME · POSITION · DIVISION
⚠ NFC_CODE must be unique per employee. Save file as .csv (UTF-8 encoding).
If column order or encoding is wrong, the app will show a specific error on import.
Step 4 — Import CSV on every device OR use Roster QR Share
Option A — Import CSV manually: Tap
Import CSV in the Control Panel on each device. Load the
same CSV file on Master and every Scanner before the drill starts.
Option B — Share Roster via QR (recommended · no file transfer needed):
• On
Master: import the CSV once, then go to
Settings → Share Roster via QR → Show Roster QR.
• On each
Scanner: go to
Settings → Share Roster via QR → Scan Roster QR and point the camera at Master's screen.
• The entire employee roster transfers automatically in seconds — no WiFi, no files, no email needed. A confirmation screen shows the division breakdown after a successful scan.
Step 5 — Find unknown NFC codes
Start NFC and hold any unregistered card to the phone. The raw NFC code appears in the
Last Scanned NFC box at the top of the Employee List. Copy that code into your CSV roster for that employee.
💡 The app automatically handles Android NFC formatting differences — it will match codes with or without the "04" manufacturer prefix, with or without colons/spaces/dashes.
📊 ③ Live KPI Dashboard
The top section of the Scan tab shows a live, animated headcount dashboard that updates instantly on every scan.
Central Progress Ring — a large circular arc at the top of the KPI section shows the overall percentage of employees accounted for (counted + excused). The ring colour shifts dynamically: green at 100%, amber from 60–99%, red below 60%. The percentage and raw counts update in real time.
Live indicator dot — a small pulsing green dot next to the "Live KPI" heading glows and breathes when NFC scanning is active. It turns grey when scanning is paused or idle — a quick at-a-glance status light.
KPI Cards (3 cards) — each card has a mini arc chart in the top-right corner and a pop animation when its number changes:
•
TOTAL — total employees in the imported roster (amber).
•
COUNTED — employees whose NFC card has been successfully scanned (green). Arc fills proportionally.
•
MISSING — employees not yet counted and not excused (red). When this reaches zero the card glows green and pulses — a clear "all clear" signal.
EXCUSED & VISITORS row — below the main 3 cards: Excused (purple) shows employees pre-marked off-duty or on shore leave, excluded from the Missing count. Visitors (yellow) shows non-employee headcount added manually.
Division Summary badges — coloured pills below the KPI grid show counted/total per division (e.g.
Alpha: 8/10). Turns green when a division is fully accounted for. A toast notification fires when any division hits 100% during active scanning.
Drill Progress Bar — horizontal bar showing the percentage of employees accounted for. Colour shifts from red → yellow → green as the count rises.
All Accounted Banner — a large green banner with confetti animation appears when every non-excused employee has been counted. Distinguishes two states:
"ALL EMPLOYEES COUNTED ✔" (all physically scanned) vs
"ALL EMPLOYEES ACCOUNTED FOR" (some pre-marked Excused). Important for compliance reporting.
Drill Timer — starts automatically on the first NFC scan. After
30 minutes with missing employees the timer turns red as an urgency signal. Resumes accurately after backgrounding (calculated from the original start timestamp).
Visitors / Passengers / Contractors panel — use the
+ and
− buttons to count non-employees without NFC tags. Counts toward VISITORS in the KPI bar. Can be hidden in
Settings → Display → Show Visitors panel.
📳 ④ Scanning — During the Drill
Start NFC — tap in the Control Panel. Hold employee NFC cards to the
back of the phone near the NFC antenna. The Scanner section shows a live
TAP CARD NOW prompt.
Scan feedback — 3 distinct signals for each result:
• 🟢
COUNTED — ascending double chime + long vibrate + green flash + green badge. Employee is now marked as counted.
• 🟡
DUPLICATE — double mid-blip + short triple vibrate + yellow flash + yellow badge. Card was already counted earlier in this drill.
• 🔴
NOT FOUND — low descending tone + short vibrate + red flash + red badge. NFC code is not in the imported roster.
Scan Flash — a full-screen colour overlay flashes briefly on each scan for high-visibility confirmation in bright environments. Can be turned off in
Settings → Flash on scan.
Scanner display — the
Scanned value box shows the raw NFC code just read, and the
Matched employee box shows the matched name, position, and division.
Stop NFC — pauses NFC card reading without losing any data. The drill timer continues running in the background. Tap
Start NFC again to resume scanning at any time.
Manual Scan (fallback) — if NFC hardware is unavailable or a card won't read, type or paste the NFC code into the
Manual Scan field and tap
Apply. The
Auto-clear manual input setting empties the field automatically after each entry.
Undo a count — in the
Last 20 Scans section (below the Scanner panel), tap
Undo on any COUNTED entry to remove an accidental scan instantly. Each card shows the timestamp, result, employee name, and device ID.
Fullscreen mode — tap the
Fullscreen button in the Control Panel for a distraction-free scanning view that hides the browser chrome. Ideal during active drills. Tap again or press Escape to exit.
👥 ⑤ Employee List & Flags
The Employee List shows every employee with their live status. Scroll down on the Scan tab to find it, below the Scanner panel.
Filter tabs:
•
All — all employees in the roster.
•
✔ Counted — only employees already scanned this drill.
•
⚠ Missing — not yet counted and not excused.
•
🟣 Excused — employees marked off-duty or on shore leave.
Search — type any part of a name, employee ID, division, or NFC code to filter the list instantly. Combine with filter tabs for precision.
Quick count buttons on each row:
•
✚ — manually mark this employee as counted (same effect as scanning their NFC card).
•
✕ — remove the count from this employee (undo their scan).
Long-press shortcut — hold any employee row for 0.6 seconds to instantly toggle their
Excused status without opening the detail sheet. A toast notification confirms the change.
Bulk Actions — when any filter tab or search is active, a bulk action bar appears above the list showing how many employees are currently visible:
•
🟣 Excuse All Visible — marks every currently filtered employee as Excused in one tap (e.g. an entire division on shore leave).
•
✔ Un-excuse All Visible — removes Excused from all currently filtered employees at once.
Device badge on each row — shows which device scanned the employee:
• Yellow
M badge = scanned by the Master device.
• Green letter badge (A–Z) = scanned by that Scanner device.
Tap any row to open the employee detail sheet (bottom drawer). The sheet shows the employee's
counted status at the top — either "✔ Counted at [time] by [device]" or "⚠ Not yet counted — Missing":
•
Excused — mark as off-duty or shore leave. Excluded from Missing and drill progress counts.
•
Medical Flag — flag as being in the medical centre. Shows a 🏥 badge on their row and in the Missing list.
•
Next of Kin / Emergency Contact — store NOK name, relationship, and phone number for quick reference during the drill.
•
Notes — free-text field for any additional information.
•
Save Details — tap to save all changes. Data persists locally across sessions.
•
Scan History — below the status badge, all scan events for this employee are listed (COUNTED, DUPLICATE, UNDONE) with timestamps and device IDs. Useful for auditing or verifying who scanned the person and when.
•
✏️ Edit button — tap to expand the inline edit panel. You can edit Name, Employee ID, Division, Position, NFC Code, and
📍 Muster Point / Assembly Area directly on-device. Tap
Save Changes to apply. Changes take effect immediately and persist locally. Note: re-importing a CSV will overwrite any edits.
👥 ⑥ Share Roster via QR — No CSV on Scanner Needed
Scanner devices don't need to import a CSV. The Master device can beam the full employee roster to any Scanner wirelessly using QR codes — no WiFi, no USB, no file sharing required.
How to transfer the roster (Master → Scanner):
• On
Master (has the CSV imported): go to
Settings → scroll to
Share Roster via QR → tap
Show Roster QR. A full-screen QR code appears and cycles automatically through chunks if the roster is large.
• On
Scanner (no CSV needed): go to
Settings → scroll to
Share Roster via QR → tap
Scan Roster QR. Point the camera at the Master screen, 20–35 cm away, keeping the QR code fully in frame.
• The progress bar shows chunks received vs. total. When all chunks arrive, the roster loads instantly and a summary shows the division breakdown.
• The Scanner automatically navigates back to the Scan tab. Tap
Start NFC and begin scanning — the roster is ready.
Tips for fastest transfer:
•
Distance — 20–35 cm is ideal. Too close causes distortion; too far means the camera can't resolve the dots.
•
Brightness — raise Master screen brightness to maximum before displaying QR codes.
•
Angle — hold both phones face-to-face and parallel. Steep angles slow detection significantly.
•
Steady — prop or rest the Master device so it doesn't shake. Even slight movement delays each chunk.
•
Missed chunks — the QR cycles continuously, so just wait — any missed chunk will appear again automatically.
⚠ After receiving the roster via QR, do not also import a CSV on that Scanner — it will overwrite the loaded roster. The QR import is sufficient to start scanning immediately.
🔗 ⑦ Merging Data — After the Drill
Open
Quick from the bottom navigation. Scanners send their count data to Master using one of two methods.
Method 1 — QR Transfer (recommended · no WiFi · no files · ~20–30 sec for 200 people):
• On each
Scanner: tap
Show QR → hold the screen steady toward Master's camera.
• On
Master: tap
Scan QR → point the camera at the Scanner screen, 20–40 cm apart.
• QR codes cycle automatically through chunks. The progress bar shows how many chunks have been received vs. the total needed.
• If a chunk is missed, the
Missing chunks indicator shows exactly which number(s) to reshoot (e.g. "Missing: #3, #5"). On the Scanner, type the missing number in the
Go to chunk input and tap
Go to jump directly to that chunk.
• When all chunks are received, a
Merge Summary screen appears: counts added, updated, skipped, and a full employee-by-employee list of merged records.
• Repeat for each Scanner device. Employees in the list on Master will show a device badge indicating which device scanned them.
Method 2 — JSON File Transfer:
• On each
Scanner: tap
Export Merge JSON → share the file to Master via WhatsApp, email, AirDrop, USB, etc.
• On
Master: tap
Import Merge JSON → select all received JSON files at once (multi-file select supported).
• KPI, Employee List, and Missing list update instantly after each import. A merge summary is shown.
•
⚠ Clock drift warning: if a Scanner device's clock is more than 2 hours behind the Master, you will see a warning after merging. Verify device times are correct before a drill to ensure accurate timestamp records.
Missing list — after merging, Quick View shows all unaccounted employees sorted by Division then Name. Tap the search bar to filter by name, ID, or division to help dispatch search teams.
⚡ ⑧ Quick View Tab
Tap
Quick in the bottom navigation to access all merge tools, the missing list, and reports in one place.
•
Division Status cards — scrollable cards at the top showing each division's counted/total with a colour-coded progress fill. Cards scroll with the page (they are not locked to the top).
•
Drill Timer — displayed in the Quick tab header so you always know elapsed time without switching back to Scan.
•
QR Transfer —
Show QR (Scanner device) and
Scan QR (Master) buttons for wireless data transfer with no internet or file sharing required.
•
File Merge —
Export Merge JSON (Scanner) and
Import Merge JSON (Master) for file-based transfer over any messaging or file-sharing app.
•
Export Log CSV — full audit trail of every scan event: timestamp, result, NFC code, employee name, ID, position, division, excused flag, medical flag, and device ID.
•
Export Missing List CSV — exports a CSV of all currently unaccounted employees (not yet counted and not excused). Includes a
muster_point column when employees have assembly areas assigned. Useful for handing a printed or digital list to search teams after a drill.
•
Reset — clears all scan counts on this device only. The imported roster and employee flags are kept. Use before starting a new drill on the same device.
•
↩️ Undo Merge (Un-merge by Device) — after merging, a dropdown appears listing every Scanner whose data was merged. Select a Scanner and tap
Remove to roll back all counts attributed to that device. Counts from other devices are unaffected. Useful when a wrong Scanner's data was merged by mistake.
•
📡 Scanner Sync Status — appears on the Master device after any merge. Shows a tile for each Scanner: green ✅ Synced (data received) or amber ⏳ Pending (not yet merged). Includes the merge timestamp and count per Scanner. Use this to confirm you haven't missed a device before closing the drill.
•
Missing List — searchable list of all unaccounted employees after merging. When employees have a
Muster Point / Assembly Area assigned, the list is automatically grouped by muster point, making it easy to dispatch search teams by area. Each entry shows the employee's ID, position, division, muster point, and any medical flag.
•
Export Report — generates a formatted HTML drill report: drill date/time, device name, drill name and location, elapsed duration, KPI totals, per-division breakdown, and a complete missing employee list. Open the HTML file in any browser to print or save as PDF.
•
🖨 Print Report — opens a print-optimised version of the drill report directly in a new browser tab and triggers the print dialog. No file is saved — sends directly to your printer or saves as PDF from the browser's print dialog.
•
Save to History — saves a snapshot of the current drill to local storage. Includes timestamp, drill name, location, device, counts, duration, visitor count, and per-division stats.
•
Drill History — review all saved past drills. Each entry shows date, drill name/location, counted/total/missing, excused, visitors, and duration. Up to
50 drills stored. When two or more drills are saved, each card automatically shows a
vs prev bar comparing completion %, missing count, and duration delta against the immediately preceding drill — green for improvement, red for regression. Tap
▼ Divisions to expand the per-division breakdown. A warning appears when approaching the storage limit. Tap
Clear to remove all history.
•
Merge Conflict Log — if two devices both scanned the same employee, the merge summary now includes a
⚡ Conflicts section showing each person's name, both timestamps, both device names, and which timestamp was kept (the earlier one always wins). Review this if device clocks may have drifted.
⚙️ ⑨ Settings
Access via
Settings in the bottom navigation. All preferences are saved automatically.
Scanning
•
Vibrate on scan — haptic feedback on each NFC read. Recommended: ON.
•
Different sound for duplicate — plays a distinct double-blip when a card is already counted, vs. the ascending chime for a new count. Helps identify duplicates by sound alone without looking at the screen.
•
Keep screen awake — uses the Wake Lock API to prevent the phone from sleeping during an active drill. Recommended: ON.
•
Auto-clear manual input — automatically empties the Manual Scan field after each tap of Apply. Recommended: ON for fast manual entry.
•
Flash on scan — enables a full-screen colour flash overlay (green/yellow/red) for each scan result. Useful in bright environments. Turn OFF if you find it distracting.
•
Auto-start NFC on login — NFC scanning begins automatically immediately after you log in. Useful for dedicated scanner devices. Default: OFF.
•
Fast scan mode (NFC Performance Mode) — skips the employee list re-render during rapid back-to-back scanning. UI updates are deferred 300ms after the last scan instead of updating on every scan. Recommended for slower or mid-range Android devices to reduce lag. Default: OFF.
•
Sound Volume — slider from 0% to 100% (default 70%). Set to 0 to mute all scan sounds entirely.
•
NFC Debounce Delay — slider from 0.5s to 3.0s (default 1.5s). Minimum time before the same NFC card can register again. Increase if getting triple-scans; decrease for fast sequential scanning of different cards.
•
Drill Reminder Alert — slider from Off to 60 minutes (in 5-minute steps). When set, the app plays a sound, vibrates, and shows a toast if missing employees remain after the configured time. Automatically cancels if all employees are accounted for before the threshold. Default: Off.
Drill Info
•
Drill Name / Type — label the type of drill (e.g. "Emergency Evacuation"). Appears in all exports and reports.
•
Location / Area — specify where the drill is taking place (e.g. "Building B — East Wing").
•
Scanner Display Name — custom label for this device shown in scan logs and the merge summary (e.g. "Zone 3 — North Exit — Alex"). Tap
Save Drill Info to apply changes.
Display
•
Show Visitors panel — toggle the Visitors/Passengers/Contractors panel in the Scan tab. Turn OFF if non-employee headcount is not needed for your drill type.
•
Theme — choose from four visual themes: ⬛
Jet Black (default), 🌑 Dark Blue, 🌊 Deep Navy, 🔮 Midnight Purple. The app launches in Jet Black unless you have previously saved a different preference. Applied instantly with no restart required.
Change Password — enter your
current password first to verify identity, then type a new password (min 4 characters) and tap Save. Passwords are stored as a secure SHA-256 hash — never as plain text. Default is
dc — change this before deploying on a live device.
🔐 Biometric Login — register Face ID or Fingerprint for passwordless login. Requires a custom password to be set first. Tap
Remove Biometrics to revert to password-only login.
Storage
• Shows how much device local storage is currently in use. A warning appears automatically when storage is nearly full.
• Export your data and use
Clear All Data & Roster in the Scan tab before storage is exhausted.
Share Roster via QR 👥
• Found at the bottom of the Settings screen, below
Share App.
•
Show Roster QR — Master device: generates QR code(s) of the full employee roster. If the roster is large, multiple codes cycle automatically every 1.4 seconds. Hold the screen up to a Scanner device's camera.
•
Scan Roster QR — Scanner device: opens the camera and scans the Master's QR code(s). The entire roster (all employee NFC codes, IDs, names, positions, divisions) is imported automatically. No CSV file needed on the Scanner.
• After scanning, a confirmation screen shows the imported employee count and division breakdown. The Scanner is immediately ready to tap
Start NFC and begin scanning cards.
• If the Scanner already has a roster loaded, a confirmation dialog appears before replacing it — existing scan counts are cleared when the roster changes.
• Drill name and location are also transferred, so Scanner exports are correctly labelled.
• The full URL is also shown as text below the QR code for manual entry or sharing via messaging apps.
• Tap
Copy Link to copy the URL to the clipboard and paste it into WhatsApp, email, or any other app.
• No internet is required after the first load — the app runs fully offline once opened.
🔒 ⑩ Data & Privacy
•
100% offline. No internet connection required at any time. Works in full airplane mode.
• All data — roster, counts, flags, notes, history, preferences — is stored in your device's local storage only. Nothing is sent to any server.
• Data persists automatically across sessions and browser restarts until you explicitly clear it.
•
Clear All Data & Roster (Scan tab → Data Management) — wipes everything on this device: roster, counts, flags, visitor count, scan log, and drill timer. The app resets to a blank state.
This cannot be undone.
•
Reset (Quick tab) — clears scan counts only. The roster and employee flags (Excused, Medical, NOK, Notes) are preserved. Use this between drills when the roster stays the same.
•
Tab close warning — if NFC is running, a drill is in progress, or visitors have been counted, closing or refreshing the browser tab shows a confirmation dialog to prevent accidental data loss. Scan data is auto-saved to local storage after every scan.
💡 ⑪ Tips & Best Practices
•
Add to Home Screen — in Chrome, tap the menu →
Add to Home Screen for a full-screen app experience with no browser chrome. Appears as a native app icon.
•
Share roster with one scan — once you've imported your CSV on Master, go to
Settings → Share Roster via QR → Show Roster QR. Each Scanner device simply scans it — no file sharing, no USB, no email. The fastest way to get all devices ready before a drill.
•
Same CSV on all devices — always import the exact same CSV file on Master and every Scanner before the drill. Different rosters will cause merge errors or missing employees.
•
Set Drill Info first — fill in Drill Name, Location, and Scanner Display Name in Settings before the drill so all exports are clearly labelled from the start.
•
Test before the drill — do a quick dry run to confirm NFC cards read correctly and all NFC codes are registered in the CSV.
•
Use Excused before the drill — pre-mark employees on leave or off-duty as Excused so they don't appear in the Missing list during the drill.
•
Bulk Excuse a whole division — filter the Employee List by division using the Search box, then tap
🟣 Excuse All Visible in the bulk action bar to excuse the entire division in one tap.
•
Long-press to excuse quickly — during a fast-moving drill, hold any employee row for 0.6 seconds to toggle Excused without opening the detail sheet.
•
QR chunk retry — if a QR chunk is missed during transfer, the Master screen shows which chunk numbers are missing. On the Scanner, type the missing number in the
Go to chunk field and tap Go to jump directly to it.
•
Export data immediately after merging — tap Export Log CSV and Export Report as soon as all Scanner data is merged, before closing the app or clearing data.
•
Mute sounds in quiet areas — use the Sound Volume slider in Settings to reduce or mute beeps without disabling vibration.
•
Drill timer stays running — stopping NFC does not stop the drill clock. The timer only resets when you explicitly tap Reset or Clear All Data. This ensures accurate elapsed time even if scanning is paused for a handoff or battery swap.
•
NFC safety tip — the app requires NFC codes to be at least 8 hex characters long before attempting flexible suffix/prefix matching. This prevents false positive matches between employees with similar short codes.