AeroStaff Pro is a React Native app for airport shift work. It keeps the things that usually end up scattered across calendars, screenshots, notes, staff tools, and flight boards in one place.
- Tracks shifts with month and week views.
- Imports shift rosters from files and screenshots.
- Shows same-day and next-day flight activity for the selected airport.
- Supports flight data providers such as AirLabs and Flightradar24 through user-provided API keys.
- Opens flights in Flightradar24 when the installed app can handle the route.
- Provides Android widgets and a Wear OS companion for quick shift and flight information.
- Stores operational notes, contacts, manuals, passwords, and useful links.
- Includes notification controls for flight and shift reminders.
This is not an AI app. AeroStaff Pro does not include a chatbot, language model, AI decision-making, or AI features for end users.
Claude and Codex are used as development tools for planning, implementation, debugging, refactoring, documentation, and release work. They help build the project, but they are not part of the shipped app experience.
- Expo SDK 54
- React Native 0.81
- React 19
- TypeScript
- Android native code
- Wear OS module
- Android widget support
- Node.js 20 recommended
- npm
- Android Studio with the Android SDK
- Java 17 or newer
git clone https://github.com/TargetMisser/AeroStaffPro.git
cd AeroStaffPro
npm ci
npm run startRun on Android:
npm run androidRun the web preview:
npm run webRun Storybook:
npm run storybooknpm run typecheck
npm test
npm run test:smoke
npm run release:check
npm run github:branches:auditAPK files are published in GitHub Releases.
Latest stable release: v2.7.8
To install the Android app:
- Open the Releases page.
- Download
AeroStaffPro-vX.X.X.apk. - Install it on the Android device. You may need to allow installs from unknown sources.
- If using Wear OS, keep the phone and watch paired so the companion module can be installed.
Set the signing environment variables first:
$env:RELEASE_STORE_FILE="C:\path\to\release.keystore"
$env:RELEASE_STORE_PASSWORD="your-keystore-password"
$env:RELEASE_KEY_ALIAS="your-key-alias"
$env:RELEASE_KEY_PASSWORD="your-key-password"Then build:
cd android
.\gradlew.bat assembleReleaseThe APK is generated at:
android/app/build/outputs/apk/release/app-release.apk
The GitHub Actions release workflow expects these repository secrets:
KEYSTORE_BASE64
KEYSTORE_PASSWORD
KEY_ALIAS
KEY_PASSWORD
mainis the public stable branch.- Feature and experiment branches should be short-lived.
- Local logs, keystores, downloaded APKs, and temporary files should not be committed.
- API keys are configured by the user inside the app or through local environment setup, not stored in the repository.
- Release APKs live in GitHub Releases, not in git.