Electron desktop utility for watching and automating short-timeframe crypto futures workflows. The app reads public Binance Futures candles, renders a candlestick chart, ranks multi-strategy order candidates, and runs paper execution with risk sizing, PnL tracking, invalidation, stop, take-profit, trailing-stop, and leverage parameters.
This is not financial advice. Leveraged futures can liquidate an account quickly. The app includes a guarded live-order intent flow, but it does not guarantee profit and does not store exchange API keys in the browser. Real execution still requires a server-side exchange adapter, server-held keys, live:trade permission, risk acknowledgement, and exact confirmation.
- Electron shell with secure renderer defaults.
- Installable PWA with service worker, offline app shell, app icons, screenshots, and install prompt UI.
- Native Electron installer scripts for Windows, macOS, and Linux desktop artifacts.
- React + Vite interface.
- Binance Futures public kline bootstrap plus realtime kline WebSocket updates.
- Fast 2-second REST realtime fallback if the WebSocket connection is unavailable.
- Candlestick and volume chart using
lightweight-charts. - EMA 9 / EMA 21, RSI, ATR, MACD, VWAP proxy, volume confirmation, and candle expansion signal model.
- Long-only mode, risk percent, leverage slider, and estimated margin/notional.
- Multi-strategy scanner across
BTCUSDT,ETHUSDT,SOLUSDT,BNBUSDT,XRPUSDT, andDOGEUSDT. - Ranked "Best AI orders" list using a local quantitative score across EMA impulse, breakout, pullback, RSI reversal, volume expansion, MACD momentum, VWAP reclaim, ATR trail, and range squeeze patterns.
- Special prediction agent that estimates growth, loss, or sideways/no-trade bias from candle structure, MACD pressure, RSI regime, ATR, volume, momentum, and order consensus.
- Order-flow queues with simplified and detailed views:
execute,watch, andblocked, each backed by explicit AI-score, prediction-alignment, duplicate-position, leverage, and warning gates. - Paper portfolio with simulated order opening, marking, manual close, realized PnL, unrealized PnL, and localStorage persistence.
- Auto paper execution that can open the best eligible queue item only when it meets the configured
Min AI score, prediction, leverage, warning, duplicate-symbol, and max-open-position limits. - Live-ready mode with a dedicated live-order adapter panel, exchange selection, server key label, testnet switch, kill switch, risk acknowledgement, and exact phrase confirmation before adapter submission.
- Serverless
/api/live-orderproxy template that validates live-order payloads and forwards only to a configured private exchange adapter. - SSO access panel with Google, GitHub, Microsoft, Discord, Apple, Auth0, and Clerk client-id configuration support.
- Local role/permission model for viewer, trader, and admin actions, including MFA-gated custody intents.
- Security audit log for auth, authorization, and wallet-operation decisions.
- Strict external-link allowlist, restricted SSO redirect hosts, locked-down CSP, and serverless API origin checks.
- Subscription panel for Stripe card checkout, Stripe stablecoin checkout readiness, and crypto test-mode payment intents.
- Wallet operations desk for withdrawal, sell, and swap intent preparation with explicit external confirmation.
- Modern responsive terminal UI with a mint/carbon execution theme, token icons, light/dark themes, sticky side-rail scrolling, branded scrollbars, and mobile-first trading workspace priority.
- Corner notification feed for market refreshes, scanner updates, wallet/session events, audit decisions, paper trades, custody intents, and live adapter updates.
- Built-in
UI Kitshowcase view plus documented workstation design system in DESIGN.md. - Figma-ready design tokens in design/figma-tokens.json.
- RU/EN localization with persisted language preference.
- Phantom wallet connect for reading the public address, SOL balance, and all non-zero Solana SPL token accounts.
- Wallet assets auto-refresh every 15 seconds while Phantom is connected.
- Search/AEO package with canonical URL, robots, sitemap,
llms.txt, Open Graph, Twitter cards, PWA manifest screenshots, and JSON-LDSoftwareApplicationplus FAQ safety content. - Unit tests for signal, market, Phantom parsing, trading engine, order ranking, paper execution, prediction agent, order-flow queues, SSO/security helpers, custody intents, localization, and persisted preferences.
- Cypress e2e coverage for SEO/PWA assets, responsive desktop/mobile UX, UI kit, ranked order execution, detailed queues, Phantom wallet, SSO, billing acknowledgement, and custody guard rails.
The wallet panel uses the official Phantom injected provider when it is available in the browser environment. It requests only wallet connection, reads the public address, and calls Solana public RPC for the SOL balance plus non-zero SPL token accounts.
It does not request signatures, does not send transactions, and does not place exchange orders. Phantom is a Solana wallet, not a Binance futures trading API. In a plain Electron runtime, Phantom may be unavailable unless a provider is injected into that runtime; use the Vite web URL in a browser with the Phantom extension for the simplest local test.
The default balance RPC endpoint is https://solana-rpc.publicnode.com, with Solana's public endpoint as a fallback. To use your own RPC provider, create an .env.local file:
VITE_SOLANA_RPC_URL=https://your-solana-rpc.example
For production, also add that RPC origin to connect-src in index.html and vercel.json.
The app includes a production-shaped SSO/authz layer without storing secrets in the client:
- Configurable providers: Google, GitHub, Microsoft, Discord, Apple, Auth0, and Clerk.
- PKCE authorization URL generation with safe redirect allowlisting.
- Local demo SSO session for development and browser QA.
- Role-based permissions:
viewer,trader, andadmin. - MFA gate before withdrawal, sell, and swap intents.
- Local audit events for auth, authz, custody, and security decisions.
For production SSO, add the provider client IDs to .env.local:
VITE_GOOGLE_CLIENT_ID=
VITE_GITHUB_CLIENT_ID=
VITE_MICROSOFT_CLIENT_ID=
VITE_DISCORD_CLIENT_ID=
VITE_APPLE_CLIENT_ID=
VITE_AUTH0_CLIENT_ID=
VITE_CLERK_CLIENT_ID=
VITE_ALLOWED_REDIRECT_HOSTS=cryptoearner.vercel.app
The client currently starts the OAuth flow and stores PKCE verifiers locally. A production backend or serverless callback should exchange the OAuth code, verify ID tokens, enforce MFA, and issue an application session.
The wallet operations desk prepares non-custodial intents:
Withdraw: validates wallet, role, MFA, balance, amount, and Solana recipient address.Swap: prepares a Solana swap route and opens the external DEX confirmation flow.Sell: prepares a swap-to-USDC route and opens the external DEX confirmation flow.
The app does not hold private keys, does not custody funds, and does not silently sign or send transactions. Every real transfer, sale, or swap must be confirmed in the wallet or external DEX UI.
The app is designed as a fast decision and paper-automation workstation, not a guaranteed-profit bot.
Best AI ordersranks strategies across the selected market and scanner universe.Prediction agentestimates the next short horizon asgrowth,loss, orsideways/no-tradeand shows confidence, expected move, probabilities, factor scores, and risk notes.Order flow queuetranslates ranked orders into practical actions:execute: eligible for paper execution under the current risk gates.watch: close setup that needs confirmation, lower risk, or better alignment.blocked: rejected by risk, leverage, warning, duplicate-position, or score gates.
Simplemode shows the fastest operational queue.Detailedmode expands every gate so the reason for each decision is visible.
Live exchange execution is routed through explicit gates:
- The browser creates a live-order intent only after a ranked order is selected.
- Phantom wallet is used as an account identity boundary; it is not a Binance/Bybit/OKX trading key.
- SSO must issue
live:trade, MFA must be verified, the live kill switch must be off, and the user must type the exact phrase such asLIVE BTCUSDT LONG. - The browser sends only a server key label, never raw exchange API secrets.
/api/live-ordervalidates the payload, checksLIVE_TRADING_ENABLED=true, and forwards toEXCHANGE_ADAPTER_URLwithEXCHANGE_ADAPTER_SECRET.- The private adapter must own encrypted exchange API-key storage, exchange-specific signing, account limits, idempotency, a kill switch, testnet/mainnet separation, and exchange response logging.
This wiring makes live order submission possible without pretending a connected Solana wallet can directly place centralized futures orders.
Recommended plans:
Observer - 9 USD/month
Pro - 29 USD/month
Patron - 99 USD/month
The subscription panel supports:
- Stripe Checkout preparation for recurring subscriptions.
- Stripe stablecoin payment readiness when your Stripe account has access to the product.
- Crypto manual test mode using a Solana payment URI.
- Required risk/terms acknowledgement before a payment intent is prepared.
You must create the Stripe account yourself, because Stripe requires account ownership, identity, tax, compliance, and payout setup. The project includes Vercel API templates for Checkout, Customer Portal, and webhook verification.
Legal and risk template: LEGAL.md.
docker compose up webThen open:
http://localhost:5173
Requires a working local Node.js and npm installation:
npm install
npm run electron:devLocal and CI checks use human-readable step logs from scripts/quality-check.mjs:
npm run check
npm run check:fullnpm run check runs lint, unit tests, typecheck, production build, SEO/PWA/i18n checks, and production dependency audit. npm run check:full adds Cypress e2e after the production preview is available. In Docker, use docker compose run --rm e2e for the same browser user-flow suite used in CI.
PWA install is available on Windows, macOS, iOS, and Android from the deployed web app. The app includes manifest.webmanifest, service-worker.js, PNG/maskable icons, an Apple touch icon, install screenshots, and an in-app install panel.
Native desktop installers are configured with electron-builder:
npm run dist:win
npm run dist:mac
npm run dist:linuxDetailed platform instructions are in INSTALLATION.md.
The web build includes:
- Russian
langattribute and responsive viewport metadata. - Search description, keywords, canonical URL, hreflang links, Open Graph, Twitter Card, theme color, PWA manifest, service worker, Apple touch icon, favicon,
robots.txt,sitemap.xml, andllms.txt. - JSON-LD
SoftwareApplicationandFAQPagemetadata with explicit risk/no-profit-guarantee language for answer engines. - Preconnect hints for Binance Futures and Solana RPC.
- Vercel static deployment config in
vercel.json. - Production security headers for CSP, HSTS, frame blocking, referrer policy, permissions policy, and cross-origin isolation hints.
- Long-lived cache headers for Vite asset chunks, icons, screenshots, sitemap, and LLM metadata.
GitHub Actions are configured in:
.github/workflows/ci.yml- runsnpm ci, readable quality checks, production build, SEO/PWA checks, Cypress user flows, production audit, and uploads thedistartifact..github/workflows/vercel.yml- validates Vercel secrets, runs quality checks and Cypress user flows, then deploys the prebuilt production output to Vercel onmain..github/workflows/installers.yml- builds Windows, macOS, and Linux desktop installer artifacts manually or fromv*tags..github/CODEOWNERS- marks workflow, API, Electron, deployment, env template, and dependency files as owner-reviewed.
Full setup notes are in DEPLOYMENT.md.
Required GitHub repository secrets for Vercel deployment:
VERCEL_TOKEN
VERCEL_ORG_ID
VERCEL_PROJECT_ID
Recommended GitHub setup:
git remote add origin https://github.com/senior-13j/cryptoearner.git
git push -u origin mainIn Vercel, create or rename the project to cryptoearner. That gives the production URL:
https://cryptoearner.vercel.app
If you want a custom domain without .vercel.app, it must be a real DNS domain such as cryptoearner.com; cryptoearner alone is only a project name, not a valid public domain.
Create/import the Vercel project as a Vite app with:
Build Command: npm run build
Output Directory: dist
Install Command: npm ci
Optional environment variable:
VITE_SOLANA_RPC_URL=https://your-solana-rpc.example
VITE_GOOGLE_CLIENT_ID=
VITE_GITHUB_CLIENT_ID=
VITE_MICROSOFT_CLIENT_ID=
VITE_DISCORD_CLIENT_ID=
VITE_APPLE_CLIENT_ID=
VITE_AUTH0_CLIENT_ID=
VITE_CLERK_CLIENT_ID=
VITE_CREATOR_NAME=senior-13j
VITE_CREATOR_SOLANA_ADDRESS=
VITE_STRIPE_PUBLISHABLE_KEY=
VITE_BILLING_TEST_MODE=true
VITE_EXCHANGE_ID=binance-futures
VITE_EXCHANGE_ADAPTER_ENDPOINT=/api/live-order
VITE_EXCHANGE_KEY_LABEL=
VITE_LIVE_ORDER_TESTNET=true
VITE_LIVE_ORDER_KILL_SWITCH=true
PORTAL_ACCESS_SECRET=
LIVE_TRADING_ENABLED=false
EXCHANGE_ADAPTER_URL=
EXCHANGE_ADAPTER_SECRET=
Security operations checklist: SECURITY.md.
The current project was checked with:
docker compose run --rm web npm run check
docker compose run --rm web npm run seo:check
docker compose run --rm e2e
docker compose run --rm web npm run lint
docker compose run --rm web npm run test
docker compose run --rm web npm run typecheck
docker compose run --rm web npm run build
docker compose run --rm web npm audit
docker compose run --rm web npm audit --omit=dev
docker compose run --rm web npx electron-builder --dir --publish=neverBrowser QA screenshots:
crypto-earner-desktop.pngcrypto-earner-mobile.pngcrypto-earner-phantom.pngcrypto-earner-realtime.pngcrypto-earner-phantom-tokens.pngcrypto-earner-audit-desktop.pngcrypto-earner-audit-mobile.pngcrypto-earner-trading-desktop.pngcrypto-earner-trading-mobile.pngcrypto-earner-responsive-mobile.pngcrypto-earner-responsive-tablet.pngcrypto-earner-responsive-desktop.pngcrypto-earner-redesign-dark.pngcrypto-earner-redesign-light-en.pngcrypto-earner-redesign-responsive-mobile.pngcrypto-earner-redesign-responsive-tablet.pngcrypto-earner-redesign-responsive-desktop.pngcrypto-earner-sso-custody-desktop.pngcrypto-earner-sso-custody-mobile.pngcrypto-earner-subscription-desktop.pngcrypto-earner-subscription-mobile.pngcrypto-earner-algo-agent-desktop.pngcrypto-earner-algo-agent-mobile.pngcrypto-earner-algo-agent-mobile-detailed.pngcrypto-earner-final-flow-desktop.pngcrypto-earner-final-mobile.pngcrypto-earner-final-tablet.pngcrypto-earner-security-hardening-desktop.pngcrypto-earner-security-hardening-mobile.pngcrypto-earner-pwa-desktop.pngcrypto-earner-pwa-mobile.pngpublic/screenshots/desktop.pngpublic/screenshots/mobile.png