QuantDinger Mobile

August 19, 2026 · View on GitHub

简体中文

QuantDinger Mobile app preview

QuantDinger Mobile is the mobile and H5 client for QuantDinger, an open-source AI Trading OS by Open Byte Inc. It gives users a touch-friendly way to check markets, AI analysis, strategies, bots, quick trading, account settings, and exchange API workflows from a phone.

The same Vue 3 app can be deployed as:

  • a web-based H5 app served by Docker or any static host
  • an Android app through Capacitor
  • an iOS app through Capacitor on macOS

Most users should deploy mobile together with the main QuantDinger stack. The main repo pulls the published image and wires /api to the backend automatically.

Linux or macOS:

curl -fsSL https://raw.githubusercontent.com/OpenByteInc/QuantDinger/main/install.sh | bash

Windows PowerShell:

irm https://raw.githubusercontent.com/OpenByteInc/QuantDinger/main/install.ps1 | iex

Default URLs in the full stack:

ClientURL
Desktop webhttp://localhost:8888
Mobile H5http://localhost:8889
Backend APIProxied by the frontend containers through /api/

When opening from a phone on the same LAN, use the host machine's LAN IP, for example http://192.168.1.10:8889.

GHCR image

The mobile image is published as:

ghcr.io/openbyteinc/quantdinger-mobile

Common tags are latest, semantic versions, and major/minor tags. In the main repo .env, use IMAGE_TAG to pin the whole stack or MOBILE_TAG to pin only the mobile service.

Run the image by itself when the backend already exists:

docker run -d --name quantdinger-mobile \
  -p 8889:80 \
  -e BACKEND_URL=http://host.docker.internal:5000 \
  ghcr.io/openbyteinc/quantdinger-mobile:latest

BACKEND_URL controls the container's Nginx /api/ proxy. In the main Compose stack it normally stays as http://backend:5000.

Local development

Requirements

ToolVersion
Node.jsNode 20.19+ or 22.12+. Node 22 LTS is recommended.
npmComes with Node.
BackendQuantDinger API reachable at http://localhost:5000, unless you override the dev proxy.
Native buildsAndroid Studio for Android; macOS and Xcode for iOS.

Start H5 development

git clone https://github.com/OpenByteInc/QuantDinger-Mobile.git
cd QuantDinger-Mobile
npm install
npm run dev

Open:

http://localhost:5173

