RVFD App · Information Architecture

Four Doors

Six tabs, fourteen modal sheets, forty routes. Every tool a firefighter needs is already in the app; the problem is guessing which drawer it is in. This is a restructure proposal. No code was changed.

Reviewed 2026-10-23 · Expo SDK 56 · build 1.0.0 (7) · iPhone 17 simulator, signed-out state

Recommendation: four tabs, one Reference index, zero sheet-on-sheet

Today the tab bar is Home, FOG, Apparatus, Incident, Radio, Admin. Two of those are reference libraries, one is the call, one is comms, one is a dashboard, and one is settings wearing a tab costume.

The fix is not new features. It is deciding what each door is for, moving the tasks out of the reference screens, and making the way back the same on every screen.

Before

Home tab
Home · twelve stacked blocks, reference at the bottom
FOG tab
FOG · 64 procedures, plus IRPG and Hazmat as cards
Apparatus tab
Apparatus · nine rigs
Expanded rig
Expanded rig · folder tabs and Read Aloud
Rig actions
Same card, scrolled: Truck Checks and Manuals live down here
Settings sheet
Settings · a sheet with an X, reached from a gear on every tab

Screenshots are the signed-out state: Home, FOG and Apparatus are the only visible tabs until a member signs in, and the officer panels inside Incident, Radio and Admin were reviewed in source rather than on screen.

What's wrong

1. Six tabs, and one of them is settings.

Home · FOG · Apparatus · Incident · Radio · Admin. Admin is not a place firefighters work, it is a settings area with a member list, and it duplicates things the Settings sheet already does. iOS shows five before it starts collapsing.

app/(tabs)/_layout.tsx:105-146 · app/(tabs)/admin.tsx:253-266 · app/settings.tsx:171-190

2. Tasks are hidden inside reference screens.

A truck check is not a reference page, but it is only reachable by expanding a rig card, scrolling past every pump-ops step, and finding the button at the bottom. Equipment manuals sit beside it. Hazmat lookup only exists as a card inside FOG.

app/(tabs)/trucks.tsx:235-236, 950-959 · app/(tabs)/sops.tsx:189-208

3. The same tool has two front doors at different depths.

IRPG is a Home card and a FOG card. Pipeline config is a button in the Admin tab and a row in Settings. Two doors means two mental maps, and they drift.

app/(tabs)/home.tsx:117-121 · app/(tabs)/sops.tsx:189-201 · app/settings.tsx:171 · app/(tabs)/admin.tsx:261

4. Incident is four jobs in one scroll.

Dispatch card, crew scan, the accountability board, and the report queue (pending uploads, pending syncs, ready to review, drafts, submitted) all live on one 3,782-line screen that branches on role. An officer working a live board scrolls past the report lists to reach it.

app/(tabs)/incident.tsx:1-70

5. Fourteen screens are sheets.

Settings chains to three more sheets. Calendar chains to Event, which chains to Edit. Some screens exit with an X, some with a back chevron, some with a swipe. Which gesture gets you out depends on how you arrived, and a sheet on a sheet only dismisses the top one.

app/_layout.tsx:151-389 · app/calendar.tsx:95-131 · app/event-detail.tsx:62-81

6. Home is a twelve-block scroll.

Weather, restriction banner, SPC, roads, out-of-service, officer alerts, fire danger, events, tasks, links, IRPG, Department SOPs. Status and reference are stacked in the same column, so the reference sits below the fold on the screen everyone opens first.

app/(tabs)/home.tsx:99-130

7. Names describe the data, not the job.

"FOG" is internal shorthand. "Apparatus & Pump Ops" is a file name with a title. "Helpful Links" is a drawer holding the roster and three external map sites. A firefighter has to learn the app's vocabulary before they can use it.

app/(tabs)/_layout.tsx:106-146 · src/lib/helpfulLinks.ts:22-61

The common thread. Every finding is the same mistake in a different place: the app is organized by where the data comes from, not by what the person is trying to do. The restructure is one decision applied everywhere, not seven fixes.

Four doors

