Data model
The Keystone lists, their relationships, and the lifecycles that drive Openfront Airline.
The registry in features/keystone/models/index.ts registers 59 lists. Money is stored as integer minor units with a currency code. Offers, booking lines, segments, and tickets keep snapshots of the commercial facts at creation.
Key relationships
Carrierowns users, roles, routes, schedules, flight instances, bookings, provider connections, station assignments, machine credentials, and onboarding steps.Route(origin and destinationAirport) has manyFlightSchedule; a schedule has manyFlightInstance.FlightInstancehasInventoryBucket(cabin, fare brand, capacity, authorized, sold, held, blocked, prices),SeatMapwithSeat, and its segments, check-ins, bags, and disruptions.OfferhasOfferItemandInventoryHold, and becomes oneBooking.BookinghasBookingPassenger,Journey,BookingSegment,BookingLineItem,Ticket,ServiceObligation,PaymentSession,Payment,Refund,CheckIn,Bag,Reaccommodation, andManualPaymentEvidence.TickethasTicketCoupon, one per segment;TicketCouponLineagelinks parent and child coupons.CheckInhasBoardingPassand aSeatAssignment.BaghasBagEvent.DisruptionhasReaccommodation.
Lifecycles
| Entity | States |
|---|---|
| Dated flight | scheduled, open_for_sale, closed_for_sale, delayed, departed, arrived, cancelled |
| Offer | held, accepted, expired, withdrawn |
| Booking | pending, confirmed, ticketed, in_progress, completed, cancelled |
| Ticket | pending, issued, partially_used, used, suspended, voided, refunded, exchanged |
| Bag | accepted, loaded, in_transit, arrived, delivered, delayed, mishandled, closed |
| Disruption | detected, published, recovering, resolved, cancelled |
| Carrier | active, suspended, archived |
System lists
AuditEvent (action, actor, source, correlation id, before and after summaries), IdempotencyKey, RateLimitBucket, WorkerHeartbeat, OutboxEvent, WebhookEvent, WebhookEndpoint, IntegrationProvider, ProviderConnection, MachineCredential.
Lists without a dedicated desk (User, Role, ApprovedAgent, ServiceRequest, WebhookEndpoint, OutboxEvent, ElectronicMiscDocument, Exchange) are edited at /dashboard/<list-key>. Command-only lists reject direct writes there.