kappmaker 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +254 -30
- package/dist/cli.js +87 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/adapty-setup.js +5 -4
- package/dist/commands/adapty-setup.js.map +1 -1
- package/dist/commands/config.js +11 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create-appstore-app.js +18 -1
- package/dist/commands/create-appstore-app.js.map +1 -1
- package/dist/commands/create-logo.js +16 -5
- package/dist/commands/create-logo.js.map +1 -1
- package/dist/commands/create-play-app.d.ts +2 -0
- package/dist/commands/create-play-app.js +399 -0
- package/dist/commands/create-play-app.js.map +1 -0
- package/dist/commands/create.js +133 -54
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/enhance.js +12 -4
- package/dist/commands/enhance.js.map +1 -1
- package/dist/commands/fastlane-configure.d.ts +1 -0
- package/dist/commands/fastlane-configure.js +9 -0
- package/dist/commands/fastlane-configure.js.map +1 -0
- package/dist/commands/generate-screenshots.js +22 -7
- package/dist/commands/generate-screenshots.js.map +1 -1
- package/dist/commands/gpc.d.ts +29 -0
- package/dist/commands/gpc.js +174 -0
- package/dist/commands/gpc.js.map +1 -0
- package/dist/commands/publish.d.ts +1 -1
- package/dist/commands/publish.js +1 -1
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/remove-bg.js +12 -4
- package/dist/commands/remove-bg.js.map +1 -1
- package/dist/commands/translate-screenshots.js +22 -8
- package/dist/commands/translate-screenshots.js.map +1 -1
- package/dist/services/asc-monetization.service.js +39 -29
- package/dist/services/asc-monetization.service.js.map +1 -1
- package/dist/services/asc.service.d.ts +1 -1
- package/dist/services/asc.service.js +94 -12
- package/dist/services/asc.service.js.map +1 -1
- package/dist/services/fastlane-setup.service.d.ts +1 -0
- package/dist/services/fastlane-setup.service.js +50 -0
- package/dist/services/fastlane-setup.service.js.map +1 -0
- package/dist/services/firebase.service.js +48 -18
- package/dist/services/firebase.service.js.map +1 -1
- package/dist/services/gpc-data-safety.service.d.ts +11 -0
- package/dist/services/gpc-data-safety.service.js +160 -0
- package/dist/services/gpc-data-safety.service.js.map +1 -0
- package/dist/services/gpc-monetization.service.d.ts +18 -0
- package/dist/services/gpc-monetization.service.js +244 -0
- package/dist/services/gpc-monetization.service.js.map +1 -0
- package/dist/services/gpc.service.d.ts +87 -0
- package/dist/services/gpc.service.js +338 -0
- package/dist/services/gpc.service.js.map +1 -0
- package/dist/services/refactor.service.js +44 -29
- package/dist/services/refactor.service.js.map +1 -1
- package/dist/templates/Fastfile.txt +209 -0
- package/dist/templates/data-safety-template.json +5483 -0
- package/dist/templates/googleplay-config.json +71 -0
- package/dist/types/googleplay.d.ts +113 -0
- package/dist/types/googleplay.js +2 -0
- package/dist/types/googleplay.js.map +1 -0
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.js +4 -0
- package/dist/utils/config.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@ A single `kappmaker create` command can:
|
|
|
7
7
|
- Create a Firebase project, register Android + iOS apps, enable authentication, and download SDK configs
|
|
8
8
|
- Generate an AI-powered app logo with automatic background removal
|
|
9
9
|
- Create an App Store Connect listing with metadata, categories, age rating, subscriptions, privacy declarations, and review contact info
|
|
10
|
+
- Configure an existing Google Play Console app — store listings, subscriptions, one-time in-app products, and the data safety declaration — via a built-in wrapper around the Play Publisher API (no external CLI, no extra dependencies)
|
|
10
11
|
- Set up Adapty subscription products, paywalls, and placements for both iOS and Android
|
|
11
12
|
- Refactor Gradle package names and application IDs
|
|
12
13
|
- Set up the build environment (Android SDK, CocoaPods)
|
|
@@ -49,9 +50,9 @@ kappmaker config init
|
|
|
49
50
|
Or set keys individually:
|
|
50
51
|
|
|
51
52
|
```bash
|
|
52
|
-
kappmaker config set falApiKey <your-key> #
|
|
53
|
-
kappmaker config set imgbbApiKey <your-key> #
|
|
54
|
-
kappmaker config set openaiApiKey <your-key> #
|
|
53
|
+
kappmaker config set falApiKey <your-key> # For AI features (logo, screenshots) — or prompted on first use
|
|
54
|
+
kappmaker config set imgbbApiKey <your-key> # For screenshot translation/generation — or prompted on first use
|
|
55
|
+
kappmaker config set openaiApiKey <your-key> # For generate-screenshots — or prompted on first use
|
|
55
56
|
kappmaker config set templateRepo <your-repo> # Use your own template (default: KAppMaker)
|
|
56
57
|
```
|
|
57
58
|
|
|
@@ -96,10 +97,12 @@ Claude will check your config, verify API keys are set, and walk you through any
|
|
|
96
97
|
- [`create <app-name>`](#create-app-name)
|
|
97
98
|
- [`create-logo`](#create-logo)
|
|
98
99
|
- [`create-appstore-app`](#create-appstore-app)
|
|
100
|
+
- [`gpc`](#gpc) — Google Play Console management
|
|
99
101
|
- [`adapty setup`](#adapty-setup)
|
|
100
102
|
- [Image Tools](#image-tools)
|
|
101
103
|
- [`translate-screenshots`](#translate-screenshots-source-dir)
|
|
102
104
|
- [`generate-screenshots`](#generate-screenshots)
|
|
105
|
+
- [`fastlane configure`](#fastlane-configure)
|
|
103
106
|
- [`publish`](#publish)
|
|
104
107
|
- [`generate-keystore`](#generate-keystore)
|
|
105
108
|
- [`android-release-build`](#android-release-build)
|
|
@@ -112,15 +115,22 @@ Claude will check your config, verify API keys are set, and walk you through any
|
|
|
112
115
|
|
|
113
116
|
| Command | Description |
|
|
114
117
|
|---------|-------------|
|
|
115
|
-
| [`kappmaker create <app-name>`](#create-app-name) | Full end-to-end app setup (Firebase, logo, App Store, Adapty, release build) |
|
|
118
|
+
| [`kappmaker create <app-name>`](#create-app-name) | Full end-to-end app setup (Firebase, logo, App Store Connect, Google Play Console, Adapty, release build) |
|
|
116
119
|
| [`kappmaker create-logo`](#create-logo) | Generate an app logo with AI (fal.ai) |
|
|
117
120
|
| [`kappmaker create-appstore-app`](#create-appstore-app) | Set up an app on App Store Connect (metadata, subscriptions, privacy) |
|
|
121
|
+
| [`kappmaker gpc setup`](#gpc) | Set up an existing app on Google Play Console (listings, subscriptions, IAPs, data safety) |
|
|
122
|
+
| [`kappmaker gpc listings push`](#gpc) | Push store listings from the Google Play config file |
|
|
123
|
+
| [`kappmaker gpc subscriptions list/push`](#gpc) | List or push subscriptions on Google Play Console |
|
|
124
|
+
| [`kappmaker gpc iap list/push`](#gpc) | List or push one-time in-app products on Google Play Console |
|
|
125
|
+
| [`kappmaker gpc data-safety push`](#gpc) | Push data safety declaration on Google Play Console |
|
|
126
|
+
| [`kappmaker gpc app-check --package <pkg>`](#gpc) | Check if a package exists on Google Play Console |
|
|
118
127
|
| [`kappmaker adapty setup`](#adapty-setup) | Set up Adapty products, paywalls, and placements |
|
|
119
128
|
| [`kappmaker image-split <image>`](#image-split-source) | Split a grid image into individual tiles |
|
|
120
129
|
| [`kappmaker image-remove-bg <image>`](#image-remove-bg-source) | Remove background from an image (fal.ai) |
|
|
121
130
|
| [`kappmaker image-enhance <image>`](#image-enhance-source) | Upscale and enhance image quality (fal.ai) |
|
|
122
131
|
| [`kappmaker translate-screenshots [dir]`](#translate-screenshots-source-dir) | Translate screenshots to multiple locales (fal.ai) |
|
|
123
132
|
| [`kappmaker generate-screenshots`](#generate-screenshots) | Generate marketing screenshots with AI (OpenAI + fal.ai) |
|
|
133
|
+
| [`kappmaker fastlane configure`](#fastlane-configure) | Set up Fastlane in the mobile app directory |
|
|
124
134
|
| [`kappmaker publish`](#publish) | Build and upload to Google Play and/or App Store via Fastlane |
|
|
125
135
|
| [`kappmaker generate-keystore`](#generate-keystore) | Generate an Android signing keystore for Play Store releases |
|
|
126
136
|
| [`kappmaker android-release-build`](#android-release-build) | Build a signed Android release AAB |
|
|
@@ -137,7 +147,8 @@ These commands are standalone and don't depend on any specific boilerplate:
|
|
|
137
147
|
- **AI logo generation** — Generate logo variations with fal.ai, pick your favorite, auto-remove background
|
|
138
148
|
- **AI screenshot generation** — Generate marketing screenshots from a text description (8 style presets)
|
|
139
149
|
- **Screenshot translation** — Translate app screenshots to 48+ locales in parallel
|
|
140
|
-
- **App Store Connect setup** — Register bundle ID, create app, set metadata, categories, age rating, subscriptions, privacy, and review info
|
|
150
|
+
- **App Store Connect setup** — Register bundle ID (with Sign in with Apple, In-App Purchases, and Push Notifications capabilities enabled automatically), create app, set metadata, categories, age rating, subscriptions, privacy, and review info — fully automated, no manual App Store Connect steps needed
|
|
151
|
+
- **Google Play Console setup** — Push store listings, subscriptions (new monetization API), one-time in-app products, and the data safety declaration via a built-in wrapper around the Play Publisher API — no external CLI, no extra dependencies
|
|
141
152
|
- **Adapty subscription setup** — Create products, paywalls, and placements for iOS and Android
|
|
142
153
|
- **Version bumping** — Increment Android and iOS version codes and names in one command
|
|
143
154
|
- **Image tools** — Split grids, remove backgrounds, enhance quality
|
|
@@ -165,6 +176,7 @@ The `create` command runs the full end-to-end setup. Some steps assume the [KApp
|
|
|
165
176
|
- **Android SDK** — installed at `~/Library/Android/sdk` (configurable)
|
|
166
177
|
- **asc CLI** (optional, for App Store Connect) — `brew install asc`
|
|
167
178
|
- **Adapty CLI** (optional, for Adapty setup) — `npm install -g adapty`
|
|
179
|
+
- **No extra CLI for Google Play Console** — `kappmaker gpc` talks to the Play Publisher API directly via Node's built-in `fetch` and `crypto`; all it needs is the service-account JSON path set in `googleServiceAccountPath`
|
|
168
180
|
|
|
169
181
|
## External Services & API Keys
|
|
170
182
|
|
|
@@ -177,7 +189,7 @@ The CLI integrates with several external services for AI image generation, app s
|
|
|
177
189
|
**How to get your key:**
|
|
178
190
|
1. Sign up at [fal.ai](https://fal.ai)
|
|
179
191
|
2. Go to [Dashboard > Keys](https://fal.ai/dashboard/keys) and create an API key
|
|
180
|
-
3. `kappmaker config set falApiKey <your-key>`
|
|
192
|
+
3. `kappmaker config set falApiKey <your-key>` — or skip this and the CLI will prompt you the first time you run a command that needs it
|
|
181
193
|
|
|
182
194
|
### ImgBB — Image Hosting
|
|
183
195
|
|
|
@@ -186,7 +198,7 @@ The CLI integrates with several external services for AI image generation, app s
|
|
|
186
198
|
**How to get your key:**
|
|
187
199
|
1. Sign up at [imgbb.com](https://imgbb.com)
|
|
188
200
|
2. Go to [api.imgbb.com](https://api.imgbb.com/) and get your free API key
|
|
189
|
-
3. `kappmaker config set imgbbApiKey <your-key>`
|
|
201
|
+
3. `kappmaker config set imgbbApiKey <your-key>` — or prompted on first use
|
|
190
202
|
|
|
191
203
|
### OpenAI — Prompt Generation
|
|
192
204
|
|
|
@@ -195,7 +207,7 @@ The CLI integrates with several external services for AI image generation, app s
|
|
|
195
207
|
**How to get your key:**
|
|
196
208
|
1. Sign up at [platform.openai.com](https://platform.openai.com)
|
|
197
209
|
2. Go to [API Keys](https://platform.openai.com/api-keys) and create a new key
|
|
198
|
-
3. `kappmaker config set openaiApiKey <your-key>`
|
|
210
|
+
3. `kappmaker config set openaiApiKey <your-key>` — or prompted on first use
|
|
199
211
|
|
|
200
212
|
### App Store Connect CLI (asc) — iOS App Management & Publishing
|
|
201
213
|
|
|
@@ -232,9 +244,13 @@ The CLI integrates with several external services for AI image generation, app s
|
|
|
232
244
|
1. Install: `npm install -g firebase-tools`
|
|
233
245
|
2. The `create` command handles login and project creation interactively.
|
|
234
246
|
|
|
235
|
-
### Google Play Publisher — Android Store Uploads
|
|
247
|
+
### Google Play Publisher — Android Store Uploads + Play Console Management
|
|
236
248
|
|
|
237
|
-
**Used for:**
|
|
249
|
+
**Used for:**
|
|
250
|
+
- Building and uploading Android AABs to Google Play Store via `kappmaker publish --platform android` (Fastlane)
|
|
251
|
+
- Configuring store listings, subscriptions, in-app products, and the data safety declaration via `kappmaker gpc ...` (direct Publisher API call, no external CLI)
|
|
252
|
+
|
|
253
|
+
Both flows share the same service account JSON key — set it once, use it everywhere.
|
|
238
254
|
|
|
239
255
|
**How to set up:**
|
|
240
256
|
|
|
@@ -249,6 +265,8 @@ The CLI integrates with several external services for AI image generation, app s
|
|
|
249
265
|
kappmaker config set googleServiceAccountPath /path/to/google-service-app-publisher.json
|
|
250
266
|
```
|
|
251
267
|
|
|
268
|
+
> **Note:** Google Play does not allow creating new apps via any public API — you must create the app manually once in [Play Console](https://play.google.com/console/u/0/developers) before `kappmaker gpc` can configure it.
|
|
269
|
+
|
|
252
270
|
### App Store Publisher — iOS Store Uploads
|
|
253
271
|
|
|
254
272
|
**Used for:** Building and uploading iOS IPAs to App Store Connect, managing App Store metadata and screenshots via `kappmaker publish --platform ios`.
|
|
@@ -285,15 +303,16 @@ kappmaker create Remimi
|
|
|
285
303
|
| 2 | Firebase login | Opens browser for authentication |
|
|
286
304
|
| 3 | Create Firebase project | `<appname>-app` (skips if exists) |
|
|
287
305
|
| 4 | Create Firebase apps | Android + iOS apps (reuses existing if found) |
|
|
288
|
-
| 5 | Enable anonymous auth |
|
|
289
|
-
| 6 | Download SDK configs | `google-services.json` + `GoogleService-Info.plist` (falls back to `Assets/`
|
|
306
|
+
| 5 | Enable anonymous auth | If brand-new project, prompts user to click "Get started" in Firebase Console, then enables via API |
|
|
307
|
+
| 6 | Download SDK configs | `google-services.json` + `GoogleService-Info.plist` (verifies package match, falls back to `Assets/`) |
|
|
290
308
|
| 7 | Logo generation | *Optional* — AI logo + automatic background removal |
|
|
291
|
-
| 8 |
|
|
292
|
-
| 9 |
|
|
293
|
-
| 10 |
|
|
294
|
-
|
|
|
295
|
-
|
|
|
296
|
-
|
|
|
309
|
+
| 8 | Package refactor | Renames packages, IDs, app name across all modules (composeApp, designsystem, libs) |
|
|
310
|
+
| 9 | Build environment | `local.properties`, CocoaPods, generates signing keystore if missing |
|
|
311
|
+
| 10 | Git remotes | Renames origin to upstream |
|
|
312
|
+
| | *Pre-store reminder* | *Prompts user to create Google Play Console app; App Store Connect is created automatically* |
|
|
313
|
+
| 11 | App Store Connect | *Optional* — full app setup (metadata, subs, privacy); app created automatically via `asc web apps create` |
|
|
314
|
+
| 12 | Google Play Console | *Optional* — Fastlane builds + uploads AAB to internal track, then runs full gpc setup |
|
|
315
|
+
| 13 | Adapty setup | *Optional* — products, paywalls, placements (links to ASC + Play products created in 11-12) |
|
|
297
316
|
|
|
298
317
|
**Options:**
|
|
299
318
|
|
|
@@ -322,7 +341,7 @@ kappmaker create-logo --output ./custom/path/logo.png
|
|
|
322
341
|
|
|
323
342
|
**Output:** `Assets/app_logo.png` + `Assets/logo_variations.png`
|
|
324
343
|
|
|
325
|
-
Requires: `kappmaker config set falApiKey <your-key>`
|
|
344
|
+
Requires a fal.ai API key (prompted on first use if not set, or set manually: `kappmaker config set falApiKey <your-key>`)
|
|
326
345
|
|
|
327
346
|
| Flag | Description | Default |
|
|
328
347
|
|------|-------------|---------|
|
|
@@ -351,8 +370,8 @@ kappmaker create-appstore-app --config ./my-config.json
|
|
|
351
370
|
|
|
352
371
|
1. Validate asc CLI and authentication
|
|
353
372
|
2. Load config (from file or interactive prompts)
|
|
354
|
-
3. Register Bundle ID
|
|
355
|
-
4. Find or create app
|
|
373
|
+
3. Register Bundle ID + enable capabilities (Sign in with Apple, In-App Purchases, Push Notifications). Name follows Apple convention: `XC com measify myapp` for `com.measify.myapp`
|
|
374
|
+
4. Find or create app (fully automated via `asc web apps create` — no manual App Store Connect step needed)
|
|
356
375
|
5. Set content rights
|
|
357
376
|
6. Create app version (1.0.0)
|
|
358
377
|
7. Set categories
|
|
@@ -401,6 +420,181 @@ During interactive setup, the CLI asks if the app accesses user content (AI imag
|
|
|
401
420
|
|
|
402
421
|
---
|
|
403
422
|
|
|
423
|
+
## `gpc`
|
|
424
|
+
|
|
425
|
+
Google Play Console management — a tight wrapper around the official Google Play Android Publisher API. All subcommands authenticate via the service account JSON at `googleServiceAccountPath` (same one used by `publish --platform android`). **No external CLI and no extra npm dependencies** — the JWT flow and HTTPS calls are implemented with Node's built-in `crypto` and `fetch`.
|
|
426
|
+
|
|
427
|
+
> **Note:** Google Play does not allow creating new apps via any public API. Create the app manually once in [Play Console](https://play.google.com/console/u/0/developers), then use these commands to configure it.
|
|
428
|
+
|
|
429
|
+
### `gpc setup`
|
|
430
|
+
|
|
431
|
+
Full end-to-end configuration (11 steps) — the Google Play parallel to `create-appstore-app`.
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
kappmaker gpc setup
|
|
435
|
+
kappmaker gpc setup --config ./my-config.json
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
**What it does:**
|
|
439
|
+
|
|
440
|
+
1. Validate service account + obtain access token
|
|
441
|
+
2. Load config (`./Assets/googleplay-config.json` or interactive prompts). **Auto-detects Play's actual default language** via a throwaway edit probe and rewrites `config.app.default_language` + the matching listing locale if your config drifted from reality. Also migrates legacy product IDs and legacy data-safety placeholders. Also reads tracks state to verify an APK/AAB is uploaded.
|
|
442
|
+
3. Review summary and confirm
|
|
443
|
+
4. Verify app exists on Play Console (fails fast with a deep link if not — Google does not allow app creation via the public API)
|
|
444
|
+
5. Start a Play Console edit (only if the default-language listing has a title — otherwise steps 5-7 are skipped cleanly)
|
|
445
|
+
6. Update app details (default language + contact website/email/phone)
|
|
446
|
+
7. Update store listings per locale (title, short/full description, video); commits the edit
|
|
447
|
+
8. **Pre-flight build check**, then create subscriptions via the new monetization API (`POST /subscriptions` with `productId` + `regionsVersion.version` as query params, base plans in body in DRAFT state, then `basePlans:activate` each one). Idempotent — existing product IDs are skipped. **Subscription listings are auto-cloned into Play's default language if missing.** Skipped with a clear message if no build is uploaded to any track (Google rejects monetization writes in that case).
|
|
448
|
+
9. Create one-time in-app products via the **new** monetization API (`PATCH /onetimeproducts/{id}?allowMissing=true` + `purchaseOptions:batchUpdateStates` to activate). Idempotent via `GET /oneTimeProducts`. Replaces the legacy `/inappproducts` endpoint that returns 403 on migrated apps.
|
|
449
|
+
10. Update the data safety declaration: converts `data_safety` JSON → Google's CSV format using a bundled canonical template + KAppMaker defaults matching the iOS App Store privacy set, then posts it via `POST /dataSafety` with `{ safetyLabels: "<csv>" }`. Respects `data_safety_csv_path` as an escape hatch for pre-exported CSVs.
|
|
450
|
+
11. Print a checklist of policy declarations that the Publisher API does NOT expose (content rating / IARC, target audience, ads, health apps, financial features, government apps, news apps, gambling, COVID-19 tracing, app access, advertising ID, families compliance, app pricing tier) with a deep link to Play Console's App content page. All verified against Google's v3 discovery document — none have REST endpoints.
|
|
451
|
+
|
|
452
|
+
### `gpc listings push`
|
|
453
|
+
|
|
454
|
+
Push just the store listings section from the config file (useful after editing copy).
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
kappmaker gpc listings push
|
|
458
|
+
kappmaker gpc listings push --config ./my-config.json
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
Runs a single edit transaction: updates app details → updates every listing locale → commits.
|
|
462
|
+
|
|
463
|
+
### `gpc subscriptions list`
|
|
464
|
+
|
|
465
|
+
Read-only — lists existing subscription product IDs on Play Console.
|
|
466
|
+
|
|
467
|
+
```bash
|
|
468
|
+
kappmaker gpc subscriptions list --package com.example.myapp
|
|
469
|
+
kappmaker gpc subscriptions list # uses app.package_name from the config file
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
### `gpc subscriptions push`
|
|
473
|
+
|
|
474
|
+
Create or reuse subscriptions from the config file. Idempotent — already-existing product IDs are skipped, and base plans are activated even for reused subscriptions.
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
kappmaker gpc subscriptions push
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
Uses the **new** monetization API (`applications/{pkg}/subscriptions` + `basePlans:activate`). Auto-generated IDs:
|
|
481
|
+
|
|
482
|
+
| Field | Format | Example ($6.99 weekly) |
|
|
483
|
+
|---|---|---|
|
|
484
|
+
| `productId` (subscription) | `{appname}.premium.{period}.v1` | `myapp.premium.weekly.v1` |
|
|
485
|
+
| `basePlanId` | `autorenew-{period}-{priceDigits}-v1` | `autorenew-weekly-699-v1` |
|
|
486
|
+
| Subscription title | `{AppName} Premium {PeriodLabel}` | `MyApp Premium Weekly` |
|
|
487
|
+
|
|
488
|
+
These align 1-to-1 with what `adapty setup` writes to `android_product_id` and `android_base_plan_id`, so Adapty links the products automatically without any extra configuration.
|
|
489
|
+
|
|
490
|
+
### `gpc iap list`
|
|
491
|
+
|
|
492
|
+
Read-only — lists existing one-time in-app product SKUs on Play Console.
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
kappmaker gpc iap list --package com.example.myapp
|
|
496
|
+
kappmaker gpc iap list
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
### `gpc iap push`
|
|
500
|
+
|
|
501
|
+
Create or reuse one-time in-app products from the config file. Idempotent — already-existing product IDs are skipped.
|
|
502
|
+
|
|
503
|
+
```bash
|
|
504
|
+
kappmaker gpc iap push
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
Uses the **new** monetization API: `PATCH /applications/{pkg}/onetimeproducts/{id}?allowMissing=true` to create/update the product, then `purchaseOptions:batchUpdateStates` with an `activatePurchaseOptionRequest` to activate the default purchase option so it's available to buyers. Replaces the legacy `/inappproducts` endpoint, which Google now rejects with "Please migrate to the new publishing API" on migrated apps.
|
|
508
|
+
|
|
509
|
+
### `gpc data-safety push`
|
|
510
|
+
|
|
511
|
+
Push only the data safety declaration. Faster than running the full `setup` when you're iterating on the privacy answers.
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
kappmaker gpc data-safety push
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
**How it works under the hood:** Google's `POST /applications/{pkg}/dataSafety` does not take structured JSON — it takes a CSV file (the same one Play Console exports from Policy → App content → Data safety → Export to CSV), wrapped in `{ safetyLabels: "<csv>" }`. KAppMaker lets you stay in JSON and converts internally.
|
|
518
|
+
|
|
519
|
+
**Two ways to configure it in `Assets/googleplay-config.json`:**
|
|
520
|
+
|
|
521
|
+
1. **Structured JSON (recommended)** — `data_safety.answers` overlay on top of KAppMaker defaults:
|
|
522
|
+
|
|
523
|
+
**Account creation:** "My app does not allow users to create an account" (`PSL_ACM_NONE`).
|
|
524
|
+
|
|
525
|
+
**Data deletion:** skipped entirely (the question is optional).
|
|
526
|
+
|
|
527
|
+
**Data types collected:**
|
|
528
|
+
|
|
529
|
+
| Data type | Play Question / Response |
|
|
530
|
+
|---|---|
|
|
531
|
+
| User IDs | `PSL_DATA_TYPES_PERSONAL/PSL_USER_ACCOUNT` |
|
|
532
|
+
| Device ID | `PSL_DATA_TYPES_IDENTIFIERS/PSL_DEVICE_ID` |
|
|
533
|
+
| Crash logs | `PSL_DATA_TYPES_APP_PERFORMANCE/PSL_CRASH_LOGS` |
|
|
534
|
+
| Diagnostics | `PSL_DATA_TYPES_APP_PERFORMANCE/PSL_PERFORMANCE_DIAGNOSTICS` |
|
|
535
|
+
| Other performance | `PSL_DATA_TYPES_APP_PERFORMANCE/PSL_OTHER_PERFORMANCE` |
|
|
536
|
+
| App interactions | `PSL_DATA_TYPES_APP_ACTIVITY/PSL_USER_INTERACTION` |
|
|
537
|
+
|
|
538
|
+
**Data handling (same for ALL data types above):**
|
|
539
|
+
- Collected only, **not shared** with third parties
|
|
540
|
+
- **Processed ephemerally** (YES)
|
|
541
|
+
- **Collection is required** — users can't turn it off
|
|
542
|
+
- Purposes: Analytics (+ App functionality for Device ID)
|
|
543
|
+
|
|
544
|
+
**Security:** encrypted in transit = YES.
|
|
545
|
+
|
|
546
|
+
Example config (just use the default — override if you need to add data types or change handling):
|
|
547
|
+
```json
|
|
548
|
+
"data_safety": {
|
|
549
|
+
"apply_defaults": true,
|
|
550
|
+
"answers": {}
|
|
551
|
+
}
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
To override a specific answer, add keys to `answers`. Keys are either `QuestionID` (for single-answer rows) or `QuestionID/ResponseID` (for multi-choice rows). Values are `true` / `false` / URL string / `null`:
|
|
555
|
+
```json
|
|
556
|
+
"data_safety": {
|
|
557
|
+
"apply_defaults": true,
|
|
558
|
+
"answers": {
|
|
559
|
+
"PSL_DATA_TYPES_PERSONAL/PSL_USER_ACCOUNT": true,
|
|
560
|
+
"PSL_DATA_TYPES_LOCATION/PSL_APPROX_LOCATION": true
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
Internally, KAppMaker loads a canonical 783-row template (extracted from the well-maintained [fastlane-plugin-google_data_safety](https://github.com/owenbean400/fastlane-plugin-google_data_safety)), applies defaults + your overrides, emits a filled CSV, and uploads it via `POST /dataSafety`.
|
|
566
|
+
|
|
567
|
+
2. **Escape hatch: CSV file** — if you already exported a real CSV from Play Console and filled it in:
|
|
568
|
+
```json
|
|
569
|
+
"data_safety_csv_path": "Assets/data-safety.csv"
|
|
570
|
+
```
|
|
571
|
+
When this field is set and the file exists, it takes priority over the JSON block and is uploaded verbatim.
|
|
572
|
+
|
|
573
|
+
**Important:** Review the summary Play Console shows after the push before publishing. Google's conditional question logic may reject some answers — paste the error and I'll adjust the defaults.
|
|
574
|
+
|
|
575
|
+
### `gpc app-check`
|
|
576
|
+
|
|
577
|
+
Quick read-only probe to verify that an app exists on Play Console. Useful for CI scripts and before running destructive operations.
|
|
578
|
+
|
|
579
|
+
```bash
|
|
580
|
+
kappmaker gpc app-check --package com.example.myapp
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
Exits 0 if found, 2 if missing (prints the Play Console deep link).
|
|
584
|
+
|
|
585
|
+
### Config
|
|
586
|
+
|
|
587
|
+
All `gpc` subcommands except `app-check` load `./Assets/googleplay-config.json` by default. The first run of `kappmaker gpc setup` creates it interactively.
|
|
588
|
+
|
|
589
|
+
| Flag | Description | Default |
|
|
590
|
+
|------|-------------|---------|
|
|
591
|
+
| `--config <path>` | Path to JSON config file | `./Assets/googleplay-config.json` |
|
|
592
|
+
| `--package <name>` | (list commands) Override the package name from config | — |
|
|
593
|
+
|
|
594
|
+
**Alias:** `kappmaker create-play-app` is kept as a shortcut for `kappmaker gpc setup` (the entire 11-step flow is also what the top-level `kappmaker create` calls under step 8 when you answer yes to the Google Play Console prompt).
|
|
595
|
+
|
|
596
|
+
---
|
|
597
|
+
|
|
404
598
|
## `adapty setup`
|
|
405
599
|
|
|
406
600
|
Sets up Adapty subscription products, paywalls, and placements using the [Adapty CLI](https://github.com/adaptyteam/adapty-cli).
|
|
@@ -424,12 +618,12 @@ kappmaker adapty setup --config ./my-config.json
|
|
|
424
618
|
|
|
425
619
|
### Default products
|
|
426
620
|
|
|
427
|
-
| Product | Period | Price | iOS Product ID | Android Base Plan ID |
|
|
428
|
-
|
|
429
|
-
| Weekly Premium | `weekly` | $6.99 | `{appname}.premium.weekly.v1.699.v1` | `autorenew-weekly-
|
|
430
|
-
| Yearly Premium | `annual` | $29.99 | `{appname}.premium.yearly.v1.2999.v1` | `autorenew-yearly-
|
|
621
|
+
| Product | Period | Price | iOS Product ID | Android Product ID | Android Base Plan ID |
|
|
622
|
+
|---------|--------|-------|----------------|--------------------|-----------------------|
|
|
623
|
+
| Weekly Premium | `weekly` | $6.99 | `{appname}.premium.weekly.v1.699.v1` | `{appname}.premium.weekly.v1` | `autorenew-weekly-699-v1` |
|
|
624
|
+
| Yearly Premium | `annual` | $29.99 | `{appname}.premium.yearly.v1.2999.v1` | `{appname}.premium.yearly.v1` | `autorenew-yearly-2999-v1` |
|
|
431
625
|
|
|
432
|
-
iOS product IDs match the App Store Connect format so
|
|
626
|
+
iOS product IDs match the App Store Connect format, and Android IDs match what `kappmaker gpc setup` writes to Google Play Console — so all three systems link automatically without extra configuration.
|
|
433
627
|
|
|
434
628
|
### Default paywalls and placements
|
|
435
629
|
|
|
@@ -446,7 +640,7 @@ iOS product IDs match the App Store Connect format so they align across both sys
|
|
|
446
640
|
|
|
447
641
|
## Image Tools
|
|
448
642
|
|
|
449
|
-
AI-powered image commands.
|
|
643
|
+
AI-powered image commands. A fal.ai API key is prompted on first use if not already configured.
|
|
450
644
|
|
|
451
645
|
### `image-split <source>`
|
|
452
646
|
|
|
@@ -605,6 +799,26 @@ Requires: `falApiKey`, `openaiApiKey`, and `imgbbApiKey` (if using reference ima
|
|
|
605
799
|
|
|
606
800
|
---
|
|
607
801
|
|
|
802
|
+
## `fastlane configure`
|
|
803
|
+
|
|
804
|
+
Sets up Fastlane in the mobile app directory. Creates `Gemfile`, `fastlane/Fastfile`, and runs `bundle install`.
|
|
805
|
+
|
|
806
|
+
```bash
|
|
807
|
+
kappmaker fastlane configure
|
|
808
|
+
```
|
|
809
|
+
|
|
810
|
+
Run from the project root (containing `MobileApp/`) or inside `MobileApp/` directly.
|
|
811
|
+
|
|
812
|
+
**What it creates:**
|
|
813
|
+
- `Gemfile` — Ruby gem dependencies (fastlane)
|
|
814
|
+
- `fastlane/Fastfile` — Build and upload lanes for Android (Play Store) and iOS (App Store)
|
|
815
|
+
|
|
816
|
+
If files already exist, they are skipped (not overwritten).
|
|
817
|
+
|
|
818
|
+
**Prerequisite for:** `kappmaker publish`
|
|
819
|
+
|
|
820
|
+
---
|
|
821
|
+
|
|
608
822
|
## `publish`
|
|
609
823
|
|
|
610
824
|
Builds and uploads your app to Google Play and/or App Store using Fastlane.
|
|
@@ -775,8 +989,8 @@ kappmaker config adapty-defaults --save ./config.json # Save as global defaul
|
|
|
775
989
|
| `ascKeyId` | App Store Connect API Key ID | — |
|
|
776
990
|
| `ascIssuerId` | App Store Connect Issuer ID | — |
|
|
777
991
|
| `ascPrivateKeyPath` | Path to `.p8` private key | — |
|
|
778
|
-
| `appleId` | Apple ID email (for privacy setup) | — |
|
|
779
|
-
| `googleServiceAccountPath` | Google Play service account JSON
|
|
992
|
+
| `appleId` | Apple ID email (for app creation & privacy setup) | — |
|
|
993
|
+
| `googleServiceAccountPath` | Google Play service account JSON — used by both Fastlane publish and `kappmaker gpc` | `~/credentials/google-service-app-publisher.json` |
|
|
780
994
|
|
|
781
995
|
### Global defaults
|
|
782
996
|
|
|
@@ -796,15 +1010,18 @@ src/
|
|
|
796
1010
|
index.ts # Entry point
|
|
797
1011
|
cli.ts # Command registration (Commander.js)
|
|
798
1012
|
commands/
|
|
799
|
-
create.ts # Full app setup (13-step orchestrator)
|
|
1013
|
+
create.ts # Full app setup (13-step orchestrator: Firebase + logo + refactor + build + ASC + GPC + Adapty)
|
|
800
1014
|
create-logo.ts # AI logo generation
|
|
801
1015
|
create-appstore-app.ts # App Store Connect setup (13-step orchestrator)
|
|
1016
|
+
create-play-app.ts # Google Play Console setup (11-step orchestrator, aliased by `gpc setup`)
|
|
1017
|
+
gpc.ts # kappmaker gpc subcommands (setup, listings, subscriptions, iap, data-safety, app-check)
|
|
802
1018
|
adapty-setup.ts # Adapty setup (8-step orchestrator)
|
|
803
1019
|
split.ts # Grid image splitter
|
|
804
1020
|
remove-bg.ts # Background removal
|
|
805
1021
|
enhance.ts # Image quality enhancement
|
|
806
1022
|
translate-screenshots.ts # Screenshot translation
|
|
807
1023
|
generate-screenshots.ts # AI screenshot generation
|
|
1024
|
+
fastlane-configure.ts # Set up Fastlane (Gemfile + Fastfile + bundle install)
|
|
808
1025
|
publish.ts # Build and upload to Play Store / App Store
|
|
809
1026
|
generate-keystore.ts # Generate Android signing keystore
|
|
810
1027
|
android-release-build.ts # Build signed Android release AAB
|
|
@@ -817,8 +1034,12 @@ src/
|
|
|
817
1034
|
openai.service.ts # OpenAI API (prompt generation)
|
|
818
1035
|
asc.service.ts # App Store Connect CLI wrapper
|
|
819
1036
|
asc-monetization.service.ts # ASC pricing, subscriptions, IAP
|
|
1037
|
+
gpc.service.ts # Google Play Publisher API wrapper (JWT auth, edits, listings, data safety) — no external CLI
|
|
1038
|
+
gpc-monetization.service.ts # Play new monetization API (subscriptions + base plans + onetimeproducts, NOT legacy inappproducts)
|
|
1039
|
+
gpc-data-safety.service.ts # JSON → CSV converter for Play Data Safety form (uses bundled canonical template)
|
|
820
1040
|
adapty.service.ts # Adapty CLI wrapper
|
|
821
1041
|
git.service.ts # Git operations
|
|
1042
|
+
fastlane-setup.service.ts # Fastlane scaffolding (Gemfile + Fastfile)
|
|
822
1043
|
publish.service.ts # Android/iOS publishing via Fastlane
|
|
823
1044
|
keystore.service.ts # Android keystore generation
|
|
824
1045
|
gradle.service.ts # Gradle build helpers (local.properties, clean & build)
|
|
@@ -837,9 +1058,12 @@ src/
|
|
|
837
1058
|
prompt.ts # Interactive prompts
|
|
838
1059
|
templates/
|
|
839
1060
|
appstore-config.json # Default App Store Connect config
|
|
1061
|
+
googleplay-config.json # Default Google Play Console config
|
|
1062
|
+
data-safety-template.json # Canonical Play Data Safety form schema (783 rows, 217 Q IDs)
|
|
840
1063
|
adapty-config.json # Default Adapty config
|
|
841
1064
|
types/
|
|
842
1065
|
index.ts # Shared interfaces
|
|
843
1066
|
appstore.ts # App Store Connect types
|
|
1067
|
+
googleplay.ts # Google Play Console types
|
|
844
1068
|
adapty.ts # Adapty types
|
|
845
1069
|
```
|
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,8 @@ import { enhance } from './commands/enhance.js';
|
|
|
7
7
|
import { translateScreenshots } from './commands/translate-screenshots.js';
|
|
8
8
|
import { configList, configGet, configSet, configPath, configInit, configAppStoreDefaults, configAdaptyDefaults } from './commands/config.js';
|
|
9
9
|
import { createAppStoreApp } from './commands/create-appstore-app.js';
|
|
10
|
+
import { createPlayApp } from './commands/create-play-app.js';
|
|
11
|
+
import { gpcSetup, gpcAppCheck, gpcListingsPush, gpcSubscriptionsList, gpcSubscriptionsPush, gpcIapList, gpcIapPush, gpcDataSafetyPush, } from './commands/gpc.js';
|
|
10
12
|
import { generateScreenshots } from './commands/generate-screenshots.js';
|
|
11
13
|
import { adaptySetup } from './commands/adapty-setup.js';
|
|
12
14
|
import { updateVersion } from './commands/update-version.js';
|
|
@@ -14,6 +16,7 @@ import { refactorCommand } from './commands/refactor.js';
|
|
|
14
16
|
import { generateKeystoreCommand } from './commands/generate-keystore.js';
|
|
15
17
|
import { androidReleaseBuild } from './commands/android-release-build.js';
|
|
16
18
|
import { publishCommand } from './commands/publish.js';
|
|
19
|
+
import { fastlaneConfigure } from './commands/fastlane-configure.js';
|
|
17
20
|
export function createCli() {
|
|
18
21
|
const program = new Command();
|
|
19
22
|
program
|
|
@@ -132,6 +135,79 @@ export function createCli() {
|
|
|
132
135
|
.action(async (options) => {
|
|
133
136
|
await createAppStoreApp(options);
|
|
134
137
|
});
|
|
138
|
+
// ── Google Play Console ────────────────────────────────────────────
|
|
139
|
+
program
|
|
140
|
+
.command('create-play-app')
|
|
141
|
+
.description('Alias for `kappmaker gpc setup` — configure an existing Google Play app end-to-end')
|
|
142
|
+
.option('--config <path>', 'Path to Google Play JSON config file')
|
|
143
|
+
.action(async (options) => {
|
|
144
|
+
await createPlayApp(options);
|
|
145
|
+
});
|
|
146
|
+
const gpcCmd = program
|
|
147
|
+
.command('gpc')
|
|
148
|
+
.description('Google Play Console management (listings, subscriptions, IAPs, data safety)');
|
|
149
|
+
gpcCmd
|
|
150
|
+
.command('setup')
|
|
151
|
+
.description('Full end-to-end Google Play Console setup (11 steps)')
|
|
152
|
+
.option('--config <path>', 'Path to Google Play JSON config file')
|
|
153
|
+
.action(async (options) => {
|
|
154
|
+
await gpcSetup(options);
|
|
155
|
+
});
|
|
156
|
+
gpcCmd
|
|
157
|
+
.command('app-check')
|
|
158
|
+
.description('Check whether an app exists on Google Play Console')
|
|
159
|
+
.requiredOption('--package <name>', 'Android package name (e.g. com.example.myapp)')
|
|
160
|
+
.action(async (options) => {
|
|
161
|
+
await gpcAppCheck(options);
|
|
162
|
+
});
|
|
163
|
+
const gpcListings = gpcCmd.command('listings').description('Manage store listings');
|
|
164
|
+
gpcListings
|
|
165
|
+
.command('push')
|
|
166
|
+
.description('Push listings from the Google Play config file (title, short/full description, video)')
|
|
167
|
+
.option('--config <path>', 'Path to Google Play JSON config file')
|
|
168
|
+
.action(async (options) => {
|
|
169
|
+
await gpcListingsPush(options);
|
|
170
|
+
});
|
|
171
|
+
const gpcSubs = gpcCmd.command('subscriptions').description('Manage subscriptions (new monetization API)');
|
|
172
|
+
gpcSubs
|
|
173
|
+
.command('list')
|
|
174
|
+
.description('List existing subscriptions on Google Play Console')
|
|
175
|
+
.option('--package <name>', 'Android package name (defaults to config app.package_name)')
|
|
176
|
+
.option('--config <path>', 'Path to Google Play JSON config file')
|
|
177
|
+
.action(async (options) => {
|
|
178
|
+
await gpcSubscriptionsList(options);
|
|
179
|
+
});
|
|
180
|
+
gpcSubs
|
|
181
|
+
.command('push')
|
|
182
|
+
.description('Create/reuse subscriptions from the Google Play config file (idempotent)')
|
|
183
|
+
.option('--config <path>', 'Path to Google Play JSON config file')
|
|
184
|
+
.action(async (options) => {
|
|
185
|
+
await gpcSubscriptionsPush(options);
|
|
186
|
+
});
|
|
187
|
+
const gpcIap = gpcCmd.command('iap').description('Manage one-time in-app products');
|
|
188
|
+
gpcIap
|
|
189
|
+
.command('list')
|
|
190
|
+
.description('List existing one-time in-app products')
|
|
191
|
+
.option('--package <name>', 'Android package name (defaults to config app.package_name)')
|
|
192
|
+
.option('--config <path>', 'Path to Google Play JSON config file')
|
|
193
|
+
.action(async (options) => {
|
|
194
|
+
await gpcIapList(options);
|
|
195
|
+
});
|
|
196
|
+
gpcIap
|
|
197
|
+
.command('push')
|
|
198
|
+
.description('Create/reuse in-app products from the Google Play config file (idempotent)')
|
|
199
|
+
.option('--config <path>', 'Path to Google Play JSON config file')
|
|
200
|
+
.action(async (options) => {
|
|
201
|
+
await gpcIapPush(options);
|
|
202
|
+
});
|
|
203
|
+
const gpcDataSafety = gpcCmd.command('data-safety').description('Manage the Play Store data safety declaration');
|
|
204
|
+
gpcDataSafety
|
|
205
|
+
.command('push')
|
|
206
|
+
.description('Push data safety declaration from the Google Play config file')
|
|
207
|
+
.option('--config <path>', 'Path to Google Play JSON config file')
|
|
208
|
+
.action(async (options) => {
|
|
209
|
+
await gpcDataSafetyPush(options);
|
|
210
|
+
});
|
|
135
211
|
// ── Adapty ──────────────────────────────────────────────────────────
|
|
136
212
|
const adapty = program
|
|
137
213
|
.command('adapty')
|
|
@@ -162,6 +238,16 @@ export function createCli() {
|
|
|
162
238
|
.action(async (options) => {
|
|
163
239
|
await androidReleaseBuild(options);
|
|
164
240
|
});
|
|
241
|
+
// ── Fastlane ───────────────────────────────────────────────────────
|
|
242
|
+
const fastlaneCmd = program
|
|
243
|
+
.command('fastlane')
|
|
244
|
+
.description('Fastlane setup and management');
|
|
245
|
+
fastlaneCmd
|
|
246
|
+
.command('configure')
|
|
247
|
+
.description('Set up Fastlane in the mobile app directory (Gemfile + Fastfile + bundle install)')
|
|
248
|
+
.action(async () => {
|
|
249
|
+
await fastlaneConfigure();
|
|
250
|
+
});
|
|
165
251
|
// ── Publish ────────────────────────────────────────────────────────
|
|
166
252
|
function collect(value, previous) {
|
|
167
253
|
return previous.concat([value]);
|
|
@@ -174,7 +260,7 @@ export function createCli() {
|
|
|
174
260
|
.option('--upload-metadata', 'Upload metadata (title, description)', false)
|
|
175
261
|
.option('--upload-screenshots', 'Upload screenshots', false)
|
|
176
262
|
.option('--upload-images', 'Upload images — icon, feature graphic (Android only)', false)
|
|
177
|
-
.option('--submit-for-review', 'Submit for review after upload', true)
|
|
263
|
+
.option('--submit-for-review <bool>', 'Submit for review after upload (default: true)', 'true')
|
|
178
264
|
.action(async (options) => {
|
|
179
265
|
await publishCommand(options);
|
|
180
266
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|