Edge
Get Edge to manage all of your crypto assets. The most secure way to buy, store and trade crypto under your control Accounts Created + 0 MM Assets Supported + 0 Languages Supported 0 Countries Support
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證QuickEx is a fast, privacy-focused payment link platform on Stellar. Claim a unique username, generate instant USDC/XLM links with QR codes, and receive payments globally in seconds — with optional X-Ray shielding for full anonymity. Built for freelancers, remittances, and P2P transfers. Help build it. Star,fork,and contribute🌍 #Opensource #stellar
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗QuickEx is a fast, privacy-focused payment link platform built on the Stellar blockchain. It enables users to create unique, shareable usernames (e.g., quickex.to/yourname) and generate instant payment requests for USDC, XLM, or any Stellar asset. Payments can be received via QR code or direct wallet integration—no apps required—leveraging Stellar's sub-second settlements and optional X-Ray privacy for shielded transactions (mainnet now live). With low fees (<0.01¢), it's designed for instant, borderless transfers.
This tool is ideal for freelancers invoicing clients, creators accepting tips, individuals handling remittances, or anyone facilitating global P2P payments. Whether you're a solo developer sharing a quick link for a gig or a small business streamlining donations, QuickEx prioritises simplicity, self-custody, and security without intermediaries.
quickex.to/yourname for easy sharing.quickex.to/yourname/50.QuickEx uses a monorepo for efficient development across apps and shared libraries. The structure features an app/ parent folder containing the core application directories (frontend, backend, mobile, contract), with shared packages for reusability. This setup allows for streamlined builds, testing, and dependency management via TurboRepo.
quickex/
├── app/
│ ├── frontend/ # Next.js app (web dashboard and link generator)
│ ├── backend/ # API server (Node.js/Express or Next.js API routes; handles usernames, transactions)
│ ├── mobile/ # React Native app (iOS/Android for on-the-go payments)
│ └── contract/ # Soroban Rust contracts (privacy/escrow logic)
├── packages/
│ ├── ui/ # Shared Tailwind components
│ └── stellar-sdk/ # Stellar utils (Horizon queries, wallet connect)
├── turbo.json # Build/dev pipelines (configured for app/ subfolders)
└── pnpm-workspace.yaml # Workspace config (includes app/* and packages/*)
Before getting started, ensure you have the following installed:
npm install -g pnpm).Clone the repository:
git clone https://github.com/pulsefy/QuickEx.git
cd QuickEx
TypeScript/Node Setup:
Install dependencies across the monorepo using pnpm:
pnpm install
Start the local development server (Frontend + Backend):
pnpm turbo run dev
Rust/Soroban Setup (for Contracts): Ensure you have the Rust toolchain installed:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup default stable
rustup target add wasm32-unknown-unknown
Build the contracts locally:
cd app/contract
cargo build --target wasm32-unknown-unknown --release
SUPABASE_URL and SUPABASE_ANON_KEY from the dashboard..env.example to .env.local in the root directory and populate it:
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key
NEXT_PUBLIC_STELLAR_NETWORK=testnet # Use 'mainnet' for production
mainnet in .env.local and ensure your wallet holds real assets.app/backend/.env and set STELLAR_NETWORK (default testnet).
Example:
STELLAR_NETWORK=testnet
Allowed values: testnet, mainnet (default testnet).
Supported assets are defined in app/backend/src/config/stellar.config.ts under SUPPORTED_ASSETS.
To add a new asset, add a native or issued entry to SUPPORTED_ASSETS.app/contract/.env (e.g., STELLAR_NETWORK=testnet).app/mobile and run npx pod-install (iOS) or configure the Android SDK.pnpm turbo run dev
This starts the frontend (app/frontend), backend (app/backend), and prepares contracts/mobile.cd app/mobile && npx react-native run-ios # or run-android
cd app/contract && cargo test # Run unit tests
# Deploy to testnet: Use Soroban CLI as per Soroban docs
Connect your wallet in the app to claim a username and test features.
Run tests to validate code quality and functionality:
pnpm turbo run lint
pnpm turbo run type-check
pnpm turbo run test:e2e
Tests require a testnet wallet; detailed setup is in TESTING.md.cd app/mobile && npm test
Deployment is automated for most components, but requires platform-specific configuration:
Frontend and Backend (Vercel):
.env.local (e.g., Supabase keys, Stellar network).main trigger auto-deploys. Set a custom domain in the Vercel project settings.Mobile (Expo):
npm install -g @expo/cli../.github/workflows/mobile-release.yml.app/mobile: run npx eas build --profile production --platform android or npx eas build --profile production --platform ios when credentials are configured.EAS_TOKEN is stored in GitHub secrets and not exposed in logs.Contracts (Soroban):
app/contract).cd app/contract && soroban contract deploy --network testnet.For production readiness, always verify NEXT_PUBLIC_STELLAR_NETWORK=mainnet and conduct thorough testing. See DEPLOYMENT.md for advanced configurations like CI/CD pipelines.
Contributions are welcome and encouraged to help evolve QuickEx! To get started:
git checkout -b feature/your-feature.main. Reference any related issues.pnpm turbo run build to validate changes across packages.packages/ui or packages/stellar-sdk) only when needed, and bump versions.pnpm turbo run lint --filter=... for targeted checks (e.g., --filter=app/frontend).All contributors must adhere to the Code of Conduct and sign off commits for DCO compliance. For more, see CONTRIBUTING.md.
This project is licensed under the MIT License. See LICENSE for details.
Built with ❤️ by Pulsefy. Powered by Stellar. 🚀
Install the following:
git clone https://github.com/Pulsefy/QiuckEx.git
cd QiuckEx
Copy the example configuration.
cp .env.example .env
Update the values for:
Backend
npm install
or
pnpm install
Rust contracts
cargo build
Run database migrations.
Prisma
npx prisma migrate dev
or
TypeORM
npm run migration:run
(Use the command appropriate for the repository.)
npm run dev
cargo test
npm test
TypeScript
npm run lint
npm run format
Rust
cargo fmt
cargo clippy
cargo test
| Variable | Purpose |
|---|---|
| DATABASE_URL | PostgreSQL connection |
| JWT_SECRET | Authentication signing key |
| STRIPE_SECRET_KEY | Stripe payment processing |
| STRIPE_WEBHOOK_SECRET | Stripe webhook verification |
| STELLAR_SECRET_KEY | Stellar wallet signing |
| STELLAR_PUBLIC_KEY | Stellar account |
| STELLAR_HORIZON_URL | Horizon API |
| STELLAR_RPC_URL | Soroban RPC endpoint |
| REDIS_URL | Redis cache |
Related Document: For operator-facing incident response instructions (such as how to flip emergency kill switches during an active live incident), please refer to the Testnet Incident Runbook.
The backend core includes a robust safety and feature gating architecture located in app/backend/src/feature-flags/. This directory contains critical security layers designed to protect Stellar smart contract interactions, restrict unauthorized contract writes during emergencies, and control feature rollout.
Key components in this module:
@RequiresFlag(flagName): Route decorator used to gate controllers and endpoints.contract-write-kill-switch.constants.ts): Global master flags to instantly halt contract-writing operations.emergency-entrypoint-registry.ts, emergency-entrypoint-allowlist.guard.ts): Defines whitelisted critical functions that bypass standard restrictions during specific administrative recovery scenarios.network-safety.guard.ts): Ensures testnet/mainnet safety boundaries are strictly enforced.To introduce a new feature and gate access across backend and client layers, follow these steps:
Add your new flag identifier to the feature flags configuration or database seeding file:
// app/backend/src/feature-flags/constants/feature-flags.constants.ts
export const FEATURE_FLAGS = {
STAKING_V2_ENABLED: 'staking_v2_enabled',
NEW_VAULT_DEPOSIT: 'new_vault_deposit', // <--- Your new flag
} as const;
# ==============================================================================
# QuickEx Backend Environment Configuration Reference
# ==============================================================================
# This file serves as the definitive template (.env.example) reconciled against
# app/backend/src/config/env.schema.ts.
#
# Related Documentation:
# - For core network URLs and contract IDs, see docs/RUNTIME-CONFIG-MATRIX.md.
# - For subsystem breakdowns and environment requirements, see Section 2 below.
# ==============================================================================
# ==============================================================================
# 1. CORE APPLICATION & SERVER
# ==============================================================================
NODE_ENV=development # Required: development | test | staging | production
PORT=3000 # Optional: Port number (default: 3000)
API_PREFIX=api/v1 # Optional: Global route prefix
# ==============================================================================
# 2. DATABASE & REDIS CACHING
# ==============================================================================
DATABASE_URL=postgresql://user:pass@localhost:5432/quickex?schema=public # Required (All envs)
REDIS_URL=redis://localhost:6379 # Required for rate limiting & queues (All envs)
# ==============================================================================
# 3. STELLAR & WEB3 CONTRACT CONFIGURATION
# ==============================================================================
STELLAR_NETWORK=testnet # Required: testnet | mainnet
STELLAR_RPC_URL=https://soroban-testnet.stellar.org:443 # Required
STELLAR_ADMIN_SECRET_KEY=S... # Required in Staging/Production for admin signing
USDC_ASSET_ISSUER=G... # Required: USDC asset issuer public key on Stellar
# ==============================================================================
# 4. SECURITY, RATE LIMITING & ABUSE SIGNALS
# ==============================================================================
JWT_SECRET=super-secret-jwt-key # Required (All envs)
JWT_EXPIRES_IN=7d # Optional
RATE_LIMIT_TTL=60 # Optional (Seconds)
RATE_LIMIT_LIMIT=100 # Optional (Max requests per TTL)
RATE_LIMIT_ALLOWLIST_IPS=127.0.0.1,::1 # Optional: Comma-separated trusted IPs
ABUSE_SIGNAL_THRESHOLD=10 # Optional: Trigger threshold for security flags
ABUSE_SIGNAL_WINDOW_SEC=300 # Optional: Time window for abuse monitoring
# ==============================================================================
# 5. TELEMETRY & OBSERVABILITY (OTEL)
# ==============================================================================
OTEL_ENABLED=false # Optional: true | false
OTEL_SERVICE_NAME=quickex-backend # Required if OTEL_ENABLED=true
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 # Required if OTEL_ENABLED=true
# ==============================================================================
# 6. QUEUES, DLQ & EXPORT SERVICES
# ==============================================================================
DLQ_ALERT_WEBHOOK_URL=https://hooks.slack.com/services/... # Optional: Dead Letter Queue alerting
EXPORT_DOWNLOAD_SECRET=secure-export-secret-key # Required for signed report downloads
MOBILE_MIN_SUPPORTED_VERSION=1.0.0 # Required: Minimum client app version
# ==============================================================================
# 7. DEPRECATED / REMOVED FIELDS (Historical Reference)
# ==============================================================================
# STRIPE_SECRET_KEY= # REMOVED: Replaced by native Stellar/Soroban payments
# PAYMENT_PROVIDER= # REMOVED: Legacy fiat payment switch
# USDC_TOKEN_CONTRACT= # REMOVED: Replaced by dynamic registry config
# Mobile Deep Link Routing & Debug Guide
> **Related Documents**:
> - For OS-level verification files, Apple App Site Association (`apple-app-site-association`), and Android Digital Asset Links (`assetlinks.json`), please refer to the root [Universal Links Implementation Summary](../UNIVERSAL_LINKS_IMPLEMENTATION_SUMMARY.md) and [Universal Links Testing Guide](../UNIVERSAL_LINKS_TESTING_GUIDE.md).
> - This document focuses exclusively on **in-app routing, URL parsing, target screens, and developer debugging**.
---
## 1. Overview & Supported Link Formats
The QuickEx mobile application (`app/mobile/`) supports both custom URI schemes for local testing and secure Universal/App Links for production routing.
### Supported Schemes & Domains
* **Custom URI Scheme**: `quickex://` (e.g., `quickex://payment-confirmation?txId=123&amount=50`)
* **Universal Links / App Links**: `https://app.quickex.io/` or preview domain variants configured in `app/mobile/app.json` under `expo.ios.associatedDomains` and `expo.android.intentFilters`.
---
## 2. In-App Routing & Parsing (`app/_layout.tsx`)
Incoming deep links are intercepted and parsed within `app/mobile/app/_layout.tsx` using Expo Router's deep linking listener hooks.
## 3. Deep-Link Target Screens & Parameter Validation
### 3.1 Payment Confirmation Screen (`app/mobile/app/payment-confirmation.tsx`)
This screen handles post-transaction redirect flows from Stellar/Soroban wallet signatures or fiat gateways.
* **Expected Query Parameters**:
* `txId` (string, required): The Stellar transaction hash.
* `amount` (string, optional): The transferred token amount.
* `status` (string, optional): `success` | `failed`.
* **Malformed Input Handling**:
* If `txId` is missing or malformed, the screen catches the validation error, displays a fallback warning banner (`"Invalid or missing transaction identifier"`), and renders a "Return to Dashboard" button instead of crashing or attempting verification polling.
---
## 4. Deep Link Debugging Tool (`app/mobile/app/deep-link-debug.tsx`)
To assist developers during feature development, a dedicated debug screen is available at `/deep-link-debug` (typically enabled in development builds).
### Purpose & Features
* **Live URI Inspection**: Displays the exact raw deep link string that launched the app or was last parsed.
* **Parameter Breakdown**: Dynamically renders a key-value JSON tree of all extracted query parameters and route segments.
* **Manual Simulator / Trigger**: Allows developers to input custom test URIs (e.g., `quickex://payment-confirmation?txId=test_hash_999&amount=100`) and instantly execute router navigation to verify screen rendering without needing external CLI tools or physical device pushes.
### How to Use During Development
1. Run the mobile app in development mode: `npx expo start`
2. Navigate to the **Deep Link Debugger** tab (`/deep-link-debug`).
3. Type or paste your target deep link URL into the input field and press **Simulate Route**.
4. Observe parsing outputs and verify that the target screen handles parameters correctly.
---
### Implementation Metadata & Commit
```text
docs(mobile): add mobile deep link routing, parsing and debug guide (#1142)
- Document custom URI schemes (quickex://) and Universal Link integration configured in app.json
- Detail in-app link interception and routing inside app/_layout.tsx
- Explain payment-confirmation.tsx parameter contracts and robust malformed input handling
- Describe deep-link-debug.tsx simulator usage for developer workflows and cross-link root documents