kappmaker 1.0.1 → 1.0.2
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
CHANGED
|
@@ -1,32 +1,79 @@
|
|
|
1
1
|
# KAppMaker CLI
|
|
2
2
|
|
|
3
|
-
CLI tool that automates the entire mobile app launch process — from project
|
|
3
|
+
CLI tool that automates the entire mobile app launch process — from project scaffolding to store-ready builds.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A single `kappmaker create` command can:
|
|
6
|
+
- Clone a template repository and set up a new project
|
|
7
|
+
- Create a Firebase project, register Android + iOS apps, enable authentication, and download SDK configs
|
|
8
|
+
- Generate an AI-powered app logo with automatic background removal
|
|
9
|
+
- Create an App Store Connect listing with metadata, categories, age rating, subscriptions, privacy declarations, and review contact info
|
|
10
|
+
- Set up Adapty subscription products, paywalls, and placements for both iOS and Android
|
|
11
|
+
- Refactor Gradle package names and application IDs
|
|
12
|
+
- Set up the build environment (Android SDK, CocoaPods)
|
|
13
|
+
- Produce a signed Android release build (AAB) via Fastlane, ready to upload to Google Play
|
|
6
14
|
|
|
7
|
-
|
|
15
|
+
On top of that, standalone commands let you generate marketing screenshots from a text description, translate screenshots to 48+ locales in parallel, remove image backgrounds, enhance image quality, and split grid images — all powered by AI.
|
|
8
16
|
|
|
9
|
-
|
|
17
|
+
By default it uses the [KAppMaker](https://kappmaker.com) boilerplate (Kotlin Multiplatform), but you can bring your own template repository via `--template-repo` or `kappmaker config set templateRepo <your-repo-url>`. Boilerplate-specific steps (Gradle refactor, Fastlane build, CocoaPods) are automatically detected and skipped with a warning when using a custom template.
|
|
10
18
|
|
|
11
|
-
|
|
19
|
+
## Installation
|
|
12
20
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
- **App Store Connect setup** — Register bundle ID, create app, set metadata, categories, age rating, subscriptions, privacy, and review info
|
|
17
|
-
- **Adapty subscription setup** — Create products, paywalls, and placements for iOS and Android
|
|
18
|
-
- **Image tools** — Split grids, remove backgrounds, enhance quality
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g kappmaker
|
|
23
|
+
```
|
|
19
24
|
|
|
20
|
-
|
|
25
|
+
Then use it anywhere:
|
|
21
26
|
|
|
22
|
-
|
|
27
|
+
```bash
|
|
28
|
+
kappmaker create <AppName>
|
|
29
|
+
```
|
|
23
30
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
<details>
|
|
32
|
+
<summary>Development setup</summary>
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install
|
|
36
|
+
npx tsx src/index.ts create <AppName>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
</details>
|
|
40
|
+
|
|
41
|
+
## Configuration
|
|
42
|
+
|
|
43
|
+
Run interactive setup to configure API keys and preferences:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
kappmaker config init
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Or set keys individually:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
kappmaker config set falApiKey <your-key> # Required for AI features (logo, screenshots, etc.)
|
|
53
|
+
kappmaker config set imgbbApiKey <your-key> # Required for screenshot translation/generation
|
|
54
|
+
kappmaker config set openaiApiKey <your-key> # Required for generate-screenshots
|
|
55
|
+
kappmaker config set templateRepo <your-repo> # Use your own template (default: KAppMaker)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
See [all config keys](#config-keys) and [external services setup](#external-services--api-keys) for details.
|
|
59
|
+
|
|
60
|
+
## Table of Contents
|
|
61
|
+
|
|
62
|
+
- [Configuration](#configuration)
|
|
63
|
+
- [Commands Overview](#commands-overview)
|
|
64
|
+
- [Features](#features)
|
|
65
|
+
- [Prerequisites](#prerequisites)
|
|
66
|
+
- [External Services & API Keys](#external-services--api-keys)
|
|
67
|
+
- [Commands](#commands)
|
|
68
|
+
- [`create <app-name>`](#create-app-name)
|
|
69
|
+
- [`create-logo`](#create-logo)
|
|
70
|
+
- [`create-appstore-app`](#create-appstore-app)
|
|
71
|
+
- [`adapty setup`](#adapty-setup)
|
|
72
|
+
- [Image Tools](#image-tools)
|
|
73
|
+
- [`translate-screenshots`](#translate-screenshots-source-dir)
|
|
74
|
+
- [`generate-screenshots`](#generate-screenshots)
|
|
75
|
+
- [Config Reference](#config-reference)
|
|
76
|
+
- [Project Structure](#project-structure)
|
|
30
77
|
|
|
31
78
|
## Commands Overview
|
|
32
79
|
|
|
@@ -43,6 +90,30 @@ The `create` command runs the full end-to-end setup. Some steps assume the [KApp
|
|
|
43
90
|
| [`kappmaker generate-screenshots`](#generate-screenshots) | Generate marketing screenshots with AI (OpenAI + fal.ai) |
|
|
44
91
|
| [`kappmaker config`](#config) | Manage CLI settings, API keys, and global defaults |
|
|
45
92
|
|
|
93
|
+
## Features
|
|
94
|
+
|
|
95
|
+
### Works with any project
|
|
96
|
+
|
|
97
|
+
These commands are standalone and don't depend on any specific boilerplate:
|
|
98
|
+
|
|
99
|
+
- **AI logo generation** — Generate logo variations with fal.ai, pick your favorite, auto-remove background
|
|
100
|
+
- **AI screenshot generation** — Generate marketing screenshots from a text description (8 style presets)
|
|
101
|
+
- **Screenshot translation** — Translate app screenshots to 48+ locales in parallel
|
|
102
|
+
- **App Store Connect setup** — Register bundle ID, create app, set metadata, categories, age rating, subscriptions, privacy, and review info
|
|
103
|
+
- **Adapty subscription setup** — Create products, paywalls, and placements for iOS and Android
|
|
104
|
+
- **Image tools** — Split grids, remove backgrounds, enhance quality
|
|
105
|
+
|
|
106
|
+
### KAppMaker boilerplate-specific
|
|
107
|
+
|
|
108
|
+
The `create` command runs the full end-to-end setup. Some steps assume the [KAppMaker](https://kappmaker.com) project structure and will be skipped with a warning if you use a custom template:
|
|
109
|
+
|
|
110
|
+
- **Gradle refactor** — Renames package name and app ID using a custom Gradle task (`refactorPackage`) built into the KAppMaker template
|
|
111
|
+
- **Firebase SDK config placement** — Downloads `google-services.json` and `GoogleService-Info.plist` to KAppMaker-specific paths (falls back to `Assets/` for custom templates)
|
|
112
|
+
- **Build environment** — Creates `local.properties` and runs CocoaPods in the `MobileApp/` directory
|
|
113
|
+
- **Android release build** — Runs Fastlane `first_time_build` lane defined in the KAppMaker template
|
|
114
|
+
- **Git remotes** — Renames origin to upstream (designed for the "fork from template" workflow)
|
|
115
|
+
- **Screenshot translation default path** — Defaults to `MobileApp/distribution/ios/appstore_metadata/screenshots/en-US` (falls back to parent of source directory)
|
|
116
|
+
|
|
46
117
|
---
|
|
47
118
|
|
|
48
119
|
## Prerequisites
|
|
@@ -122,27 +193,6 @@ The CLI integrates with several external services for AI image generation, app s
|
|
|
122
193
|
|
|
123
194
|
---
|
|
124
195
|
|
|
125
|
-
## Installation
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
npm install -g kappmaker
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Then use it anywhere:
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
kappmaker create <AppName>
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
### Development
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
npm install
|
|
141
|
-
npx tsx src/index.ts create <AppName>
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
196
|
## `create <app-name>`
|
|
147
197
|
|
|
148
198
|
Full end-to-end app bootstrapping. Creates a new KAppMaker app from the template and optionally sets up everything needed to publish.
|
|
@@ -479,9 +529,9 @@ Requires: `falApiKey`, `openaiApiKey`, and `imgbbApiKey` (if using reference ima
|
|
|
479
529
|
|
|
480
530
|
---
|
|
481
531
|
|
|
482
|
-
##
|
|
532
|
+
## Config Reference
|
|
483
533
|
|
|
484
|
-
|
|
534
|
+
Configuration is stored at `~/.config/kappmaker/config.json`.
|
|
485
535
|
|
|
486
536
|
```bash
|
|
487
537
|
kappmaker config init # Interactive setup
|
package/dist/commands/create.js
CHANGED
|
@@ -64,33 +64,39 @@ export async function createApp(appName, options) {
|
|
|
64
64
|
await firebase.firebaseLogin();
|
|
65
65
|
// Step 3: Create Firebase project
|
|
66
66
|
logger.step(3, TOTAL_STEPS, 'Creating Firebase project');
|
|
67
|
-
await firebase.createProject(config);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
67
|
+
const firebaseReady = await firebase.createProject(config);
|
|
68
|
+
if (firebaseReady) {
|
|
69
|
+
// Step 4: Create Firebase apps
|
|
70
|
+
logger.step(4, TOTAL_STEPS, 'Creating Firebase apps');
|
|
71
|
+
const androidApp = await firebase.createAndroidApp(config);
|
|
72
|
+
const iosApp = await firebase.createIosApp(config);
|
|
73
|
+
// Step 5: Enable anonymous authentication
|
|
74
|
+
logger.step(5, TOTAL_STEPS, 'Enabling anonymous authentication');
|
|
75
|
+
await firebase.enableAnonymousAuth(config.firebaseProject);
|
|
76
|
+
// Step 6: Download SDK configs
|
|
77
|
+
logger.step(6, TOTAL_STEPS, 'Downloading Firebase SDK configs');
|
|
78
|
+
const androidConfigPath = path.join(ctx.mobileDir, 'composeApp', 'google-services.json');
|
|
79
|
+
const iosConfigPath = path.join(ctx.mobileDir, 'iosApp', 'iosApp', 'GoogleService-Info.plist');
|
|
80
|
+
const assetsDir = path.join(targetPath, 'Assets');
|
|
81
|
+
const androidConfigDirExists = await fs.pathExists(path.dirname(androidConfigPath));
|
|
82
|
+
const iosConfigDirExists = await fs.pathExists(path.dirname(iosConfigPath));
|
|
83
|
+
const finalAndroidPath = androidConfigDirExists
|
|
84
|
+
? androidConfigPath
|
|
85
|
+
: path.join(assetsDir, 'google-services.json');
|
|
86
|
+
const finalIosPath = iosConfigDirExists
|
|
87
|
+
? iosConfigPath
|
|
88
|
+
: path.join(assetsDir, 'GoogleService-Info.plist');
|
|
89
|
+
if (!androidConfigDirExists || !iosConfigDirExists) {
|
|
90
|
+
await fs.ensureDir(assetsDir);
|
|
91
|
+
logger.warn('KAppMaker directory structure not found — saving Firebase configs to Assets/');
|
|
92
|
+
}
|
|
93
|
+
await firebase.downloadSdkConfig(androidApp.appId, 'ANDROID', finalAndroidPath);
|
|
94
|
+
await firebase.downloadSdkConfig(iosApp.appId, 'IOS', finalIosPath);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
logger.warn('Skipping steps 4–6 (Firebase apps, auth, SDK configs) — project not available.');
|
|
98
|
+
logger.info('You can set up Firebase manually later and re-run these steps.');
|
|
99
|
+
}
|
|
94
100
|
// Step 7: Logo generation (optional)
|
|
95
101
|
logger.step(7, TOTAL_STEPS, 'App logo generation');
|
|
96
102
|
const wantsLogo = await confirm(' Would you like to generate an app logo?');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DerivedConfig, FirebaseAppResult } from '../types/index.js';
|
|
2
2
|
export declare function firebaseLogin(): Promise<void>;
|
|
3
|
-
export declare function createProject(config: DerivedConfig): Promise<
|
|
3
|
+
export declare function createProject(config: DerivedConfig): Promise<boolean>;
|
|
4
4
|
export declare function createAndroidApp(config: DerivedConfig): Promise<FirebaseAppResult>;
|
|
5
5
|
export declare function createIosApp(config: DerivedConfig): Promise<FirebaseAppResult>;
|
|
6
6
|
export declare function downloadSdkConfig(appId: string, platform: 'ANDROID' | 'IOS', outputPath: string): Promise<void>;
|
|
@@ -12,7 +12,7 @@ export async function createProject(config) {
|
|
|
12
12
|
// Check first if project already exists
|
|
13
13
|
if (await projectExists(config.firebaseProject)) {
|
|
14
14
|
logger.info(`Firebase project "${config.firebaseProject}" already exists, skipping creation.`);
|
|
15
|
-
return;
|
|
15
|
+
return true;
|
|
16
16
|
}
|
|
17
17
|
const exitCode = await runStreaming('firebase', [
|
|
18
18
|
'projects:create',
|
|
@@ -25,17 +25,17 @@ export async function createProject(config) {
|
|
|
25
25
|
});
|
|
26
26
|
if (exitCode === 0) {
|
|
27
27
|
await waitForProject(config.firebaseProject);
|
|
28
|
+
return true;
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (!exists) {
|
|
32
|
-
logger.fatal(`Firebase project "${config.firebaseProject}" does not exist and could not be created.`);
|
|
33
|
-
logger.info('Check firebase-debug.log for details, or create it manually:');
|
|
34
|
-
logger.info(` firebase projects:create ${config.firebaseProject} --display-name ${config.appName}`);
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
30
|
+
const exists = await projectExists(config.firebaseProject);
|
|
31
|
+
if (exists) {
|
|
37
32
|
logger.info('Firebase project already exists, continuing...');
|
|
33
|
+
return true;
|
|
38
34
|
}
|
|
35
|
+
logger.warn(`Firebase project "${config.firebaseProject}" could not be created.`);
|
|
36
|
+
logger.info('Check firebase-debug.log for details, or create it manually:');
|
|
37
|
+
logger.info(` firebase projects:create ${config.firebaseProject} --display-name ${config.appName}`);
|
|
38
|
+
return false;
|
|
39
39
|
}
|
|
40
40
|
export async function createAndroidApp(config) {
|
|
41
41
|
return createOrFindApp(config, 'ANDROID', '--package-name');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.service.js","sourceRoot":"","sources":["../../src/services/firebase.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE;QACxC,KAAK,EAAE,2BAA2B;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAqB;IACvD,wCAAwC;IACxC,IAAI,MAAM,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,eAAe,sCAAsC,CAAC,CAAC;QAC/F,OAAO;
|
|
1
|
+
{"version":3,"file":"firebase.service.js","sourceRoot":"","sources":["../../src/services/firebase.service.ts"],"names":[],"mappings":"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"}
|