FlyPJX
Type
Platform
Status
In production
Context
Falcon Aerospace · Senior Backend Engineer, promoted from Full Stack Developer
Period
2024 – 2026
Source
Private
+22%
booking-funnel retention
~30%
faster key booking queries
100+
Pytest unit & API tests
I joined Falcon Aerospace as a Full Stack Developer on the React and Next.js booking flow, where cutting steps and saving partial progress lifted booking-funnel session retention by 22%, and was then promoted to lead the backend. From there I owned the FlyPJX backend architecture (FastAPI, PostgreSQL) across six domains — bookings, passengers, payments, documents, compliance and notifications — agreeing requirements and API contracts with frontend developers, DevOps and non-technical product and business stakeholders. Alongside FlyPJX I shipped the group's brand and charter products, including Charterxe and its admin dashboard.
FastAPI + PostgreSQL across six domains · booking state machine guarded by transactions and row locks · Stripe payments and webhooks with signature checks, idempotency keys and scheduled retries · transactional audit log · S3 document pipeline with presigned URLs · SQLAlchemy + Alembic · Docker on EC2 behind Nginx · React + Next.js booking flow
- 01Owned the backend architecture for FlyPJX (FastAPI, PostgreSQL) across six domains: bookings, passengers, payments, documents, compliance and notifications.
- 02Replaced 10+ ad hoc booking status flags with a state machine that only allows valid transitions, using PostgreSQL transactions and row locks so simultaneous customer and agent edits can't leave a booking in a bad state.
- 03Integrated Stripe payments and webhooks with signature checks, idempotency keys and safe retries, and built instalment plans that handle failed payments and retry on a schedule.
- 04Designed the PostgreSQL schema (20+ tables) with SQLAlchemy and Alembic migrations, improving key booking query performance by around 30%.
- 05Built audit logging that commits in the same transaction as the change it records, and a document upload pipeline on S3 with file-type checks, size limits, rate limiting and presigned URLs.
- 06Wrote 100+ Pytest unit and API tests, including state-machine and payment cases, run in CI; deployed with Docker on EC2 behind Nginx with separate staging and production.
- 07Joined as a Full Stack Developer on the React and Next.js booking flow, where cutting steps and saving partial progress lifted booking-funnel session retention by 22%.
- 08Shipped the surrounding brand and charter products across the group, including Charterxe, its operations dashboard, Aiden and the Falcon site.
The decisions worth talking through: where the interesting work was choosing between options, not writing the code.
Note 01
A state machine instead of flags
Ten-plus independent status flags meant a booking could be "paid" and "cancelled" at once. Modelling the lifecycle as explicit states with allowed transitions — enforced inside a transaction with a row lock — turned a class of race conditions between customer and agent edits into rejected transitions with a clear error.
Note 02
Payments that are safe to retry
Stripe webhooks arrive late, twice, or out of order. Every payment write is keyed by an idempotency key and every webhook is signature-checked before it touches state, so a retry is always a no-op rather than a double charge — which is also what makes scheduled instalment retries safe to automate.
Python / FastAPI / PostgreSQL / SQLAlchemy / Alembic / Stripe / AWS S3 / Docker / Nginx / Pytest / React / Next.js / TypeScript