Adapty (subscription management)
Food Truck Nerdz uses Adapty as its subscription management platform (sometimes called in-app subscription infrastructure). Adapty answers “does this user have paid access?” across App Store, Google Play, and Stripe web checkouts.
|
Business memberships (owner / manager / staff in Convex) are tenant roles, not paid plans.
Do not confuse |
What we use Adapty for
-
Receipt validation and subscription lifecycle on iOS / Android
-
A single access level (default id:
premium) mapped from store products and Stripe prices -
Syncing web Stripe purchases into the same mobile profile via
customer_user_id -
Paywall experiments later (Adapty’s growth tooling), without rewriting billing
Flutter setup (ftn-app)
-
Add
adapty_flutter(already inpubspec.yaml). -
Create an app in the Adapty dashboard; copy the Public SDK Key.
-
Create access level
premium(or changeAdaptyService.accessLevelIdto match). -
Run with:
flutter run \
--dart-define=API_BASE_URL=https://your.ftn.host \
--dart-define=ADAPTY_PUBLIC_SDK_KEY=public_live_...
On sign-in, AuthController calls Adapty().identify(user.id) so the Better Auth / Convex user id is the shared customer id.
Web / Stripe
When you add Stripe Checkout for paid plans on ftn-site:
-
Install Adapty’s Stripe app and connect the account (see Adapty Stripe docs).
-
Put the same Better Auth user id in Checkout Session metadata as
customer_user_id. -
For one-time payments, enable Stripe
invoice_creationso Adapty receives invoice events. -
Map Stripe products to the
premiumaccess level in Adapty.
Helper notes live in the website docs: Subscription management (Adapty).