USE CASE

One purchase: web SaaS + native iOS and Android apps

Every boilerplate leaves the App Store as a someday project. Here the native apps, the PHP API behind them and the Stripe↔RevenueCat entitlement sync ship already wired together.

What ships in the box

Not a webview wrapper — two native apps and the backend they talk to.

Native iOS (SwiftUI)

A real SwiftUI app: Sign in with Apple, RevenueCat subscriptions, and the same account the user has on the web.

Native Android (Compose)

A Jetpack Compose app with Google sign-in and RevenueCat billing — the same features, platform-native on both.

The PHP app backend

Both apps talk to the bearer-token JSON API: verified provider sign-in, per-user data and an admin console behind it.

Stripe on web, RevenueCat on mobile — reconciled

Cross-platform billing is the part nobody documents. A user who subscribes on the web through Stripe must be entitled in the apps; a user who subscribes in-app through RevenueCat must be entitled on the web — and neither webhook stream may be allowed to stomp on the other’s active purchase. Simple Stack ships reciprocal entitlement guards: both streams land in the same PHP backend, each side checks the other before changing access, and the user ends up with one entitlement whichever platform they paid on.

The API underneath is the same app backend documented on the mobile app backend page, and the web-side plans and tiers come from the subscription starter — one codebase, both storefronts.

  • Apps as sourceThe SwiftUI and Compose projects are in the download — rename, re-skin and submit under your own account.
  • Receipts verified server-sideRevenueCat validates the store receipts; the backend trusts its webhooks, never the client, before granting access.
  • One backend, three clientsWeb, iOS and Android all read the same SQLite data through the same PHP API — no second stack to run.
  • No someday projectThe mobile work that usually waits for "after launch" is done on day one, on the same £49.
TRY IT LIVE

Poke the backend the apps run on.

The app-backend demo runs the real auth and API — no card, nothing saved.