Skip to content

Commit 447aaaf

Browse files
committed
Updated documentation
1 parent 8df835c commit 447aaaf

78 files changed

Lines changed: 7304 additions & 109 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/apps/_category_.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
"position": 6,
44
"link": {
55
"type": "generated-index",
6-
"description": "All the dedicated apps for the platform"
6+
"description": "Resgrid provides a suite of cross-platform applications built with React Native and Expo. Each app supports iOS, Android, Web, and desktop (macOS, Windows, Linux via Electron), and is designed for a specific role within emergency services operations."
77
}
88
}

docs/apps/big-board.md

Lines changed: 233 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,236 @@ sidebar_position: 5
33
---
44

55
# Big Board
6+
7+
Resgrid Big Board is a cross-platform application designed for **station displays, command centers, and situational awareness dashboards**. It features a fully customizable widget-based dashboard where users can add, remove, resize, and rearrange information panels to create the perfect overview for their operational needs. The app is primarily optimized for large screens — wall-mounted displays, desktop monitors, and tablets.
8+
9+
## Ideal Use Cases
10+
11+
- **Station Wall Displays** — Mount a TV or monitor at a fire station or EMS base showing live personnel status, active calls, units, and a map with real-time positions.
12+
- **Emergency Operations Centers (EOC)** — Customizable dashboards for command staff showing aggregated department statistics, call summaries, and resource availability.
13+
- **Command Vehicles** — Laptop or tablet-mounted dashboard for incident commanders needing a real-time overview of all resources, weather, and active incidents.
14+
- **Remote Monitoring** — Web or desktop app for chief officers and administrators to monitor department activity from home or office.
15+
- **Briefing Rooms** — Display department status during shift briefings with personnel staffing summaries and upcoming calls.
16+
17+
## Supported Platforms
18+
19+
| Platform | Support Level | Details |
20+
|----------|:------------:|---------|
21+
| **iOS** | ✅ Full | iPad optimized for large screen dashboards |
22+
| **Android** | ✅ Full | Tablet optimized with responsive widget grid |
23+
| **Web** | ✅ Full | Full web support with Docker deployment via nginx |
24+
| **macOS** | ✅ Full | Electron — DMG packages (1400×900 default window, 800×600 minimum) |
25+
| **Windows** | ✅ Full | Electron — NSIS installer |
26+
| **Linux** | ✅ Full | Electron — AppImage packages |
27+
28+
## Operations & Features
29+
30+
### Customizable Widget Dashboard
31+
32+
The home screen is a **drag-and-drop widget grid** where users can compose their own dashboard layout:
33+
34+
- **Add widgets** via a floating action button (+) menu
35+
- **Remove widgets** in edit mode
36+
- **Resize widgets** by adjusting width and height in grid units (1–4 columns)
37+
- **Rearrange widgets** by dragging to new positions on the grid
38+
- **Edit mode toggle** to enter/exit layout customization
39+
- Widget layout is **persisted** via MMKV storage and survives app restarts
40+
41+
### Available Widgets
42+
43+
#### Personnel Widget
44+
Displays a table of all department personnel with their current information:
45+
- **Configurable columns**: Group, Staffing, Status, Roles, Timestamp
46+
- **Sort responding to top**: Prioritize personnel who are responding
47+
- **Hide not responding / unavailable**: Filter out inactive personnel
48+
- **Custom status text**: Override the display text for responding, not responding, and unavailable statuses
49+
- **Font size**: Adjustable from 4pt to 30pt for readability at a distance
50+
- **Group filtering**: Hide specific groups from the display
51+
- **Group sort order**: Custom weighted sorting for groups
52+
53+
#### Units Widget
54+
Displays all department units with their current status:
55+
- **Configurable columns**: Station, Type, State, Timestamp
56+
- **Font size**: Adjustable from 4pt to 30pt
57+
- **Group filtering**: Hide specific groups
58+
- **Group sort order**: Custom weighted sorting
59+
60+
#### Calls Widget
61+
Displays active dispatch calls:
62+
- **Configurable columns**: ID, Name, Timestamp, Reporting User, Priority, Address
63+
- **Show linked calls**: Option to display calls linked to other calls
64+
- **Font size**: Adjustable for readability
65+
66+
#### Map Widget
67+
Interactive **Mapbox GL** map with live pins:
68+
- **Configurable zoom level**
69+
- **Toggle markers**: Show/hide calls, stations, units, personnel
70+
- **Show linked calls**: Display calls linked to the active call
71+
- **Hide labels**: Clean map view for distance viewing
72+
- **Custom center coordinates**: Set latitude and longitude for the default view
73+
74+
#### Weather Widget
75+
Live weather display for the department area:
76+
- **Unit selection**: Standard, Metric, or Imperial
77+
- **Custom coordinates**: Set latitude and longitude for weather data
78+
- Based on the department's configured map center by default
79+
80+
#### Notes Widget
81+
Department notes display:
82+
- **Category filter**: Show notes from a specific category
83+
- **Include uncategorized**: Option to show/hide notes without categories
84+
85+
#### Time Widget
86+
Large clock display for station wall displays:
87+
- **24-hour or 12-hour format**
88+
- **Show/hide seconds**
89+
90+
#### Personnel Status Summary Widget
91+
Aggregated summary of personnel statuses across the department:
92+
- **Font size**: Adjustable for distance viewing
93+
- **Show colours**: Colour-coded status counts
94+
95+
#### Personnel Staffing Summary Widget
96+
Aggregated summary of personnel staffing levels:
97+
- **Font size**: Adjustable
98+
- **Show colours**: Colour-coded staffing counts
99+
100+
#### Units Summary Widget
101+
Aggregated summary of unit statuses:
102+
- **Font size**: Adjustable
103+
- **Show available / responding / on scene**: Toggle which status categories appear
104+
105+
#### Calls Summary Widget
106+
Aggregated summary of call statistics:
107+
- **Font size**: Adjustable
108+
- **Show recent call**: Display the most recent call
109+
- **Show priority counts**: Breakdown by call priority
110+
- **Max priorities to show**: Limit how many priority levels appear
111+
112+
### Widget Configuration Screen
113+
Each widget has a dedicated configuration tab accessible from the Configure screen:
114+
- **Visible columns** toggles for table-based widgets
115+
- **Filter options** to hide certain data
116+
- **Font size sliders** for readability at distance
117+
- **Widget dimension sliders** (width/height in grid units)
118+
- Per-widget specific options
119+
120+
### Additional Screens
121+
122+
#### Calls
123+
- View all active calls with priority indicators and search
124+
- **Create new calls** with name, nature, priority, type, contact info, five location input methods (address, GPS, what3words, Plus Code, map picker), and dispatch selection
125+
- **Call detail view** with notes, images, files, and turn-by-turn navigation
126+
- Edit and close existing calls
127+
128+
#### Personnel
129+
- View all department personnel with status and staffing information
130+
131+
#### Units
132+
- View all department units with current statuses
133+
134+
#### Contacts
135+
- Department contact directory with detail views and notes
136+
137+
#### Notes
138+
- Department notes list with detail view
139+
140+
#### Protocols
141+
- Emergency response protocols/SOPs with detail sheets
142+
143+
#### Map
144+
- Full-screen interactive Mapbox map with pins and detail modals
145+
- Web-specific map implementation
146+
147+
### Push-to-Talk Voice (LiveKit)
148+
- **LiveKit WebRTC** voice channels for communication
149+
- Microphone toggle with mute/unmute
150+
- Audio routing to Bluetooth, speaker, or earpiece
151+
- **CallKeep integration** for OS-level VoIP
152+
- **Bluetooth PTT headsets**: AINA PTT, B01 Inrico, HYS support
153+
154+
### Audio Streams
155+
- Listen to department audio streams (scanner feeds, dispatch radio)
156+
- Play/pause streaming audio
157+
158+
### Notifications
159+
- **Push notifications** via Firebase Cloud Messaging with Notifee
160+
- Android notification channels per call priority
161+
- iOS critical alert support
162+
- **In-app notification inbox** powered by Novu
163+
164+
### Real-Time Updates (SignalR)
165+
- Persistent WebSocket connection for real-time event updates
166+
- Personnel status/staffing, unit status, and call updates propagate instantly to all widgets
167+
- Auto-reconnect with status display in the sidebar
168+
- Manual reconnect button available in the side menu
169+
170+
## Navigation Structure
171+
172+
- **Sidebar/Drawer** with navigation to: Home (Dashboard), Calls, Personnel, Units, Contacts, Notes, Protocols, Map, Configure, Settings
173+
- **SignalR connection status** displayed in the sidebar with reconnect button
174+
- **Logout** from the sidebar
175+
176+
## Settings & Configuration
177+
178+
| Setting | Description |
179+
|---------|-------------|
180+
| **Server URL** | Custom API endpoint for self-hosted deployments |
181+
| **Login Info** | Update username and password |
182+
| **Theme** | Light, Dark, or System |
183+
| **Language** | English, Spanish, or Arabic |
184+
| **Keep Alive** | Prevent screen from sleeping (essential for station wall displays) |
185+
| **Background Geolocation** | Enable/disable background GPS tracking |
186+
| **Bluetooth Device** | Scan and pair BLE PTT headsets |
187+
188+
### Docker Deployment
189+
190+
The web version can be deployed as a Docker container for station displays:
191+
192+
```bash
193+
# Build and run with Docker Compose
194+
docker-compose up -d
195+
196+
# Or build manually
197+
docker build -t resgrid-bigboard-web .
198+
docker run -p 3000:80 --env-file .env.docker resgrid-bigboard-web
199+
```
200+
201+
## Hardware & Permission Requirements
202+
203+
### Required Hardware
204+
| Hardware | Required | Purpose |
205+
|----------|:--------:|---------|
206+
| Internet | **Yes** | API, SignalR, push notifications |
207+
| Large Screen | Recommended | Dashboard widgets are optimized for large displays (TV, monitor, tablet) |
208+
| Speaker | Optional | Audio streams and voice playback |
209+
| Microphone | Optional | PTT voice communication |
210+
| GPS | Optional | Position tracking |
211+
| Bluetooth LE | Optional | External PTT button devices |
212+
213+
### iOS Permissions
214+
| Permission | Reason |
215+
|------------|--------|
216+
| Bluetooth Always | BLE PTT device connectivity |
217+
| Microphone | PTT voice communication |
218+
219+
**Background Modes**: remote-notification, audio, bluetooth-central, voip
220+
221+
**Entitlements** (production): Critical alerts and time-sensitive notifications
222+
223+
### Android Permissions
224+
| Permission | Reason |
225+
|------------|--------|
226+
| Wake Lock | Keep device awake for continuous display |
227+
| Record Audio | PTT voice |
228+
| Capture Audio Output | Audio routing for PTT/voice |
229+
| Post Notifications | Push notifications (Android 13+) |
230+
| Foreground Service | Background services |
231+
| Foreground Service (Microphone) | Voice in foreground service |
232+
| Foreground Service (Connected Device) | BLE in foreground service |
233+
| Foreground Service (Media Playback) | Audio stream in foreground service |
234+
235+
### Desktop (Electron)
236+
- Default window size: 1400×900 pixels (minimum 800×600)
237+
- External links open in the default system browser
238+
- macOS dock icon support with window recreation

