An offline-first Android app for India Post counter staff: step-by-step Finacle procedures for POSB work (SB, RD, TD, MIS, SCSS, PPF, SSA, NSC/KVP, clearing, inventory, day-end), the full DOP menu-code list, fixes for common errors, and a What changed tab tracking SB Orders issued by the Department of Posts.
The goal is fewer mistakes at the counter: every procedure marks which steps are the supervisor's job, warns where the old manual is out of date, and the search understands menu codes, task names and error messages.
Everything works with no internet — the whole reference is bundled inside the APK and the app makes no network calls at all (it doesn't even ask for the internet permission). New SB Orders and rate revisions ship as a new APK from the Releases page; share that link and colleagues install over the old version.
Every push to main builds a signed APK and publishes it as a numbered
release — Finacle Desk v1.0.<build> — on the repo's Releases page,
with the build date, the content revision (SB Orders up to …) and the change
that triggered it.
- Open the newest release on the Releases page, or use the permanent link that always points at the newest APK: https://github.com/rahulranjan-dev-py/Finacle-map/releases/latest/download/finacle-desk.apk
- Download
finacle-desk.apkand send it (or the link) to colleagues — WhatsApp, USB, anything. - On the phone, tap the file and install. Android will ask once to allow installs from that app ("unknown sources") — allow it.
- Newer APKs install over the old one (same signing key, rising version
number). No uninstall needed; nothing is lost. The installed version shows
in the app's top bar (e.g.
v1.0.7), so anyone can check they're current.
This is the routine you'll do most often. Everything lives in
app/src/main/assets/finacledesk.html, inside the <script id="DATA">
block.
-
Find
const NEWS = [and add the new order at the top of the list:{d:"18 Sep 2026", o:"SB Order 11/2026", t:"One-line title of what the order does", hi:1, u:"https://www.indiapost.gov.in/VAS/Pages/sborders.aspx", b:"The details, written for the counter. What changes, from when, what to do differently."},
ddate,oorder number,ttitle,bbody (may contain<b>for emphasis).hi:1marks it "affects counter work" (red highlight). Leave it out for routine orders.uis optional — a link to the order PDF/circular; the app shows an "Open the order" link that opens in the phone's browser.- Mind the comma after the closing
}— every entry but the last needs one.
-
Update
let REV = "…"near the top of the block to today's date (shown in the app's masthead and disclaimer). -
If the quarterly interest rates changed, edit
RATESandRATE_ASONtoo. -
Open the HTML in a browser on your computer once to make sure it still loads — a missing comma or quote is the usual slip.
-
Commit and push to
main.
CI then publishes a new numbered release (v1.0.<build>) on the Releases
page. Share the permanent link above (or the file) with colleagues; the new
APK installs over the old one.
Where to watch for new orders: the India Post SB Orders page (https://www.indiapost.gov.in/VAS/Pages/sborders.aspx) and your circle's official channels.
That content lives in app/src/main/assets/finacledesk.html inside the
<script id="DATA"> block — plain JavaScript arrays with comments:
PROC— step-by-step procedures (sup:1= supervisor step, gold rail)MENUS— the menu-code list by groupFIX— error → what actually clears itRATES,SCHEMES,OFFACC,CHAPTERS— reference tables
Newer entries added after the original research sit in a second block,
<script id="DATA2">, which appends to the same arrays — either place works.
Edit, push to main, and the next APK carries it. You can preview the HTML by
opening it in any browser on your computer.
app/src/main/assets/finacledesk.html ← the whole app: UI + all content (offline)
app/src/main/java/.../MainActivity.java← thin WebView shell, no network code
.github/workflows/build-apk.yml ← builds + signs + publishes the APK
The app is a single HTML file inside a WebView. It requests no permissions; links inside it open in the phone's browser. Bookmarks, recently-viewed and the theme choice are stored on the phone. Minimum Android version: 7.0 (API 24).
The signing keystore (signing/finacledesk.jks) and its password
(gradle.properties) are committed on purpose, so that every build — CI
or a laptop — signs identically, which is what lets a new APK install over
the old one with nothing to configure.
What that means in practice: the app has no accounts, no network access and no data of its own, so the key protects nothing except "who may publish an update that installs over the existing app". With the repo public, anyone could in principle build such an APK — but they would still have to get a colleague to install it by hand. Share APKs only from this repo's Releases page or directly from you, and that risk is contained. If you would rather not have the key public at all, make the repo private again (Settings → General → Danger Zone) and share the APK file itself instead of the release link; nothing in the app depends on the repo being public.
If the key is ever changed, colleagues must uninstall and reinstall once — Android refuses an update signed with a different key.
Open the project in Android Studio (or run ./gradlew assembleRelease with
the Android SDK installed). Output: app/build/outputs/apk/release/.
Content disclaimer: the app is a working aid, not an authority. Where it and a current SB Order disagree, the SB Order wins.