storeforge
v1.0.0
Published
π Unified App Store Deployment CLI β upload, metadata, release for iOS App Store & Google Play
Maintainers
Readme
StoreForge
π Unified App Store Deployment CLI β iOS App Store & Google Play from your terminal
One CLI to upload builds, sync metadata, check review status, and release to production on both iOS App Store and Google Play.
Install
npm install -g storeforgeQuick Start
# 1. Setup credentials
storeforge init
# 2. Upload your build
storeforge upload ios ./build/MyApp.ipa
storeforge upload android ./build/app-release.aab
# 3. Check status
storeforge status
# 4. Release to production
storeforge release ios
storeforge release android productionCommands
storeforge init
Interactive setup wizard to configure App Store Connect and Google Play credentials.
storeforge initstoreforge upload
Upload binaries to app stores.
# Upload IPA to App Store Connect / TestFlight
storeforge upload ios <ipa-path>
# Upload AAB to Google Play (default: internal track)
storeforge upload android <aab-path>
storeforge upload android <aab-path> --track beta
storeforge upload android <aab-path> --track productionOptions:
-t, --track <track>β Target track for Android:internal,alpha,beta,production(default:internal)
storeforge metadata
Manage app metadata across both stores using YAML files.
# Sync local YAML to both stores
storeforge metadata sync metadata.yml
storeforge metadata sync metadata.yml --locale ja
# Pull current metadata from stores
storeforge metadata pull
storeforge metadata pull -o my-metadata.ymlOptions:
--ios-app-id <id>β App Store Connect app ID--locale <locale>β Target locale (default:en-US)-o, --output <path>β Output path for pull (default:metadata.yml)
storeforge status
Check app review and processing status on both stores.
storeforge status
storeforge status --ios-app-id 1234567890storeforge release
Promote builds from testing to production.
# iOS: Submit for App Store review
storeforge release ios
storeforge release ios --app-id 1234567890
# Android: Promote build through tracks
storeforge release android # Auto-detect next track
storeforge release android production # Promote to production
storeforge release android beta # Promote to betastoreforge config
Manage credentials and configuration.
# Show current config
storeforge config list
# Set individual values
storeforge config set apple.keyId YOUR_KEY_ID
storeforge config set apple.issuerId YOUR_ISSUER_ID
storeforge config set apple.privateKeyPath /path/to/AuthKey.p8
storeforge config set google.serviceAccountPath /path/to/service-account.json
storeforge config set google.packageName com.example.myapp
# Get a value
storeforge config get google.packageNameApp Store Connect Setup
- Go to App Store Connect β Users and Access β Keys
- Click Generate API Key
- Select the Admin or App Manager role
- Download the
.p8private key file (you can only download it once!) - Note your Issuer ID and Key ID
storeforge config set apple.issuerId "your-issuer-id"
storeforge config set apple.keyId "your-key-id"
storeforge config set apple.privateKeyPath "/path/to/AuthKey_XXXXX.p8"Google Play Setup
- Go to Google Cloud Console β IAM & Admin β Service Accounts
- Create a new service account (or use existing)
- Grant it the Service Account User role
- Create a JSON key and download it
- Go to Google Play Console β Settings β API Access
- Link the service account and grant Release Manager permission
storeforge config set google.serviceAccountPath "/path/to/service-account.json"
storeforge config set google.packageName "com.example.myapp"Metadata YAML Format
Store your app metadata in a version-controlled YAML file:
ios:
en-US:
title: "My Awesome App"
subtitle: "Do amazing things"
description: |
My Awesome App helps you do amazing things.
Features:
- Feature one
- Feature two
- Feature three
keywords:
- awesome
- productivity
- tools
whatsNew: |
- Bug fixes and performance improvements
- New feature X
android:
en-US:
title: "My Awesome App"
shortDescription: "Do amazing things with one tap"
description: |
My Awesome App helps you do amazing things.
Features:
β
Feature one
β
Feature two
β
Feature threeCI/CD Integration
GitHub Actions
name: Deploy to Stores
on:
release:
types: [published]
jobs:
deploy:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install StoreForge
run: npm install -g storeforge
- name: Configure credentials
run: |
storeforge config set apple.issuerId "${{ secrets.ASC_ISSUER_ID }}"
storeforge config set apple.keyId "${{ secrets.ASC_KEY_ID }}"
echo "${{ secrets.ASC_PRIVATE_KEY }}" > /tmp/AuthKey.p8
storeforge config set apple.privateKeyPath /tmp/AuthKey.p8
echo '${{ secrets.GOOGLE_SERVICE_ACCOUNT }}' > /tmp/sa.json
storeforge config set google.serviceAccountPath /tmp/sa.json
storeforge config set google.packageName com.example.myapp
- name: Upload iOS
run: storeforge upload ios ./build/MyApp.ipa
- name: Upload Android
run: storeforge upload android ./build/app-release.aab --track beta
- name: Sync metadata
run: storeforge metadata sync metadata.yml
- name: Check status
run: storeforge statusConfiguration
Configuration is stored at ~/.storeforge/config.json:
{
"apple": {
"issuerId": "your-issuer-id",
"keyId": "your-key-id",
"privateKeyPath": "/path/to/AuthKey.p8"
},
"google": {
"serviceAccountPath": "/path/to/service-account.json",
"packageName": "com.example.myapp"
}
}Requirements
- Node.js 20+
- App Store Connect API key (for iOS commands)
- Google Play service account (for Android commands)
License
MIT Β© magicpro97
