openboxes / openboxes/openboxes-mobile
Support a public (unbranded) build flavor alongside VIPR
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 10
- Forks
- 13
- Avg merge
- 5d 22h
- Merged PRs (30d)
- 7
Description
Summary
Today the app is built with VVG/VIPR branding applied by the branding:vipr step (scripts/apply_branding.sh vipr, sourcing branding/vipr/). We'd eventually like to also produce a public build — a plain APK without the VIPR logo/name/splash — so OpenBoxes can distribute a generic build that isn't tied to a single customer.
Background / how branding works today
yarn branding:vipr→scripts/apply_branding.sh viprcopies launcher icons, splash, and in-app logo frombranding/vipr/, and rewritesapp_nameinandroid/app/src/main/res/values/strings.xmlfrombranding/vipr/settings.json("app_name": "VIPR").- In CI, the
bundle::brandingstep runs before the release assemble in theandroid-only/ UAT workflows (.bitrise/bitrise.yml). - So "flavor" is currently a build-time asset/name swap, not a Gradle product flavor.
Proposed approach (to refine)
- Add a public/default branding target (e.g.
branding/default/+branding:defaultscript, or a no-op/neutral branding) that applies OpenBoxes-generic assets and name. - Add a dedicated
android-publicworkflow in.bitrise/bitrise.ymlthat reuses the shared setup/release bundles but applies the public branding instead ofbranding:vipr(and likely a distinct app id / variant so branded and public builds can coexist on a device and in stores). - Reuse the per-app Appetize routing pattern added in #430: the public build deploys to its own Appetize app via its own
APPETIZE_*_PUBLIC_KEY, so flavors never collide.
Open questions / decisions
- Package name / application id for the public flavor (needed for store listings and side-by-side installs).
- Signing keys for the public build (separate keystore?).
- What "public branding" is (neutral OpenBoxes logo/name/splash assets).
- Distribution target (Play Store listing? internal only?).
Context
Split out of the OBLS-837 work (#430), which added the discrete-picking feature plus PR → Appetize preview CI plumbing. This is intentionally deferred and has product decisions attached, so it deserves its own ticket.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading scripts/apply_branding.sh, branding/vipr/, the package scripts, and the bundle::branding steps in .bitrise/bitrise.yml. Review the Appetize routing pattern from #430 and resolve the package ID, signing, assets, and distribution decisions. Done means the public branding target and android-public workflow are defined and can coexist with the VIPR build.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, shell, typescript
- Domain
- build-system, ci-cd, mobile
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100