DARIIZ is a React/Capacitor dating assistant app backed by Supabase, a Cloud Run AI/API service, and Google Play Billing. The current release line includes AI reply suggestions, venue discovery, Action Plans, admin CMS tools, notifications, and premium entitlement sync.
- Web app URL: configure with
VITE_SITE_URL - Supabase project: link locally with the Supabase CLI
- Cloud Run API URL: configure with
VITE_API_BASE_URL - Android package:
com.dariiz.app - Android release:
versionName 2.3.0,versionCode 15 - Google Play subscription product:
dariiz_premium_monthly - Google Play base plan:
monthly - Main release branch:
main
- Frontend: Vite, React, TypeScript, Tailwind CSS, shadcn/ui
- Mobile shell: Capacitor Android
- Auth/database/RLS/API layer: Supabase
- Serverless API: Supabase Edge Functions
- AI and Google Play verification gateway: Cloud Run
dariiz-api - AI provider path: Cloud Run -> Vertex/Gemini
- Billing path: Android Play Billing -> Supabase -> Cloud Run -> Google Play Developer API
npm ci
copy .env.example .env.local
npm run dev -- --host 127.0.0.1 --port 5173Fill only public frontend values in local/Vercel frontend env:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEYorVITE_SUPABASE_PUBLISHABLE_KEYVITE_API_BASE_URLVITE_GOOGLE_PLAY_PACKAGE_NAMEVITE_GOOGLE_PLAY_PRODUCT_IDVITE_GOOGLE_PLAY_PREMIUM_BASE_PLAN_ID
Do not put service-role keys, Google service account JSON, RTDN secrets, or AI gateway API keys into browser-delivered env vars.
npm run dev
npm run build
npm run lint
npm run test
npm run cloudrun:check
npm run android:debug
npm run android:bundleAndroid release artifact:
android/app/build/outputs/bundle/release/app-release.aab- Architecture and service flow
- AI services integration
- Google Play release checklist
- Cloud Run API README
- Google Play policy compliance audit
- Privacy policy and terms source
flowchart LR
UI["React/Vite + Capacitor app"] --> Auth["Supabase Auth"]
UI --> Edge["Supabase Edge Functions"]
Edge --> DB["Supabase Postgres + RLS"]
Edge --> API["Cloud Run dariiz-api"]
API --> AI["Vertex/Gemini"]
UI --> Play["Google Play Billing"]
Play --> Edge
Edge --> API
API --> GP["Google Play Developer API"]
Frontend never calls Cloud Run with secrets directly. Supabase Edge Functions own auth, quota, RLS-safe data access, and server-side secret usage. Cloud Run owns the AI gateway, venue ranker, Action Plans assist, and Google Play verification/cancellation helper routes.
Supabase:
supabase migration up --linked
supabase functions deploy action-plans --project-ref YOUR_PROJECT_REF
supabase functions deploy action-plans-admin --project-ref YOUR_PROJECT_REF
supabase functions deploy verify-google-purchase --project-ref YOUR_PROJECT_REF
supabase functions deploy google-play-rtdn --project-ref YOUR_PROJECT_REFVercel:
vercel deploy --prod --yesCloud Run:
npm run cloudrun:prepare
npm run cloudrun:deployGoogle Play:
npm run android:bundleThen upload the AAB from android/app/build/outputs/bundle/release/app-release.aab
to a Play testing/release track.
Before shipping a release, verify:
npm run testnpm run lintnpx tsc --noEmitnpm run buildsupabase db lint --linked- Supabase function list shows required functions
ACTIVE - Cloud Run
GET /returnsstatus: ok - Vercel production route
/action-plans/newreturns 200 - Android AAB has a new
versionCode - Google Play purchase/restore and RTDN are tested with a real Play tester
.env.local, Android keystores, service account JSON, and build output are intentionally ignored.SUPABASE_SERVICE_ROLE_KEYis server-side only.AI_GATEWAY_API_KEYis used by Supabase Edge Functions and Cloud Run, not the browser.- User ownership is enforced in Supabase functions/RLS; frontend checks are UX only.