Each tab answers one question a firefighter actually asks. Nothing needs two doors.

Today"What needs doing right now?" Status strip, out-of-service rigs, my tasks, next event, and three actions: start a truck check, record a report, scan crew.
Incident"What is happening on this call?" One screen, three panes: Dispatch, Board, Reports. A plain member sees Dispatch only.
Reference"What do I look up?" One index: Field Operations Guide (64), Apparatus & Pump Ops (9), Hazmat Lookup, IRPG, Department SOPs, Equipment Manuals, plus the outside links.
Radio"Talk." Monitor and press-to-talk, unchanged. The officer shutdown moves here from Settings.

Where the rest goes

TodayMoves toWhy
Admin tab (members, invites, pipeline, voids)Settings › Department, admin onlySettings is where a person looks for it, and it frees the tab slot. Pipeline config stops existing twice.
Settings sheet (gear on every tab)Settings as a pushed screenA destination should not be a sheet. Back becomes a chevron like everywhere else.
Truck Checks button inside a rig cardToday action, plus a rig pickerA check is a task with a rig, not a property of the rig page.
Ask the Manuals inside a rig cardReference › Equipment Manuals, filtered by rigSame destination, found by looking it up instead of by expanding a card.
Hazmat and IRPG cards inside FOGReference index rowsThey are references. They belong beside the other references, not inside one of them.
Helpful Links card on HomeReference › Outside linksRoster is a reference. The three map sites are references. Neither is a daily action.
Emergency Radio Shutdown in SettingsRadio screen, officer rowAn emergency action belongs with the thing it shuts down, not two levels inside settings.
IRPG card on HomeRemoved (single door)One entry point per tool.
Unchanged on purpose. Every existing screen survives. This is a routing and entry-point change: no data model, no role change, no new subsystem, no rewrite of Incident, and no change to the radio safety state machine.

Mockups

Drawn at 402 × 874 with the app's own tokens: paper #F5F1E8, clay #C2553A, serif headings. Content is sample data, not a claim about current records.

01 · Today

5:20RVFD
RV
RVFDToday
⚙
Red flag warning · SPC elevated
Fire danger: very high
US-93 MM 94.7 · road work
Right now
Truck
check
Record
report
Scan
crew
1110 out of serviceOOS
Failed inspection · 3 days · 1107 check due in 9 days
My tasks
Monthly check, 1114
Restock 1117 medical bag
Next
Tue 19:00 · Monthly training, hall
⌂Today
◎Incident
▤Reference
◉Radio

Status first, then the three things a member actually opens the app to do. No reference cards below the fold.

02 · Incident

5:22RVFD
RV
RVFDIncident
⚙
DispatchBoardReports
MVA · US-93 MM 91.2
Dispatched 17:02 · 2 units on scene
Scan crewPAR 5:07
12 on scenePAR 4 min
Interior 3 · Working 4
Staging 3 · Rehab 1
Cleared 1
1 report ready to review1
⌂Today
◎Incident
▤Reference
◉Radio

One screen, three panes. Board holds the roster and PAR. Reports holds uploads, syncs, ready, drafts, submitted. A member sees Dispatch only, with no role branching in the layout.

03 · Reference

5:24RVFD
RV
RVFDReference
⚙
64 proceduresField Operations Guide
9 rigsApparatus & Pump Ops
Hazmat Lookup›
IRPG Field Reference›
Department SOPs›
Equipment Manuals›
Outside links
511 road map · DNRC fire map · restrictions · roster
⌂Today
◎Incident
▤Reference
◉Radio

The two most-used libraries stay as large tiles at the top, so on-scene reach is tab plus one tap, the same two taps the FOG card already costs today from Home.

04 · Radio

5:26RVFD
RV
RVFDRadio
⚙
Connected · hall repeater
Listening · auto-off in 51 min
Hold to talk
Release to stop. Leaving the tab releases the key and keeps listening.
Officer
Shut down app radio for everyone
⌂Today
◎Incident
▤Reference
◉Radio

Same screen as today, plus the shutdown control where the radio is, behind a confirm. Members never see that row.

