Flying Company

Project brief

Overview

Aviation operations platform connecting aircraft operators with contract crew through staffing, qualification checks, invoicing, and settlement.

My contribution
Built product interfaces, backend workflows, qualification checks, and flight-linked payments as part of the engineering team.
Flying Company flight-staffing graphic with a business jet above the clouds.
Flying Company’s flight-staffing brand, illustrated by a business jet in flight.

The project

An aviation operations platform connecting aircraft operators with contract crew. A React interface brings staffing, aircraft readiness, pilot qualifications, and trip records together. The Django backend enforces access and operational rules, while Stripe operator billing and Worksome contractor settlement support the financial side of each engagement.

How it works

  1. Plan the assignment

    An operator creates a trip with its aircraft, schedule, and crew requirements.

  2. Check crew readiness

    Pilot records are checked against the aircraft’s insurance and qualification requirements before staffing is confirmed.

  3. Coordinate the trip

    Crew and operators work from shared trip records, with server-managed status and access appropriate to their roles.

  4. Approve and settle

    Expense approval connects the final trip record to operator invoicing and contractor settlement.

Engineering decisions

Qualifications depend on the assignment

The challenge

A qualified pilot still needs to meet the requirements of the particular aircraft and engagement.

The approach

The compliance workflow combines pilot medical and currency records, aircraft readiness, and insurance minimums for each pilot–aircraft pairing. Record-level permissions separate operator, pilot, and staff responsibilities.

One authoritative trip lifecycle

The challenge

Staffing, expenses, and invoices need a consistent view of a trip’s progress.

The approach

The backend advances confirmed trips to Underway after their first departure, giving operational and financial workflows a shared state instead of relying on browser-side transitions.

Separate billing from contractor settlement

The challenge

Collecting from an operator and settling with a contractor involve different records and external services.

The approach

The payment workflow coordinates Stripe operator billing with Worksome contractor agreements, payment requests, and settlement while retaining their relationship to the trip.

Architecture

System architecture — Flying Company

From flight request to a coordinated operation

A central API enforces aviation rules while dedicated services handle records, documents, payments and AI.

User interfaceServer processingData & stateExternal services
01

One entry point. Separate responsibilities.

HTTPS requests → routed API calls

Browser
Operator & pilot portal

Trips, applications, crew and compliance workflows.

  • React
Public entry
Reverse proxy

Serves the web app and routes API traffic to Django.

  • NGINX
Application
Business rules

Validates roles, qualifications and flight state.

  • Django
Django owns data access and service integrations
Read / write
Operational records

Pilots, aircraft, trips and permissions.

  • MariaDB
Store / retrieve
Aviation documents

Amazon S3 holds uploaded files and credentials.

  • AWS
API + webhooks
Billing & settlement

Stripe handles operator billing; Worksome handles contractor settlement.

  • Stripe
API requests
AI assistance

Server-side AI calls support aviation workflows.

  • Anthropic
DeploymentAWS EC2

Docker Compose isolates the proxy, frontend, Django API and MariaDB.

Outcome

Crew readiness, trip progress, expenses, and billing share one operational record. Qualification checks account for each pilot–aircraft pairing, and server-managed trip status keeps expense submission and invoicing consistent. Approved expenses connect to contractor settlement through Worksome and a separate Stripe invoice for the operator, keeping hiring and payment as distinct steps.