Skip to main content

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​

PieceDoes
eventlinx-goStaff UI: scan, door POS, cart. Auth: Supabase JWT. Gates reserved POS with isDevEnv.
eventlinx-api-goBFF. 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.