Demo APK (UI review)
A shareable, server-free build of the Android app for reviewing the UI and checking call-recording capability on a real phone.
Demo APK (UI review)
Before a client commits their sales team to the app, send them the demo APK. It is a full build of the real app that runs with no server and no login, filled with bundled sample data captured from the ABC Realty demo workspace. Recipients can browse every screen and — most usefully — check what their own phone supports for call recording.
Who this is for
- Super admins and agency staff demoing the product to a client.
- Business admins reviewing the app before rolling it out.
- Support staff asking a client to check a specific phone's capability.
Difficulty: Easy · Time: about 5 minutes · Prerequisites: the APK file (demo-apk/LeadHub-Demo-UI-Review.apk) shared by your operator; an Android phone.
Two ways in — and which to use
The login screen of this build has both demo entry points:
| Button | What it does | Needs a server? |
|---|---|---|
| 🔍 EXPLORE DEMO — NO SERVER NEEDED | Opens the app with sample data already inside (offline mode) — Home, Leads, Follow-ups, Calls, WhatsApp click-to-chat, Appointments, Notifications, Device health, Settings | No |
| TRY THE DEMO ACCOUNT | Signs into the seeded demo workspace (owner@abcrealty.demo) on a real server |
Yes |
For pure UI review, use EXPLORE DEMO. It flips the app into demo mode: an internal flag plus a stub token, with an interceptor that answers every API call from bundled fixtures — the same screens, DTO parsing and state handling as the real app, so what a reviewer sees is the real UI.
Step 1 — Install and open
- Send the APK to the reviewer (WhatsApp, Drive, email).
- They open the file and allow "install unknown apps" when prompted — same as any sideloaded APK; see Installation.
- Tap 🔍 EXPLORE DEMO — NO SERVER NEEDED.
- Mutating actions (call notes, dispositions, stage changes, follow-ups) succeed locally with the same optimistic UI as the real app. A Demo mode notice appears in Settings; LOG OUT — EXIT DEMO returns to the login screen.
Step 2 — Review checklist
Walk through each screen and confirm it works for the client's workflow:
- [ ] Home — today's follow-ups and assigned leads render correctly.
- [ ] Leads — list, search, open a lead, notes and stage change.
- [ ] Follow-ups — due items, complete one.
- [ ] Calls — call list and a call detail with disposition chips.
- [ ] WhatsApp click-to-chat — opens the chat action.
- [ ] Appointments and Notifications — lists render.
- [ ] Device health — on the reviewer's own phone, read the Recording: row and the health rows (this is computed entirely from on-device Android APIs — no CRM server involved).
- [ ] Settings — demo notice present; call-tracking settings visible.
The single most valuable demo check Ask the reviewer to open More → Device health on the phone they intend to use. The capability report tells them honestly whether that phone can record natively, can only import recordings, or is metadata-only — before anyone promises anything in a sales meeting.
Step 3 — Rebuild the demo APK (operators only)
- Open
android/DEMO_BUILD.md— it is the source of truth for this process. - Build with a JDK 17 environment:
cd android ./gradlew assembleRelease cp app/build/outputs/apk/release/app-release.apk ../demo-apk/LeadHub-Demo-UI-Review.apk - The release build is signed with the demo keystore (
android/keystore.properties+leadhub-release.keystore, demo credentials intended for demo use only). - To refresh the bundled sample data, re-capture payloads from the local server and regenerate the fixtures as described in
DEMO_BUILD.md(php android/tools/gen-demo-fixtures.php), then rebuild.
Expected result
- The reviewer navigates the full app with zero setup and zero server.
- Their Device health reading is a real, device-computed result.
- You have an honest answer about recording support per phone without installing anything on a real workspace.
Common mistakes
| Mistake | What happens | Fix |
|---|---|---|
| Sending the demo APK but saying it is the production build | Demo buttons and demo data confuse the client | Explain it is a UI-review build; production installs use the operator's APK |
| Testing on an emulator | Device capability readings are meaningless virtually | Always check Device health on a real phone |
| Editing fixtures manually | $ or """ breaks Kotlin raw strings |
Follow DEMO_BUILD.md and rebuild from captured payloads |
| Reviewer tries to log in with their own account | The demo build may not point at their server | Use EXPLORE DEMO, or the demo account button |
Troubleshooting
- "App not installed" — see Installation troubleshooting.
- Demo mode won't exit — Settings → LOG OUT — EXIT DEMO.
- Device health shows a state the reviewer doesn't understand — the copy on screen is the complete explanation; each row states exactly what it means and what to do. See Device health.
Technical details
- Demo mode:
SecureStore.demoMode+ stub token, entered viaAppViewModel.enterDemoMode();ApiClient's demo interceptor serves responses fromDemoFixturesGeneratedwhile the flag is on. - Build/refresh instructions live in
android/DEMO_BUILD.md; the built file is kept in the repo'sdemo-apk/folder (git-ignored). - Demo workspace credentials for the server demo button are seeded by
database/seeders/IndiaDemoSeeder.php.
Related guides
Was this page helpful?
Thanks — noted. ✦