Android App
Everything’s Android app is now a native Kotlin project inapps/android, with a phone module and a Wear OS module for modern Galaxy Watches.
Stack
- Kotlin with the Android Gradle Plugin.
- Jetpack Compose for the UI layer.
- Material 3 components and theming.
- Firebase Remote Config for server-driven home-screen UI.
- A phone
:appmodule with package nameco.sapientic.everything. - A watch
:wearmodule with package nameco.sapientic.everything.wear.
Local commands
npm run android:assemblebuilds a debug APK.npm run android:bundlebuilds a release Android App Bundle for the phone app.npm run android:installinstalls the debug app on a connected emulator or device.npm run android:testruns JVM unit tests.npm run android:checkruns phone and Wear Gradle verification tasks.npm run wear:assemblebuilds the Galaxy Watch / Wear OS debug APK.npm run wear:bundlebuilds a release Android App Bundle for the Wear app.npm run wear:installinstalls the Wear app on a connected watch or Wear emulator.npm run wear:testruns Wear JVM unit tests.npm run wear:checkruns Wear Gradle verification tasks.
Production branch
main is treated as production. Android pushes to main run the production workflow and publish the phone app to Google Play internal testing when Play and signing secrets are configured.
See Android production for the exact release workflow and required secrets.
Remote Config UI
The phone app readshome_screen_json from Firebase Remote Config and renders the home screen from that schema. If Firebase is not configured or the parameter is missing, the app falls back to the built-in screen.
The app uses Firebase real-time Remote Config for live updates, fetches again when the app returns to the foreground, and uses a throttled foreground poll as a fallback. Remote Config is limited to bounded presentation data and non-destructive actions.
Use this JSON shape:
headline, title, text, caption, buttonList, captureBar, taskList, spacer, and divider. Supported button actions are counter, add_task, open_url, and noop; URL actions are restricted to HTTPS links under sapientic.co. Set "visible": false on any component or button to hide it without shipping a new app build.