Skip to content

GUI-based proxy/VPN client with full cross-platform support

License

Notifications You must be signed in to change notification settings

opinework/JinGo

Repository files navigation

JinGo VPN

中文

Cross-platform VPN client built with Qt 6 and Xray core.

Official Demo: https://jingoo.biz

Features

  • Cross-platform: Android, iOS, macOS, Windows, Linux
  • Modern UI: Smooth user interface built with Qt 6 QML
  • Multi-protocol: Based on Xray core, supports VMess, VLESS, Trojan, Shadowsocks, etc.
  • Multi-language: Supports 8 languages (English, Chinese, Vietnamese, Khmer, Burmese, Russian, Persian, etc.)
  • White-labeling: Supports brand customization and multi-tenant deployment

Screenshots

Connection Server List Subscription

Settings Profile

Table of Contents

Quick Start

Prerequisites

  • Qt: 6.10.0+ (recommended 6.10.0 or higher)
  • CMake: 3.21+
  • Compiler:
    • macOS/iOS: Xcode 15+
    • Android: NDK 27.2+
    • Windows: MinGW 13+ (included with Qt)
    • Linux: GCC 11+ or Clang 14+

Build Steps

1. Fork and Configure White-label

# 1. Fork this repository to your GitHub account

# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/JinGo.git
cd JinGo

# 3. Create your white-label config
cp -r white-labeling/1 white-labeling/YOUR_BRAND

# 4. Edit white-labeling/YOUR_BRAND/bundle_config.json
{
    "panel_url": "https://your-api-server.com",
    "app_name": "YourApp",
    "support_email": "support@your-domain.com",
    ...
}

# 5. Replace app icons in white-labeling/YOUR_BRAND/icons/

2. Build Application

All build scripts are in scripts/build/:

# Android APK
./scripts/build/build-android.sh --release --abi arm64-v8a

# macOS App (Universal Binary: arm64 + x86_64)
./scripts/build/build-macos.sh --release

# iOS App (requires Apple Developer Team ID)
./scripts/build/build-ios.sh --release --team-id YOUR_TEAM_ID

# Linux
./scripts/build/build-linux.sh --release

# Windows (PowerShell)
.\scripts\build\build-windows.ps1

3. Build with White-label Brand

./scripts/build/build-macos.sh --release --brand YOUR_BRAND
./scripts/build/build-android.sh --release --brand YOUR_BRAND
./scripts/build/build-ios.sh --release --brand YOUR_BRAND --team-id YOUR_TEAM_ID

Output Locations

Platform Output Location
Android APK release/jingo-*-android.apk
macOS DMG release/jingo-*-macos.dmg
iOS IPA release/jingo-*-ios.ipa
Windows EXE/MSI release/jingo-*-windows.exe
Linux tar.gz release/jingo-*-linux.tar.gz

Platform Support

Platform Architecture Minimum Version Status
Android arm64-v8a, armeabi-v7a, x86_64 API 28 (Android 9)
iOS arm64 iOS 15.0
macOS arm64, x86_64 macOS 12.0
Windows x64 Windows 10
Linux x64 Ubuntu 20.04+

Documentation

Language Support

Language Code Status
English en_US
Simplified Chinese zh_CN
Traditional Chinese zh_TW
Vietnamese vi_VN
Khmer km_KH
Burmese my_MM
Russian ru_RU
Persian fa_IR

Tech Stack

  • UI Framework: Qt 6.10.0+ (QML/Quick)
  • VPN Core: Xray-core (via SuperRay wrapper)
  • Network: Qt Network + OpenSSL
  • Storage: SQLite (Qt SQL)
  • Secure Storage:
    • macOS/iOS: Keychain
    • Android: EncryptedSharedPreferences
    • Windows: DPAPI
    • Linux: libsecret

Build Options

CMake Options

Option Default Description
USE_JINDO_LIB ON Use JinDoCore static library
JINDO_ROOT ../JinDo JinDo project path
CMAKE_BUILD_TYPE Debug Build type (Debug/Release)

Build Script Options

# Common options
--clean          # Clean build directory
--release        # Release mode
--debug          # Debug mode

# Android specific
--abi <ABI>      # Architecture (arm64-v8a/armeabi-v7a/x86_64/all)
--sign           # Sign APK

# macOS specific
--sign           # Enable code signing (requires Team ID)
--team-id ID     # Apple Development Team ID

# iOS specific (signing required)
--team-id ID     # Apple Development Team ID (required)

# Linux specific
--deploy         # Deploy Qt dependencies
--package        # Create installation package

Development

Code Style

  • C++17 standard
  • Qt coding conventions
  • Use clang-format for formatting

Debugging

# Enable verbose logging
QT_LOGGING_RULES="*.debug=true" ./JinGo

# Android logcat
adb logcat -s JinGo:V SuperRay-JNI:V

Subscription Format

The default subscription format is sing-box (JSON). The application requests flag=sing-box when fetching subscription data from the panel, which returns a standard JSON configuration that is more reliable to parse across all platforms.

Clash (YAML) format is also supported as a fallback when the server returns YAML content.

License Verification

Official release builds (from CI/CD) have license verification enabled (JINDO_ENABLE_LICENSE_CHECK=ON). These builds validate the application license at runtime with restrictions.

For the open-source version, you should build locally using the build scripts. Local builds have license verification disabled by default.

Note: GitHub Actions CI is not supported. Please use local build scripts or the project's OneDev CI/CD for automated builds.

Contact

Compliance

This software is designed to protect user privacy and secure network communications. It is strictly prohibited to use this software for:

  • Circumventing government network regulations or censorship
  • Any activities that violate local laws and regulations
  • Unauthorized access to restricted networks or services

Users must comply with all applicable laws and regulations of their country or region. The developers assume no liability for any misuse of this software.

License

MIT License


Version: 1.0.0 Qt Version: 6.10.0+ Last Updated: 2026-02

About

GUI-based proxy/VPN client with full cross-platform support

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published