User Manual
Everything each module does, in plain language.
Not for operational use.PilotDeck is an open-source companion for training and familiarization. Figures it imports or computes must always be verified against your airline's official OFP, loadsheet and approved software.
1. Quick start
The typical flow for a flight:
- Flight Setup — import the flight from SimBrief (one click with your username) or load the company OFP PDF. Everything else fills itself from this.
- Weather — METAR/TAF for departure, destination and all alternates are fetched automatically. Refresh before you lose internet; the last data stays available offline.
- Inflight Display — during the flight: departure card, cruise ETAs, the FPL waypoint list (log times/fuel over each waypoint), arrival card, and the post-flight times/fuel summary.
- Moving Map— tracking starts by itself 1 h 30 before the STD of a flight with a tail number or callsign and stops once the aircraft is parked (chocks-off is the first movement from the stand; chocks-on the moment it stops on the stand): with onboard internet (e.g. Starlink) the app records the whole trajectory from adsb.lol and fills chocks-off, take-off, waypoint ATAs, landing and chocks-on by itself, while continuously refreshing the ETA. The pilot doesn't type a thing. Weather filters (satellite, radar, SIGWX, SIGMET) switch on under Layers, right above the map.
The app is a PWA: on an iPad/phone open it in the browser and use “Add to Home Screen” to get a full-screen app that also works offline.
Using it over your home WiFi: the app runs on your computer and every device on the same network can open it at http://<your-mac>.local:3002 (the Bonjour name is stable; find the raw IP with ipconfig getifaddr en0 if you prefer). For tablet use, run the production build (npm run build && npm start) — it is faster and works offline. Over plain HTTP the browser disables the offline cache and device GPS; everything else works while the computer is reachable.
2. Flight Setup (importing your OFP)
Three ways to load a flight:
- SimBrief — enter your SimBrief username once (kept in Settings) and press “Import latest OFP”. The full navlog, fuel, weights, times and alternates are imported.
- OFP PDF (LIDO) — loads a company OFP from Qatar Airways (LIDO “Flight Dispatch Release”) or GOL (LIDO “Important files” export). Each airline has its own reader; any other PDF is refused. A GOL OFP loads only if every figure it prints more than once agrees. The PDF is parsed on your device and never uploaded anywhere. After importing, always spot-check the figures.
- Manual entry — type the basics (flight number, airports, times, route, alternates). Manual flights have no waypoint list.
Backups: “Download flight backup” saves the whole flight as a JSON file, crew names included; “Restore” loads it back — including backups exported from the original eFlightBag app. “Clear flight” ends the flight: its crew names, recorded track and load sheet go with it. Loading a different flight does the same. Your own name and seat, aircraft profiles and preferences are never touched. Loading a revised plan for the same flight keeps its crew and track.
3. Inflight Display
Five tabs, mirroring the phases of the flight:
- Departure — STD (edit it to record a revised STD), a live “To go / Delay” counter, chocks-off time, final ZFW (which drives TOW and LWT), ATIS/RWY/intersection. If the OFP flagged ETOPS or MEL items, acknowledge buttons appear until you tap them.
- Company notices(on the Departure and Arrival tabs, above the notes) — when the OFP carried company bulletins (GOL), tap the card to see every one exactly as issued, kept on this device so it works offline. Notices naming your departure, destination or alternates come first, marked with the airport's role (e.g. “ALTN 1 · SBGR”); all the others follow under “Other”. None is ever hidden — read them all.
- Cruise — take-off time (entering it computes the enroute day/night profile), flight time, TOD (ETA − 30 min), ETA in UTC and local, estimated arrival fuel and landing weight, plus sunrise/sunset at both airports and enroute.
- Live position(on the Cruise tab) — fetches the aircraft's real-time position from the free community ADS-B network (adsb.lol — no key, no cost) or from this device's GPS, finds where you are along the planned route, and shows how many minutes ahead/behind plan you are running — one tap applies it as the enroute delay and shifts the ETA. Ocean coverage on the free networks is limited; device GPS needs HTTPS (or localhost). Not for navigation.
- FPL — the waypoint list. Auto keeps the current leg in view. Tap a waypoint to log the actual time (ATA) and fuel on board: saving projects your time deviation as an enroute delay (moving the ETA) and carries the fuel deviation forward to every later waypoint and the arrival-fuel estimate. Amber/red fuel lines mean you are within 300 kg of — or below — the minimum required fuel over that waypoint.
- Arrival — ETA, delay vs STA, arrival ATIS/temperature/stand, dispatch contact, and arrival notes.
- Post-flight — actual times (block/flight time computed) and the fuel summary with copy buttons for the tech log paperwork.
4. Weather (METAR/TAF)
The Weather page automatically shows METAR and TAF for the departure, destination and every alternateof the loaded flight — plus any airport you add manually. Data comes from the NOAA Aviation Weather Center (the same worldwide feed most EFB products use), fetched through the app's own server proxy with a fallback source when the main API is down.
- Each station shows the raw text and a plain-language decode.
- The colored badge is the flight category computed from the METAR (VFR / MVFR / IFR / LIFR), and the age badge turns amber when a METAR is older than 75 minutes.
- The last fetched data is cached on the device — you can re-read your briefing weather in flight, offline. METARs refresh every 30–60 min; TAFs are issued every 6 h but can be amended anytime.
5. Moving Map & weather filters
One map for the whole flight: your flight as it is flown, and the weather over it when you switch it on. The map comes first: it fills the screen under the title and the Layers bar; the SIGMET list, About these layers and the tracking settings are a scroll away.
- Tracking — starts by itself 1 h 30 before the STD of a flight with a tail number or callsign, from adsb.lol, and fills chocks-off, take-off, waypoint ATAs, landing and chocks-on (see Quick start). The line above the map says what it is doing (tracking, waiting, finished), how many points it has, where the last position came from and how old it is.
- Following / Free pan — while tracking runs, Following keeps the aircraft in the middle of the map — at the gate too. To look at the weather along the route then, tap it to Free pan.
- The track — solid where positions were received; a faint dashed line where none came. With no position for a while the aircraft is drawn fainter at its estimated place, with a dashed line back to the last real one. Fill the gaps from the networkpulls the missing stretches from WayPoint's track and adsb.lol's archive; Export GeoJSON saves the recorded track; Clear track deletes it.
- The route— the line from the departure airport through the flight plan's waypoints (filled = seen there, dashed outline = time estimated, plain = ahead) to the destination: the line the SIGMETs are placed against. A flight entered by hand, with no waypoint positions, gets the straight line between its two airports, said under the map as approximate.
The map, the track and the aircraft work offline (the chart under them — land, FIR lines, airports, relief — is inside the app; see Base map).
Weather filters — under Layers, the bar right above the map. It says what is on (e.g. CB · SIGMET · FIR); tap it to open the chips, tap it again to fold them away. It opens folded at every visit. The filters are all OFF until you switch them on, and a filter that is off costs nothing (no download, no timer). Your choice is remembered; the SIGMET and CB a quick briefing turns on are not, and chips you had set on the old Wx Map are not carried over. With a flight loaded, SIGMET and CB come on by themselves from 4 hours before the planned off-blocks until the flight is over (on-blocks, or 1 hour after the planned arrival); switch either off and it stays off for that flight. What a layer on screen is and how old it is (the SIGWX chart's issue and valid time, the SIGMET list's time, where radar exists) is written right under the map, with the line's note; the colour legend and the notes on each source are under About these layers, after the SIGMET list.
- Satellite IR — live geostationary infrared from NASA (GOES East/West, Himawari) and EUMETSAT (Meteosat 0° and Indian Ocean), stitched to cover every longitude. Imagery trails real time by roughly 30–70 minutes.
- Radar— the Environment Canada 1 km North-American composite, refreshed every 6 minutes. Ground radar only exists over radar-equipped land: over oceans, deserts and most of Africa/Asia there is no radar anywhere — that's physics, not a missing layer. Outside North America (Brazil included) this layer is empty: no echo there does not mean no precipitation, and the line under the map says so while Radar is on.
- SIGWX — the WAFS significant-weather forecast polygons (CB clusters, turbulence, icing, jet streams) that dispatch charts are built from, toggled per hazard and colored to match the legend chips. The map opens on the most current chart (Now): from the newest cycle NOAA has published, the 3-hourly valid time nearest now (each chart is a forecast for that one time; if the newest cycle is missing, the same valid time from the cycle before). Under the map it says which one, e.g. issued 12Z · valid 21Z (T+9). If NOAA is late with the newest cycle, the older chart stays, the caption says so in amber and PilotDeck asks again every 5 minutes. No chart older than 18 h is drawn. FL100–600 only: nothing below FL100, and CB bases are not given. While a SIGWX chip is on, a row of time chips stays above the map, with Layers folded too: Now · 21Z · 03 Oct 00Z · 03Z…— Now is the chart valid now; the others are the same cycle's later charts, 3-hourly up to T+48 (the day is written where it changes, counting from today, UTC). While an older chart is held because the newer one could not be loaded, its chip shows its own time, never Now. Tap one to see that forecast; the map changes once its charts have come, and the caption always names the chart on screen (issue and valid time). With a flight loaded, or a briefing with its times, a small plane marks the charts that cover your flight, take-off to landing (the line under the map gives both times). The map never moves away from Now by itself, and every visit starts on Now again.
- SIGMET— the warnings in force, issued by each FIR's meteorological watch office and relayed by NOAA: thunderstorms (red), severe turbulence and mountain wave (orange), severe icing (blue), volcanic ash (grey), tropical cyclone (violet). Solid, filled areas — the dashed ones are the SIGWX forecast. Tap an area to read the original text and a plain decode under the map. A SIGMET is valid for at most 4 hours (6 for ash and cyclones) and is issued again if the weather persists, so one that ends before you get there stays on the map as it is, with both times in the list (“valid 1530–1930Z · you pass about 1948–2025Z”); the ones in force around your passing time are drawn bolder, and an outline with no fill is a SIGMET already issued that has not started yet. A tag starting with ≈ means the area was drawn by NOAA from the wording (or is the whole FIR), not from points the met office wrote — or that NOAA could not read the area at all: then only a ring is drawn and the SIGMET is listed whatever your route. With a flight loaded, the list under the map shows the SIGMETs on your route in the order you meet them — within 25 NM of the flight-plan route, or 50 NM of the straight line when the flight has no waypoints. Refreshed every 5 minutes while the page is open — the time of the data is written under the map, and NOAA's list itself can run a few minutes behind. Where two tags would sit on top of each other, the one you tapped goes first, then those on your route; a tag on your route gives way only to another one on your route, and the others give way to both — zoom in for room. An ash or cyclone SIGMET's forecast time (FCST 1700Z) is written with its own tag. Every area is drawn whatever its tag: tap it to read it in full. If the list cannot be refreshed it stays, with its age: a SIGMET that has ended by the clock since then becomes a dashed outline and is listed as ended — nobody could check whether it was issued again. US-land convective SIGMETs are not included yet. It shows what was published; it is not the official briefing.
Press Loop to replay the last 3 h of satellite (every 30 min) and 2 h of radar (every 12 min) and see cells build, decay and move — drag the slider under the map to step through frames; it downloads about 2–3 MB each time it loads, so it stays off until you press it. In flight the weather filters need internet (e.g. Starlink); without it the map, the track and the aircraft keep working and the filters say they cannot load.
6. Base map (the chart under the map)
The chart the route and the weather are drawn on. It is inside the app (about 1.2 MB, downloaded with it), so it works offline from the first install, and nothing in it is fetched from another site.
- Land, lakes and country borders — Natural Earth, in more detail as you zoom in.
- FIR — FIR boundaries as dashed lines, with the ICAO code (from zoom 3) and the name under it (from zoom 4). A vertical block is labelled with its limits, e.g. OTDF SFC–FL245north-east of Qatar (Bahrain FIR above it). The lines come from the VATSIM VAT-Spy community data, traced from the AIPs; the Gulf was corrected against AIP UAE, Qatar and Bahrain ENR 2.1. Brazil's FIRs (Amazônica, Brasília, Curitiba, Recife, Atlântico) are not drawn until they are checked against AIP Brasil. The date of the FIR data is written under the map; it turns amber once three AIRAC cycles have come into force since, as borders may have changed.
- Airports — a dot per airport, thinned by its longest runway: only fields of 10,000 ft and more at world zoom, more as you zoom in, every airport from zoom 7. ICAO codes from zoom 4, longest runways first, where they fit. Your departure and destination keep their own rings and names.
- Relief — terrain shading (Andes, Zagros, Hajar…). It fades out when you zoom in close, and is not drawn under Satellite IR or Radar.
- Grid — latitude and longitude lines every 10°, 5° from zoom 4 and 1° from zoom 6, labelled at the edges of the map.
The four switches are the Chart chips under Layers, with the weather filters. The map starts light: only Grid on — switch FIR, Airports or Relief on when you want them; your choice is remembered on this device (a choice made before this light start was not kept: everyone starts light once). A quick briefing never changes these switches. A layer switched off costs nothing.
Not on the chart: airways, fixes, navaids and minimum altitudes — there is no open, current, worldwide source for them. The chart is for situational awareness only, not for navigation: always use your company's charts.
7. Quick weather briefing (from the WayPoint roster)
For a day of short legs, with no time to load a flight plan for each one: on the WayPoint roster, a GOL flight's card has Weather briefing. It opens the Moving Map in briefing mode for that flight only — a one-line strip above the map names it (e.g. Briefing · G3 1516 · GRU → MAO · dep 22:00Z), the map draws the straight line between the two airports, and the SIGMET and SIGWX CB layers are switched on (your other chips stay as you left them).
- The SIGMETs on the line are listed under the map in the order you meet them, each with its validity and the time you pass it, counted from the roster's departure + 15 min taxi. Without times from the roster they are listed as in force now.
- The line is approximate (50 NM each side counts as "on your route"): the flight-plan route may pass elsewhere.
- Flight Setup. With no flight loaded, the briefing puts a minimal flight there: the two airports, the flight number, the date and STD/STA from the roster — nothing else (no OFP, fuel, crew or waypoints). It is the same flight you would get typing those boxes in Manual entry, and it acts like one: the WayPoint card shows the route and the number, tracking starts by itself 1 h 30 before STD when the number gives a callsign (G3 → GLO), and Clear flight ends it. A flight already loaded (an OFP, Mission+, SimBrief, one you typed) is never touched: nothing is added and nothing merged. The strip says which happened: Added to Flight Setup or Your loaded flight was kept. Each link adds its flight once: reopening the same link after you cleared the flight does not add it again (a link with new times from the roster is a new link). No flight is added without both times from the roster, for a leg the roster marks as deadhead, or for an airport whose ICAO code PilotDeck's list does not have.
- The next leg.A day of several legs needs no clearing between them: the next leg's link replaces the flight an earlier leg's link put in Flight Setup — only while that flight is still exactly as the briefing wrote it (nothing typed into it on any page, the W&B load sheet included; no OFP, Mission+ or SimBrief loaded over it) and has not moved (no off-blocks, take-off, landing or on-blocks time, no track recorded — once its tracking window has opened, PilotDeck first asks WayPoint, which records a leg even while the iPad sleeps, and the strip says so meanwhile). The strip then names the leg it took the place of. If you edited it, it is in progress or flown, or WayPoint could not be reached, it is kept — its track and logbook times are never lost — and the strip says why: it has been edited, it is in progress or flown or WayPoint could not be asked (open the link again to retry); clear it in Flight Setup (Clear flight) to load this leg — log a flown leg first, as Clear flight takes its track and times with it. An earlier leg's link opened again over a later leg's untouched flight puts the earlier leg back.
- While the briefing is on, the loaded flight's aircraft, track and tracking cards are hidden. Exit briefing goes back to the plain map (your flight, if one is loaded, comes back; it kept recording).
- The briefing knows the world's large and medium airports and every South American airport with an IATA code (Bonito, Juazeiro do Norte…). An airport it does not have is said plainly; the map goes to the other airport, without a line.
8. Dangerous Goods
Record each NOTOC line: primary hazard class (the 12 ICAO drill categories), the drill letter(s) and where the load is. Each entry links to its full emergency drill card — inherent hazard, hazard to aircraft/occupants, spill-or-leak procedure, firefighting procedure and additional considerations (per ICAO Doc 9481 drills).
9. Briefing, PA Guide & Crew Rest
- Briefing— departure and arrival briefing prompt lists (PM items, PF items, threats & mitigations, special operations).
- PA Guide— editable announcement templates with placeholders like [DESTINATION_NAME], [DURATION] or [ETA_LOCAL]. “Generate PA” fills them from the loaded flight; anything it couldn't fill stays highlighted so you catch it before keying the PA. Your name, seat and airline are set in Settings; the other crew names are typed on the PA page for each flight and are cleared with it.
- Crew Rest — splits the cruise window into rest periods. Window either derived from take-off/ETA (with configurable margins after take-off and before landing) or entered manually. Schemes like R/2R/R give some crew double units. All rests get equal units rounded down to whole minutes.
10. Pilot Toolbox
Decoders, calculators and references — all fully offline. Grouped in three rows at the top of the page:
Decoders — paste and read:
- METAR / TAF — paste any raw report; decoding is instant, including trends (TEMPO/BECMG/PROB), RVR and remarks.
- SNOWTAM — decodes the current ICAO Global Reporting Format (GRF, in force since Nov 2021): runway condition codes per third, coverage, depth, contaminant, reduced width, and the situational items (snowbanks, drifting snow, chemical treatment…). Legacy pre-2021 messages are detected and flagged.
- RCAM / RWYCC — type a code like 4/3/3 for an instant braking-action readback, with the full Runway Condition Assessment Matrix and its upgrade/downgrade rules below.
Calculators — exact formulas, unit-tested against published reference values (ICAO Doc 8168 cold-temperature table, FAA climb tables, ISA equations):
- Density Alt — pressure altitude, ISA deviation and density altitude; one tap prefills elevation, QNH and OAT from the last METAR stored by the Weather page.
- Cold Temp — ICAO Doc 8168 altimeter corrections. Enter the aerodrome temperature/elevation and the published altitudes; each comes back with its correction, rounded up like the published table, plus the operational notes (what to correct, ATC advice).
- Wind — head/tail and crosswind components for steady wind and gust, with the side spelled out.
- Climb / Descent — SID/missed-approach gradient to required rate of climb at your groundspeed (and the reverse check), plus 3:1 descent planning with V/S targets.
- Speeds — Mach ⇄ TAS, TAT/SAT ram rise, CAS/Mach crossover altitude.
- Fuel— endurance & bingo times, arrival fuel check, litres⇄kg uplift cross-check with receipt density, and ETP/PNR gross-error checks.
- Units — kg/lb, L/USG, hPa/inHg/mmHg, m/ft, NM/km/SM, kt/km·h/m·s, °C/°F.
References:
- NOTAM Abbrev — 235 searchable ICAO contractions.
- NAT HLA — North Atlantic HLA quick reference compiled from ICAO NAT Doc 007 (Edition V.2026-1): extent, approvals, datalink mandate, OTS, SLOP, contingency and weather-deviation procedures. Reference only — your OFP and OM remain controlling.
- Metric FL — the China RVSM metres⇄feet table; tap a level for a large-type readback.
11. Your data, backups & offline use
- Everything lives only on your device (browser storage). There is no account, no cloud, no tracking. OFP PDFs are parsed locally.
- The only network calls are: fetching weather (through the app's proxy to NOAA), the SimBrief import you trigger yourself, and the position polling of adsb.lol while a flight is loaded. Inside WayPoint, the flown-track fetch and the flight registration are made with your WayPoint session.
- Use Flight Setup → “Download flight backup” before clearing data. Backups are plain JSON and also accept files exported by the original eFlightBag.
- The whole app is downloaded to your device for offline use — every page keeps working in airplane mode, including ones you never opened. Check Settings → Offline for the “Ready for offline use” mark; weather shows the last cached reports with their age.
- On iPad: Safari and the Home Screen icon keep separate storage. After adding the app to the Home Screen, open it from the icon once while onlineso it downloads its own offline copy — and enter your data there. Using the installed icon regularly also protects the data from Safari's automatic 7-day cleanup.
12. Credits & license
PilotDeck is free software under the GNU GPL v3. It began as a reimplementation of eFlightBag by Ricardo Riet Correa (GPLv3) and has since grown well beyond it. Airport database from the public-domain OurAirports project. METAR/TAF parsing by the MIT-licensed metar-taf-parser. Weather data by the NOAA Aviation Weather Center. SNOWTAM/RCAM decoding implemented from ICAO Annex 15 / PANS-AIM (Doc 10066) and FAA AC 91-79B public material.
Base map. Land, lakes, borders and terrain relief: Natural Earth (public domain). FIR lines and names: the VATSIM VAT-Spy Data Project contributors, licensed CC BY-SA 4.0; PilotDeck adapted them (FIR level only, shared borders drawn once, simplified, names curated, the Gulf corrected from the AIPs, Brazil left out until checked), and the adapted FIR files are licensed CC BY-SA 4.0 as well, separately from the app's GPLv3 code. Airport runway lengths: OurAirports (public domain). Sources, dates and every change are listed in the base-map data notice. Situational awareness only — not for navigation.