The Vite dev server proxies /api/* to:

http://localhost:5000

Override the backend target when needed:

VITE_DEV_API_TARGET=http://127.0.0.1:5000 npm run dev

If DevTools shows http://localhost:5173/api/..., that is expected. The browser calls Vite first, then Vite forwards the request to the backend.

API URL behavior

Mobile and H5 deployments should usually call the backend through a same-origin /api/ proxy. This avoids CORS issues and matches the Docker setup.

RuntimeRecommended setup
Main Docker stackChange nothing. Mobile is served on MOBILE_PORT and /api/ is proxied to the backend service.
Standalone mobile Docker imagePass BACKEND_URL if the backend is not reachable as http://backend:5000.
npm run devSet VITE_DEV_API_TARGET if the backend is not on http://localhost:5000.
Static H5 hostingServe dist/ and configure your web server to proxy /api/ to the backend.
Android / iOS shellUse a backend URL that the phone can actually reach, such as https://api.example.com or a LAN IP during testing.
Preselect a native-app server URLBuild with VITE_DEFAULT_SERVER_URL=https://api.example.com; official native builds fall back to https://api.quantdinger.com.

For a packaged APK/IPA, the default backend URL is baked in at build time. If you distribute your own app, set the URL through the build command or your local .env.local; do not commit a private endpoint in a production env file.

For example, create or edit .env.local on the build machine:

VITE_DEFAULT_SERVER_URL=https://api.example.com
VITE_PUBLIC_WEB_BASE_URL=https://m.example.com

Notes:

  • The repository does not ship a hard-coded .env.production. Prebuilt H5 and Docker images therefore use same-origin /api/ and continue to honor BACKEND_URL.
  • VITE_DEFAULT_SERVER_URL must be reachable from the phone, not only from your computer.
  • Use HTTPS for public deployments. Some Android devices or networks may block insecure HTTP requests.
  • Do not use localhost or 127.0.0.1 in an APK unless the backend is running on the phone itself.
  • If you test on a LAN, use your computer's LAN IP, for example http://192.168.1.10:5000.
  • The app removes the trailing slash automatically, so both https://api.example.com and https://api.example.com/ are acceptable.

Build

H5 build

npm run build
npm run preview

Production assets are written to dist/.

For static hosting, configure:

  • SPA fallback to index.html
  • /api/ reverse proxy to the QuantDinger backend
  • HTTPS for public deployments
  • OAuth redirect allowlists on the backend when OAuth login is enabled

Native remote H5 shell

The native Android and iOS shells are configured to load the hosted mobile site directly:

{
  "server": {
    "url": "https://m.quantdinger.com"
  }
}

With this mode, most Vue UI, route, copy, theme, and API-call changes go live by deploying m.quantdinger.com; users do not need to reinstall the APK. Rebuild the APK/IPA only for native shell changes such as Capacitor plugins, permissions, app icon, splash screen, package metadata, or store-required updates.

Android

Before building an APK for your own deployment, set the default backend in .env.production:

VITE_DEFAULT_SERVER_URL=https://api.example.com
VITE_PUBLIC_WEB_BASE_URL=https://m.example.com

Then build:

npm install
npm run cap:assets
npm run build:android
cd android
./gradlew assembleDebug

On Windows PowerShell:

$env:JAVA_HOME = "C:\Program Files\Android\Android Studio\jbr"
$env:Path = "$env:JAVA_HOME\bin;$env:Path"
npm.cmd run cap:assets
npm.cmd run build:android
cd android
.\gradlew.bat assembleDebug

PowerShell one-off example without editing .env.production:

$env:VITE_DEFAULT_SERVER_URL = "https://api.example.com"
$env:VITE_PUBLIC_WEB_BASE_URL = "https://m.example.com"
npm.cmd run build
npx.cmd cap sync android
cd android
.\gradlew.bat assembleDebug

Debug APK output:

android/app/build/outputs/apk/debug/app-debug.apk

Release signing files are not committed. Keep keystores and signing properties in local secure storage or CI secrets.

iOS

iOS builds require macOS and Xcode:

npm run cap:assets
npm run build:ios
npm run cap:ios

Project structure

QuantDinger-Mobile/
├── src/
│   ├── api/                # HTTP client and API modules
│   ├── assets/             # Images and static assets
│   ├── components/         # Shared mobile components
│   ├── config/             # Default server URL, public H5 URL, theme
│   ├── router/             # Vue Router 4
│   ├── stores/             # Pinia stores
│   ├── styles/             # Global styles
│   ├── utils/              # Utility helpers
│   └── views/              # Page-level modules
├── android/                # Capacitor Android project
├── ios/                    # Capacitor iOS project
├── deploy/                 # Nginx template for Docker image
├── capacitor.config.json
├── vite.config.js
├── package.json
└── LICENSE

Tech stack

LayerTechnology
FrameworkVue 3
BuildVite 7
Native shellCapacitor 6
Mobile UIVant 4
StatePinia
RouterVue Router 4
i18nvue-i18n
HTTPAxios

Troubleshooting

SymptomWhat to check
Vite says Node 20.19+ or 22.12+ is requiredSwitch to Node 22 LTS.
H5 route refresh returns 404Configure SPA fallback to index.html.
API calls fail in H5Prefer a same-origin /api/ proxy, or explicitly allow the H5 origin in backend CORS settings.
Phone cannot reach local backendUse the computer's LAN IP, not localhost, because localhost on the phone means the phone itself.
Docker image starts but API failsCheck BACKEND_URL from inside the container network.
OAuth redirects to the wrong placeUpdate backend FRONTEND_URL and OAUTH_ALLOWED_REDIRECTS, then restart or redeploy the backend.
RepositoryRole
QuantDingerBackend API, Docker Compose, database services, deployment docs
QuantDinger-VueDesktop web frontend
QuantDinger-MobileThis repository: mobile and H5 frontend

License

This repository is released under the QuantDinger Frontend Source-Available License v1.0. See LICENSE for the full text.

In short: non-commercial and qualified non-profit use is allowed under the license conditions; commercial use requires a separate written agreement with Open Byte Inc. Preserve copyright notices, the license file, and required QuantDinger attribution.

Contact