Mobile App Module

The Dashboard,
In Someone's
Back Pocket.

A site super isn't opening a laptop between pours. The mobile app carries the same discipline scores, rankings, and alerts as the web dashboard — live over WebSocket when there's signal, cached and readable when there isn't — with a push notification the moment something crosses a threshold.

What the Mobile App Does

Built on React Native and Expo so one codebase ships to both iOS and Android. The app talks to the same backend REST and WebSocket endpoints as the web dashboard — no parallel API to maintain.

📊
Three-Tab Layout
Overview (headline metrics + activity feed), Disciplines (ranked performance cards), and Alerts (critical/warning/info feed) — the same structure as the web dashboard.
📶
Live + Offline
WebSocket keeps data live when connected; AsyncStorage caches the last known state so the app is still useful with no signal on a remote site.
🔔
Push Notifications
Expo Notifications surfaces critical alerts — an SPI/CPI breach, a new report — even when the app is closed, tapping through to the relevant tab.
🔄
Pull-to-Refresh + Auto-Refresh
Manual pull-to-refresh plus a configurable auto-refresh interval (default 30s) keep data current without draining the battery unnecessarily.
⚙️
Configurable Backend
A Settings screen lets the backend API URL, refresh interval, and notification preferences be changed without a rebuild — useful across dev, staging, and production.
🌐
Network Awareness
A visible Online/Offline indicator plus automatic reconnection attempts mean the field crew always knows whether they're looking at live or cached data.

Who Has It Installed

Site Superintendents

Check discipline rankings between walkthroughs without needing a laptop or a strong signal — cached data covers the gap.

Project Managers

Get pushed a notification the instant a critical alert fires, rather than finding out at the next status meeting.

Traveling Executives

Glance at overall project health from the Overview tab between meetings, without digging through email attachments.

Discipline Leads

Filter straight to their discipline's card and performance bar instead of scrolling a full spreadsheet export.

Same Backend, Native Shell

The mobile app is a thin native shell over the same data contract used everywhere else in the system — it introduces no new backend logic of its own.

Dashboard Data GET /api/dashboard/data — same endpoint the web dashboard polls, with mock data as an offline/demo fallback.
WebSocket Channel Subscribes to the same broadcast events (report_generated, alert) emitted by the Reports · Notifications module.
Notification History GET /api/notifications/history backs an in-app view of past alerts and reports for reference.
Report Download GET /api/reports/:id/download lets a user pull the same PDF that was emailed out, directly from the phone.

Next Module

See the workflow that drives all of this

Automation Workflow is the n8n pipeline connecting document upload to every screen above.