docs/apps/calendar.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,49 @@ sidebar_position: 1
33
---
44

55
# Overview
6+
7+
Resgrid provides a suite of purpose-built applications for emergency services and incident management. All applications are built with **React Native** and **Expo**, sharing a common technology foundation while being tailored to specific operational roles.
8+
9+
## Supported Platforms
10+
11+
Every Resgrid application supports the following platforms from a single codebase:
12+
13+
| Platform | Method | Details |
14+
|----------|--------|---------|
15+
| **iOS** | Native via Expo/EAS Build | iPhone and iPad support |
16+
| **Android** | Native via Expo/EAS Build | Phones and tablets |
17+
| **Web** | Expo Web export | Served via nginx/Docker containers |
18+
| **macOS** | Electron | DMG packages for Intel and Apple Silicon |
19+
| **Windows** | Electron | NSIS installer and portable executables |
20+
| **Linux** | Electron | AppImage, DEB, and RPM packages |
21+
22+
## Application Suite
23+
24+
| App | Target User | Primary Purpose |
25+
|-----|-------------|-----------------|
26+
| [Responder](responder) | Individual personnel | Personal status, calls, messaging, shifts, and calendar management |
27+
| [Unit](unit) | Vehicle/apparatus crews | Shared device for unit status, GPS tracking, role assignments, and dispatch |
28+
| [Dispatch](dispatch) | Dispatchers and coordinators | Multi-panel dispatch console with real-time resource management |
29+
| [Big Board](big-board) | Stations and command centers | Customizable dashboard with drag-and-drop widgets for situational awareness |
30+
31+
## Common Technology Stack
32+
33+
All applications share the following core technologies:
34+
35+
- **React Native 0.79** with Expo SDK 53 and New Architecture enabled
36+
- **TypeScript 5.8** for type safety
37+
- **Expo Router** for file-based navigation
38+
- **Zustand** for state management with MMKV persistence
39+
- **TanStack React Query** for server state and data fetching
40+
- **Mapbox GL** for mapping and geolocation
41+
- **SignalR** for real-time WebSocket event updates
42+
- **LiveKit** for WebRTC push-to-talk voice channels
43+
- **Firebase Cloud Messaging** and **Notifee** for push notifications
44+
- **Novu** for in-app notification inbox
45+
- **NativeWind** (Tailwind CSS) with GlueStack UI components
46+
- **Sentry** for error tracking and **Countly** for analytics
47+
- **i18next** for internationalization (English, Spanish, Arabic)
48+
49+
## Self-Hosted Support
50+
51+
All applications support configurable server URLs, allowing organizations running self-hosted Resgrid instances to point each app at their own API infrastructure.

0 commit comments

Comments
 (0)