05 · Settings

5:28RVFD
‹
Settings
Account
Shawn Fleming · officerSign out
Department
Members & invites›
Pipeline config›
Out-of-service voids›
Emergency radio shutdown›
Audio / voice
Readout voice · pre-recorded, AI-generated
Appearance
SystemLightDark
About
1.0.0 (7)

Pushed screen, chevron on the left, no tab bar. Department section is admin-only; everyone else sees Account, Audio, Appearance, About.

The way out

Five rules. Applied together they make "how do I get out of here" a question nobody has to ask twice.

1. Destinations push. Tasks may be sheets.

Fourteen screens are sheets today. Only three should stay: Record Incident, Incident Report, and Enroll Tag. Each holds unsaved work and each is a focused task. Everything else is a place you go and come back from.

2. Top-left is always the exit, same size, same place.

Chevron on a pushed screen, X on the three task sheets. 44pt target. Never an X in one screen and a chevron in the one behind it.

3. No sheet on a sheet.

Two chains cause the clunk today. Both become straight lines:

before  Settings▸sheet → Pipeline▸sheet → Manuals▸sheet
after   Settings → Department → Pipeline config
before  Calendar▸sheet → Event▸sheet → Edit▸sheet
after   Calendar → Event → Edit

4. The tab bar stays on the four doors, and hides only for a task.

A member mid-check or mid-report sees one labeled exit, not a tab bar they can accidentally tap away from their work.

5. Back returns where you came from.

Not to a tab root. The screen you left is the screen you land on, which matters most for an officer moving between Board and a report.

Cost

Tap counts from the app's current routing. "Scroll" means the target is below the fold on the entry screen.

JobTodayProposedDelta
Start a truck checkApparatus → rig → scroll → Truck ChecksToday → Truck check → rig2 faster
Equipment manual for a rigApparatus → rig → scroll → ManualsReference → Manuals → rig1 faster
Report queue (officer)Incident → scroll past boardIncident → Reportsno scroll
Accountability board (officer)Incident → scrollIncident → Boardno scroll
Hazmat lookupFOG → HazmatReference → Hazmatsame
RadioRadio tabRadio tabsame
Settingsgeargearsame
Open a FOG procedureFOG tab → entryReference → FOG tile → entry1 slower
Pump ops for a rigApparatus → rigReference → Apparatus → rig1 slower
Members and invitesAdmin tabgear → Department1 slower
Pipeline configAdmin → Pipeline, or Settings → Pipelinegear → Department → Pipeline1 slower, one door
The trade is explicit. Four jobs get one tap slower, all of them officer or admin work done away from a scene. Three get faster or lose a scroll, and two of those are the officer's live-call jobs. If FOG at one tap is non-negotiable, take the conservative option below.

Left out on purpose

Alternatives

A · Four doors recommended

Today · Incident · Reference · Radio, Settings behind the gear. The version mocked up above. Best if the goal is "one place for each kind of thing". Cost: one extra tap into FOG and Apparatus.

B · Five tabs, keep FOG where it is conservative

Today · FOG · Apparatus · Incident · Radio. Admin folds into Settings exactly as in A, so the tab bar drops to five without merging the two reference tabs. The buried tools get fixed in place instead:

  • Each rig row on Apparatus carries its own actions, visible without expanding: Check, Manuals, Status.
  • Hazmat, IRPG, Department SOPs and Manuals become a Reference row on Today, above tasks.
  • The way-out rules apply unchanged, since they are independent of the tab count.

Keeps FOG and Apparatus at one tap. Does not fix the "two reference tabs" split, and Today gets one more row than in A.

C · Task-first launcher not recommended

Today becomes a symmetric grid of six large tiles: truck check, report, scan crew, reference, radio, incident. Everything is one tap from one screen and the tab bar mostly disappears.

It reads well in a mockup and is worse in the field: a firefighter on a scene has to read six tiles and choose, where a tab bar lets them hit a known position without looking. Symmetry is not the same as clarity.

If you say go

Each step is independently shippable. If the first one is wrong, the rest never happen.