01. Two Products, One Source of Truth
The platform deploys as two independent builds out of one repository. The consumer app is an Expo / React Native codebase that compiles to iOS, Android and a web bundle from the same source. The marketing site and the vendor portal are a separate Next.js 15 application. They are deliberately decoupled: different frameworks, different build steps, and a marketing typo should never trigger a React Native bundle rebuild.
Both talk to the same PostgreSQL 17 instance through an anonymous key, which means row-level security is the only real boundary — there is no trusted middle tier to hide behind. Anything that must not be forgeable (prices, entitlements, wedding dates, role checks) is resolved server-side inside Postgres or a Deno edge function.