/

Mobile App Overview

xCRUD_Nova_Android_App is a Capacitor WebView shell around a static HTML/JS frontend that talks to any xCRUD Nova/Pro backend over plain HTTP.

What it is

xCRUD_Nova_Android_App/ is a Capacitor project - a thin native Android shell whose entire UI is a WebView. Its capacitor.config.json is deliberately small:

{
  "appId": "net.xcrud.nova",
  "appName": "xCRUD Nova",
  "webDir": "www"
}

webDir: "www" points at www/ - a rebranded copy of the project's own remote_frontend_demo/ - a 100% static HTML/JS frontend with no native Android networking code at all. Every screen (login, then the live dashboard) is fetched from a backend purely over fetch() calls, routed through core/remote_shell_bridge.php on the backend side.

The key idea: one app, any backend

The same installed app works against ANY deployed xCRUD Nova/Pro backend - the buyer's own server, not a fixed one baked in at build time. Which backend it talks to is controlled entirely by one file, www/settings.ini, edited after the fact:

  • Point it at a different backend by changing one URL.
  • Reload the WebView (or re-sync the app) to see the change - no rebuild, no code change to the app itself.
  • The static frontend it loads is the same code as the desktop remote_frontend_demo/ - just rebranded for the app shell.

This makes a quick test trivial: edit settings.ini, reload, done. See Configuring & Rebuilding the Android App for the full walkthrough, including when a real APK rebuild is actually needed.

How it fits together

PieceRole
capacitor.config.jsonCapacitor project metadata - app ID, app name, and which folder (www/) is the WebView's content root.
www/The static HTML/JS frontend loaded into the WebView - a rebranded copy of remote_frontend_demo/.
www/settings.iniThe buyer-editable config - which backend URL to call, branding text, and optional CTA links. No rebuild needed to change it.
core/remote_shell_bridge.php (backend)The server-side endpoint the frontend's fetch() calls talk to - part of the xCRUD Nova/Pro backend, not the app itself.