IMPORTANT CAVEAT: This application is provided solely for training and pedagogical purposes; its information is not guaranteed for accuracy and must not be used for operational decision-making. Always rely on the official Aircraft Flight Manual (AFM) and approved checklists when operating an aircraft.
NOTE: This app has been entirely vibe coded. If you hate that, feel free to close your browser window in disgust and not use it.
A native iPad application for pilot students at Aéroclub du Jura GVMP. This app guides pilots through all checklists during a flight, from preflight to shutdown, while recording GPS tracks and flight data.
- F-HVXA - WT9 Dynamic (Checklist v2.1e, March 2025)
- HB-PFA - Piper Archer II PA-28-181 (Checklist v1.6e, July 2020)
- Two aircraft supported: WT9 Dynamic (F-HVXA) and PA-28-181 (HB-PFA)
- All 16 flight phases from official checklists
- Aircraft selection in Settings - checklists, speeds, and limits adapt automatically
- Checklists displayed exactly as in the official documentation
- Easy navigation between phases
- Quick phase selector for jumping to any checklist
- Speed reference card with aircraft-specific speeds always accessible
- Step-by-Step Highlighting: Items highlighted one at a time; tap anywhere in the checklist area to advance
- Smart completion: When all items are checked, the NEXT button pulses to draw attention
- Learning Mode: Toggle to show all checks for studying, or hide memorizable checks to test memory
- Full-screen map with real-time aircraft position and track
- Multiple map layers:
- Apple Maps (Standard and Satellite)
- Swiss ICAO Chart (1:500,000) from SwissTopo
- Segelflugkarte (1:300,000) - seamless switch at higher zoom
- Swiss Landeskarten (national map)
- SWISSIMAGE (aerial imagery)
- Live speed, altitude, heading, and time display overlay
- GPS status indicator
- Scale bar with accurate distance measurement
- Offline maps: Download Swiss ICAO Chart (~100 MB) for offline navigation
- Automatic GPS recording during flights
- Configurable recording interval (1-30 seconds)
- Background location tracking support
- Track visualization on map
- GPS failure flags on speed and altitude indicators when signal is lost or degraded
- Real-time GPS ground speed display during flight phases
- Displays "GND SPD" (ground speed) with "kt" (knots) unit
- Color-coded feedback:
- Green: Speed within 5 kt of target
- Orange: Speed outside ±5 kt range
- Flashing Red/White: Below stall speed (aircraft-specific: 42 kt for WT9, 53 kt for PA-28)
- Target speed guidance based on current flight phase and aircraft type
- Arrow indicators showing speed trend (up/down/on target)
- Automatically hidden during ground operations (taxi, parking)
- Optional feature to display estimated indicated airspeed (IAS) calculated from GPS ground speed and wind data
- Uses real-time wind data from MeteoSwiss automatic weather stations
- Finds nearest weather station and applies wind correction to ground speed
- Displays "EST. IAS" with amber highlighting when active
- Important limitations:
- Only works within Switzerland (with ~5 NM margin at borders)
- Requires constant cellular connection
- Can be highly inaccurate - always rely on aircraft's onboard airspeed indicator
- Disabled by default; enable in Settings with mandatory safety warning acknowledgment
- Real-time GPS altitude display (feet MSL)
- Light blue background for easy visibility
- Displayed alongside speed indicator during flight phases
- Complete flight history with all parameters
- Custom flight names: Name your flights for easy identification (e.g., "Circuits 2 (F-HVXA)")
- Flight duration (engine start to shutdown)
- Distance travelled in kilometers
- All times recorded chronologically:
- Session Start
- Engine Start
- Take-off (Line Up +2 min)
- Landing (auto-detected)
- Engine Shutdown
- Session End
- GPS track visualization on map
- Altitude profile graph: Time-based altitude chart with flight event markers (Engine Start, Take-off, Landing, Shutdown)
- Go-arounds and touch-and-goes: Detected and displayed on altitude profile
- Notes for each flight
- Flight sharing: Generate shareable image cards with flight summary and map
- Export flights to GPX format (standard GPS track format)
- Export flights to JSON format (includes all timing data)
- Export all flights: Export entire flight log as a ZIP archive
- All timing data included (start, engine, takeoff, landing, shutdown, stop)
- Distance calculation included in exports
- Bulk import: Import multiple flights from ZIP archives
- Import GPX or JSON files from other sources
- Compatible with most flight tracking software
- Share flights via any iOS sharing method
- Dark theme for reduced glare
- Large, high-contrast buttons
- Aviation-inspired color scheme (gold, blue, green)
- Large readable text
- Screen stays on during flights
- Adaptive layout: Optimized for both iPad (side panel) and iPhone (compact view)
- Phase completion tracking with color-coded indicators:
- Green dot: Phase completed (pressed NEXT)
- Orange dot: Phase skipped (jumped ahead without NEXT)
- Red dot: Phase skipped with missing action (e.g., Engine Start button not pressed)
- Gold dot: Current active phase
- Departure briefing modal with runway, routing, speeds, and emergency procedures
- Approach briefing modal with approach info, speeds, and missed approach
- Small widget: Quick aircraft selection buttons for F-HVXA and HB-PFA
- Medium widget: Aircraft selection plus Flight Log shortcut
- Deep links to start flights directly from home screen
The app includes all 16 phases from the official checklists (same structure for both aircraft):
- Preflight Check (Page 1)
- Check Before Engine Start (Page 1)
- Engine Start (Page 1) - with "Engine Start" button
- Check After Engine Start (Page 2)
- Taxi Check (Page 2)
- Runup (Page 2)
- Check Before Departure (Page 2) - with "Ready for Line Up" button
- Line Up Check (Page 3)
- Climb Check (Page 3)
- Cruise Check (Page 3)
- Descent Check (Page 3)
- Approach Check (Page 3)
- Landing Check (Page 3)
- After Landing Check (Page 4)
- Engine Shutdown and Parking Check (Page 4) - with "Engine Shutdown" button
- At the Hangar (Page 4)
- iPad Air (11-inch) or larger recommended
- iPadOS 17.0 or later
- Any iPhone running iOS 17.0 or later
- Compact UI adapts to smaller screens
- Location services enabled
- Xcode 15.0+ for building
- Clone or download this repository
- Open
AeroCheck.xcodeprojin Xcode 15+ - Select your development team in Signing & Capabilities
- Connect your iPhone/iPad or select a simulator
- Build and run (⌘R)
- In Xcode, select Product → Archive
- Follow the distribution wizard
- Choose Ad Hoc or App Store distribution
- Launch the app
- Select your aircraft in Settings if needed (F-HVXA or HB-PFA)
- Tap "START FLIGHT"
- GPS tracking begins automatically
- Follow the checklists in order
- Use "PREVIOUS" and "NEXT" buttons to navigate
- Tap the phase indicator to jump to any checklist
- Access speed reference anytime via "SPEEDS" button
- iPad: Side panel shows all phases, flight times, and current status
- iPhone: Tap the info button (i) to view flight info and phases in a sheet
- ENGINE START: Records the engine start time (shown on Engine Start phase)
- READY FOR LINE UP: Adds 2 minutes to current time for take-off time (shown on Check Before Departure phase)
- ENGINE SHUTDOWN: Records the engine shutdown time (shown on Engine Shutdown phase)
Tap on the briefing reminder text to open interactive briefings:
- Departure Briefing: LSZQ 25, wind, routing, speeds (Vr/Vx/Vy/Vbg), emergency procedures
- Approach Briefing: LSZQ 25, routing, approach speeds, missed approach, alternate
- Complete all checklists through "At the Hangar"
- Tap "END FLIGHT" on the final page
- Flight is saved with all data to the Flight Log
- Access via "FLIGHT LOG" on home screen
- View all recorded flights
- Tap any flight to see details and map
- Export flights to GPX or JSON format
- Add notes to flights
- Delete unwanted flights
AeroCheck/
├── AeroCheck.xcodeproj/
│ └── project.pbxproj
├── AeroCheck/
│ ├── AeroCheckApp.swift # App entry point
│ ├── Info.plist # App configuration
│ ├── Assets.xcassets/ # Images and colors
│ ├── Models/
│ │ ├── Aircraft.swift # Aircraft types & metadata
│ │ ├── Flight.swift # Flight data model & GPX
│ │ ├── Checklist.swift # Checklist phases & items
│ │ ├── WT9ChecklistData.swift # WT9 Dynamic checklist data
│ │ ├── PA28ChecklistData.swift # PA-28-181 checklist data
│ │ └── AppState.swift # App state management
│ ├── Views/
│ │ ├── ContentView.swift # Root view
│ │ ├── HomeView.swift # Home screen
│ │ ├── FlightView.swift # Active flight view
│ │ ├── FlightLogView.swift # Flight history
│ │ ├── NavigationView.swift # Full-screen navigation map
│ │ └── SettingsView.swift # Configuration
│ ├── Components/
│ │ ├── DesignSystem.swift # Colors, fonts, styles
│ │ └── ChecklistView.swift # Checklist display
│ └── Services/
│ ├── LocationManager.swift # GPS tracking
│ └── OfflineMapManager.swift # Offline ICAO chart caching
├── AeroCheckWidget/
│ └── AeroCheckWidget.swift # Home screen widgets
└── README.md
Exported flights use the standard GPX 1.1 format with extensions:
<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1" creator="AeroCheck">
<metadata>
<name>F-HVXA - Dec 1, 2025</name>
<time>2025-12-01T10:00:00Z</time>
</metadata>
<trk>
<name>F-HVXA</name>
<extensions>
<airplane>F-HVXA</airplane>
<engineStartTime>2025-12-01T10:05:00Z</engineStartTime>
<lineUpTime>2025-12-01T10:15:00Z</lineUpTime>
<landingTime>2025-12-01T11:00:00Z</landingTime>
<engineShutdownTime>2025-12-01T11:05:00Z</engineShutdownTime>
<distanceKm>45.2</distanceKm>
<notes>Training flight</notes>
</extensions>
<trkseg>
<trkpt lat="47.123" lon="7.456">
<ele>430</ele>
<time>2025-12-01T10:00:00Z</time>
<speed>0</speed>
<course>0</course>
</trkpt>
<!-- More track points -->
</trkseg>
</trk>
</gpx>JSON export includes all flight data in a structured format:
{
"id": "uuid-string",
"airplane": "F-HVXA",
"startTime": "2025-12-01T10:00:00Z",
"engineStartTime": "2025-12-01T10:05:00Z",
"lineUpTime": "2025-12-01T10:15:00Z",
"landingTime": "2025-12-01T11:00:00Z",
"engineShutdownTime": "2025-12-01T11:05:00Z",
"stopTime": "2025-12-01T11:10:00Z",
"notes": "Training flight",
"gpsTrack": [
{
"latitude": 47.123,
"longitude": 7.456,
"altitude": 430,
"timestamp": "2025-12-01T10:00:00Z",
"speed": 0,
"course": 0
}
]
}In Settings:
- Aircraft in use: Select between F-HVXA (WT9 Dynamic) and HB-PFA (PA-28-181) - this changes checklists, speeds, and stall warnings
- GPS Recording Interval: 1-30 seconds between points
- Show Estimated Airspeed (Experimental): Display estimated IAS calculated from GPS ground speed and MeteoSwiss wind data. Only works in Switzerland with cellular connection. Shows safety warning before enabling.
- Keep Screen On: Prevents display sleep during use
- Always Use UTC Times: Display all times in UTC with a (UTC) suffix
- Force ICAO Chart Layer: Keep ICAO Chart (1:500,000) at all zoom levels instead of switching to Segelflugkarte
- Offline Mode: Use only cached ICAO Chart for navigation (requires download)
- Step-by-Step Highlighting: Highlights checklist items one at a time; tap anywhere to advance to the next item (auto-scrolls if needed)
- Learning Mode (show all checks): When OFF (default), memorizable checks are hidden to test your memory. When ON, all checks are visible for studying. Hidden phases vary by aircraft
Quick access to all important speeds (KIAS). The SPEEDS modal shows aircraft-specific values:
| Speed | Value | Description |
|---|---|---|
| Vso | 33 | Stall (flaps down) |
| Vs | 42 | Stall (clean) |
| Vr | 40 | Rotation |
| Vx | 55 | Best angle |
| Vy | 70 | Best rate of climb |
| Vcc | 85 | Cruise climb |
| Vfe | 76 | Flaps extension |
| Vbg | 70 | Best glide |
Max crosswind: TO 14 kt / LDG 16 kt
| Speed | Value | Description |
|---|---|---|
| Vso | 47 | Stall (flaps down) |
| Vs | 53 | Stall (clean) |
| Vr | 53 | Rotation |
| Vx | 64 | Best angle |
| Vy | 76 | Best rate of climb |
| Vcc | 87 | Cruise climb |
| Vfe | 103 | Flaps extension |
| Vbg | 76 | Best glide |
Max crosswind: 17 kt
Target speeds vary by aircraft. Examples for WT9:
| Phase | Target | Notes |
|---|---|---|
| Climb | 55 | Vx - best angle of climb |
| Cruise | 100 | Cruise speed |
| Descent | 85 | Vcc - cruise descent |
| Approach | 65 | Initial approach with F1 |
| Landing | 55 | Final approach F3 |
Note: Speed indicator is hidden during ground operations (taxi, runup, parking)
- WT9 F-HVXA Checklist Version 2.1e (March 2025)
- PA-28-181 HB-PFA Checklist Version 1.6e (July 2020)
- Aéroclub du Jura GVMP
- SPHAIR Bases et procédures
- All flight data stored locally on device
- GPS data never transmitted to external servers
- Export only when explicitly requested by user
The app is provided as-is and support is not guaranteed. In case of issues, feel free to open an issue on GitHub.
Safe flying!