From the generated project to the stores

Church Vault writes a project with the church name, colors, and package id already set. Apple and Google still require the church’s own developer accounts and signing keys. Those cannot be created from here.

Google Play

  1. Create a Play Console account for the church.
  2. Create an upload keystore once and store it outside the project: keytool -genkeypair -v -keystore church-upload.keystore -alias upload -keyalg RSA -keysize 2048 -validity 10000
  3. Set ANDROID_KEYSTORE, ANDROID_KEY_ALIAS, ANDROID_STORE_PASS, and ANDROID_KEY_PASS.
  4. Run publish-android.ps1 in the generated MAUI folder. It builds a signed Android App Bundle.
  5. In Play Console, create the app with the package id printed in PUBLISH.md, upload the .aab to Internal testing, then promote it.
  6. The next release must use a higher version. Generate the app again in Church Vault so the build number increases, then publish again.

App Store and Transporter

  1. Enroll the church in the Apple Developer Program and create the app in App Store Connect with the same bundle id.
  2. On a Mac with Xcode, set CODESIGN_KEY and CODESIGN_PROFILE, then run publish-ios.sh.
  3. Open Transporter, sign in with the church’s Apple ID, and deliver the .ipa.
  4. Finish screenshots, the privacy questionnaire, and review notes in App Store Connect, then submit.

A Windows computer can prepare the project. The iOS archive itself is built on a Mac, or by the GitHub workflow file copied into the project, which runs on a macOS runner.

Windows desktop

Run publish-windows.ps1. It publishes an unpackaged Windows app the office can install. A Microsoft Store listing is separate and is not required.

Hosted PWA

The address /c/your-church is the installable site. Generating a PWA also writes a folder you can host on the church’s own domain, plus a pwa-qr.png that opens the hosted app when scanned. Download the same QR from App files in Your church. Point the exported folder at this Church Vault API so forms and updates still land in the same SQL Server database.

Phones on the same building network

The API address baked into a generated app defaults to the site you generated it from. A phone cannot use localhost. Generate again with the computer’s LAN address, or with the public https address, before you install the app on a device. Android emulators reach the host machine at http://10.0.2.2:port.