GO internals
GO is the staff stack: Expo app eventlinx-go plus Cloudflare Worker BFF eventlinx-api-go. The BFF is not written as a Go (Golang) service.
Responsibilities
| Piece | Does |
|---|---|
eventlinx-go | Staff UI: scan, door POS, cart. Auth: Supabase JWT. Gates reserved POS with isDevEnv. |
eventlinx-api-go | BFF. Scan / POS / cart → Event. Cash → Stripe API. Terminal PI create → Event. Does not gate reserved POS. Does block exchange into reserved seating. |
clientSource for this channel is go-app.
Reserved POS: app gate vs API
Reserved seating at the door is not enforced by eventlinx-api-go. The Worker will accept reserved POS calls that Event would accept.
The Expo app hides / blocks reserved POS unless isDevEnv is true. Treat “RS POS is off in production GO” as a client flag, not an API invariant. If a non-app client called the BFF, Event’s usual RS rules still apply (seatIds, no oversell, map lock) — the extra “staff shouldn’t sell RS from GO yet” policy is in the app.
Exchange
The GO API blocks exchange into reserved seating. Do not assume GO can retarget an exchange onto RS inventory.
This is separate from patron: patron-api may still expose exchange routes, but patron UI is flagged off. Neither surface is “self-serve RS exchange.”
Offline
No offline mode. Scan, POS, and cart require the BFF and Event. Do not document local queues, deferred redeem, or airplane-mode selling.
Money movement from GO
- Cash /
$0: api-stripe. - Terminal: PaymentIntent via Event; completion via api-stripe.
- Tickets, holds, and redeem records: Event.
TTL and inventory rules are Event’s: 12-minute hold, GET cart does not extend, checkout secret extends 8 minutes, SKIP LOCKED, RS seatIds. See Ticketing invariants.