Set Up Your First App
In about five minutes you will have both the Android and iOS apps running. This page covers the requirements, the initial configuration, and how to rename the app to your own brand.
Requirements
Before you start, make sure you have:
- Android Studio (latest stable version recommended)
- Xcode (latest version) — for iOS development, macOS only
- JDK 17 or later
- Git
Install the Kotlin Multiplatform IDE plugin for Android Studio / IntelliJ — it runs preflight checks on your environment.
1. Fork or clone the repository
Clone or fork the repository to your machine. KMPStarterKit is distributed as a single monorepo containing the KMP mobile app, the web backend + landing page, and this documentation:
SSH:
git clone git@github.com:KAppMaker/KAppMaker-All.git
or HTTPS:
git clone https://github.com/KAppMaker/KAppMaker-All.git
The repo layout:
MobileApp/— Kotlin Compose Multiplatform app (Android, iOS, JVM Desktop, Web/WASM)Web/— Firebase Hosting landing page + Cloud Functions (AI backend)Documentation/— this site (Docusaurus, git submodule)
2. Open and run the Android app
Open the MobileApp/ folder in Android Studio, let Gradle sync, then run the Android app.
3. Run the iOS app
Open MobileApp/iosApp/iosApp.xcodeproj in Xcode. The iOS app uses Swift Package Manager for its
native dependencies (Firebase, Google Mobile Ads, etc.) — no CocoaPods step — so Xcode
resolves the packages automatically the first time. Wait for resolution to finish, then run.
Some libraries link their native iOS SDK through Swift Package Manager. Those need a
committed linkage package (iosApp/KotlinMultiplatformLinkedPackage/) plus embed-and-sign
wiring, which ships ready to use. You only regenerate it when the set of SwiftPM dependencies
changes. See iOS Production for details.
4. Run on Desktop and Web (optional)
The same shared app also targets JVM Desktop and Web (Wasm). Run either from MobileApp/:
# Desktop (JVM):
./gradlew :desktopApp:run
# Web (Wasm) dev server:
./gradlew :webApp:wasmJsBrowserDevelopmentRun
5. You're set up
Your apps now run, with authentication, notifications, and in-app purchases already wired up. Next, make the app your own.
6. Change the application / bundle ID and name
Run the refactor_package.sh script (from MobileApp/) to set your app ID and display
name. The Kotlin/Java package structure (package com.example.app) is independent of the
applicationId / bundle ID:
# Full refactor (renames Kotlin packages too):
./scripts/refactor_package.sh --app-id com.example.newapp --app-name NewApp
# Or keep Kotlin packages, change IDs + display name only:
./scripts/refactor_package.sh --app-id com.example.newapp --app-name NewApp --skip-package-rename
Arguments:
--app-id <id>(required) — AndroidapplicationId/ iOS bundle ID.--app-name <name>(required) — app display name.--skip-package-rename(optional, default off — packages are renamed) — keep Kotlin packages and directories unchanged; only update theapplicationId, bundle ID, Firebase references, and app name. Makes it easier to sync changes across multiple apps from the same codebase and avoid future merge conflicts.
Commit or back up your project before running the script, in case anything goes wrong. The script prints a plan and asks for confirmation before changing anything. Close Xcode before running it, and reopen it afterward to pick up the changes.
Re-sync Gradle once and rebuild to make sure all changes applied.
7. Keep your repository up to date
To pull the latest changes, point origin at your own repository, then merge updates
from the upstream monorepo:
git remote set-url origin <YOUR_GITHUB_REPO_URL>
git remote add upstream git@github.com:KAppMaker/KAppMaker-All.git
git fetch upstream
git merge upstream/main
Next steps
- Browse the Features Overview to see what's already built — authentication, purchases, notifications, ads, AI, and more — before writing your own.
- When you're ready to ship, work through the Pre-Publishing Checklist.
Prefer video? Watch the essential-features configuration walkthrough: