Skip to content
supastack
Browse documentation
WebNext.js

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /docs/mobile/external-accounts.md (or send Accept: text/markdown).

Create mobile accounts

Expo, Apple, Google Play, and RevenueCat accounts — what each one is for and when to create it.

When you need these

The daily mobile setup needs none of them: Expo Go plus a running backend — EXPO_PUBLIC_API_URL in apps/mobile/.env.local — covers previewing screens and testing sign-in.

Create these accounts when you move past Expo Go: an Expo account powers EAS cloud builds, the store accounts enable submission, RevenueCat verifies native purchases, and Apple's program is also required for Sign in with Apple during store review. Two of them cost money: Apple Developer is $99 per year, Google Play is a one-time $25 registration; Expo and RevenueCat both have free tiers.

Expo + EAS

1. Open expo.dev → Sign up, create the account, and confirm the email.

2. In a terminal run npx eas-cli@latest login and enter the same credentials — eas is the command-line tool for Expo Application Services builds and submissions.

3. From the apps/mobile folder run npx eas-cli@latest init to link the codebase to an EAS project; it writes the project id into the app.json/app.config.ts configuration. The eas.json build profiles are already shipped.

Expected: npx eas-cli@latest whoami prints your account name and the project appears in your expo.dev dashboard.

npx eas-cli@latest login
cd apps/mobile
npx eas-cli@latest init
npx eas-cli@latest whoami

Apple Developer Program

1. Open developer.apple.com → Account → enroll in the Apple Developer Program — $99 per year; an individual membership is fine.

2. Enrollment requires an Apple ID with two-factor authentication enabled and a legal name matching your payment method; approval can take a day or two.

3. This one account covers two requirements: submitting the iOS app to the App Store, and Sign in with Apple — App Review requires offering it whenever an iOS app ships third-party social login such as Google or GitHub. The kit wires it through AUTH_APPLE_ENABLED plus the APPLE_CLIENT_ID/APPLE_CLIENT_SECRET pair on the backend.

The same membership also covers macOS desktop signing — the desktop account guide explains that side.

Google Play Console

1. Open play.google.com/console, pay the one-time $25 registration, and create the developer account in your name or your company's.

2. Stop at the developer account for now — the app entry itself gets created inside Play Console during submission: the first upload of a new app always happens manually there, and eas submit takes over from the second release.

RevenueCat — only if the app sells content

Skip this section entirely if the mobile app does not sell digital content or subscriptions. If it does: 1. open revenuecat.com and create a free account, 2. create a project, 3. register the iOS app (connects to App Store Connect) and the Android app (Play package name plus service credentials) inside it.

4. Create the products and an entitlement matching your store products — the kit checks the configured entitlement (REVENUECAT_ENTITLEMENT_ID, REVENUECAT_ENTITLEMENT_KEY) server-side before granting access.

5. Copy each platform's public SDK key into apps/mobile/.env.local and enable the provider on both sides, as below. The SDK keys are public client values; REVENUECAT_SECRET_API_KEY and REVENUECAT_WEBHOOK_AUTHORIZATION are server-only and belong in the backend's environment — never in an EXPO_PUBLIC_ variable.

# apps/mobile/.env.local
EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=revenuecat
EXPO_PUBLIC_REVENUECAT_IOS_API_KEY=your-public-ios-sdk-key
EXPO_PUBLIC_REVENUECAT_ANDROID_API_KEY=your-public-android-sdk-key

# apps/web/.env.local — server side
MOBILE_PURCHASES_PROVIDER=revenuecat
REVENUECAT_SECRET_API_KEY=your-secret-api-key
REVENUECAT_WEBHOOK_AUTHORIZATION=your-webhook-auth-value

Sign-in providers on mobile

Mobile sign-in reuses the same Google and GitHub OAuth apps you create for the web — the callbacks stay {APP_URL}/api/auth/callback/<provider> because Better Auth handles the server side, and the app returns through its EXPO_PUBLIC_APP_SCHEME deep-link scheme. No extra provider app is needed just because the client is native.

The exception is iOS store review: shipping Google or GitHub buttons on iOS requires offering Sign in with Apple too, which is why the Apple Developer account above doubles as a sign-in dependency.

Done means

Check each account before moving on: npx eas-cli@latest whoami prints your Expo account and the project shows in the dashboard; the Apple Developer membership reads Active; the Play Console account exists; the RevenueCat project lists both store apps with products and an entitlement, and its keys are in the right env files.

Then continue in order — connect the project, set up purchases if the app sells content, build for a device, submit:

Frequently asked questions

14 questions

What is supastack?

supastack is a modular foundation for building AI-powered SaaS products. It brings together common infrastructure so you can focus on product-specific features.

Does it support web and mobile?

Yes. supastack includes Next.js and Expo apps as starting points for web and mobile experiences.

What authentication is included?

Better Auth covers email OTP, magic-link, and social sign-in; email/password stays available at the API layer and through the Auth.js credentials engine for products that need it. Personal workspaces are provisioned with the account so product records stay scoped from day one.

How does it support AI?

supastack includes configurable multi-provider AI, usage tracking, budgets, and encrypted bring-your-own-key support.

How are subscriptions handled?

For products built on the kit, Stripe billing, subscriptions, and entitlements form the paid-access foundation. Provider secrets stay server-only.

Where does my product-specific code live?

Product-specific features remain in a separate codebase while the product configures and integrates supastack’s foundation modules.

How does supastack pricing work?

The kit is a one-time purchase with lifetime updates: One Platform at $249 (temporary launch price, $100 off the regular $349) — your pick of Next.js (Web), Expo (iOS & Android), or Tauri (macOS & Windows Desktop) — or the All Platforms Bundle at $499 (temporary launch price, $100 off the regular $599) with every platform and the full monorepo, plus $75 per extra developer seat. No kit subscription. Checkout on this site delivers your license key by email, with repository access via GitHub invite.

How do workspaces scope my data?

User-owned records are scoped by workspaceId. Identity, entitlements, AI usage, billing events, and audit entries stay inside the personal workspace boundary.

How do background jobs work?

Trigger.dev is the explicit job runtime. The JobRunner contract only promises enqueue, status, and cancel—workflow semantics stay Trigger.dev-specific and explicit.

How is email different from outreach?

Transactional email covers product workflows such as completion notices. Cold outreach and campaigns are product concerns outside this kit’s email module.

How do mobile purchases work?

Mobile includes native purchases and restore through RevenueCat, with access verified by your server. Configure the store accounts and complete device testing before release. Web billing remains separate.

Where do AI provider keys live?

Bring-your-own-key credentials are encrypted and stay server-only. Keys are redacted from logs; usage and budgets remain visible at the workspace level.

Which payment methods does checkout accept?

The Stripe-hosted checkout accepts cards and can also offer Alipay and WeChat Pay once those wallets are enabled on the Stripe account — handy for buyers in China. Wallet authorizations confirm asynchronously, so the license page updates as soon as the payment clears.

Can I get a refund?

After you've got access to the repository, supastack is yours forever, so it cannot be refunded. But rest assured, you get the complete source code with lifetime updates to build and ship unlimited products for yourself or clients. You just cannot resell the code or redistribute the repository as a starter kit or template.

EN
Theme