Version: 2.0
Last Updated: February 9, 2026
Status: Production Ready
Complete ALL items before submission:
bot/safety_controller.py)frontend/static/js/app-store-ui.js)frontend/static/css/app-store-ui.css)safety_status_api.py)python qa_app_store_mode.py --fullCreate or update your .env file:
# For App Store Review Submission
APP_STORE_MODE=true
# Keep these DISABLED for review
LIVE_CAPITAL_VERIFIED=false
DRY_RUN_MODE=false
HEARTBEAT_TRADE=false
# Optional: Set for simulation demonstration
# DRY_RUN_MODE=true # Can enable to show simulator
# Check environment variables
echo $APP_STORE_MODE # Should output: true
# Or in Python:
python -c "import os; print('APP_STORE_MODE:', os.getenv('APP_STORE_MODE'))"
# Start the app
./start.sh
# Expected output should show:
# ============================================================
# π± APP STORE REVIEW MODE ACTIVE
# ============================================================
# FOR APP STORE SUBMISSION AND REVIEW
# All dashboards visible (read-only)
# Trade execution buttons DISABLED
# Risk disclosures prominently displayed
# Simulator/sandbox trades ENABLED
# ============================================================
# Set environment
export APP_STORE_MODE=true
# Run full test suite (22+ tests)
python qa_app_store_mode.py --full
# Expected output:
# ============================================================
# β
ALL TESTS PASSED - READY FOR APP STORE SUBMISSION
# ============================================================
CRITICAL: All tests MUST pass before proceeding.
APP_STORE_MODE=true python bot.py
http://localhost:5000 (or your server URL)Capture screenshots showing:
Save these for App Store submission materials.
cd mobile/ios
open NIJA.xcodeproj
CRITICAL: Accurately configure privacy settings.
Data Collected:
Data Usage:
Data Sharing:
Include this in βNotes for Reviewerβ:
NIJA - Automated Trading App
Review Mode Configuration
IMPORTANT: This app is submitted with APP_STORE_MODE=true
What This Means:
- All dashboards and metrics are VISIBLE (read-only demonstration)
- All trade execution buttons are DISABLED (grayed out with lock icon)
- Risk disclosures are prominently displayed
- Simulator/sandbox trades are ENABLED to demonstrate functionality
- NO REAL TRADING is possible in this review mode
For Testing:
1. Launch the app
2. You will see "π± APP STORE REVIEW MODE" banner
3. All features are visible but trade execution is disabled
4. Risk disclaimers appear before any configuration
5. Simulator mode shows how trading logic works (no real money)
Technical Details:
- Environment variable: APP_STORE_MODE=true
- Safety controller prevents all live trading
- Backend enforces read-only mode
- Frontend disables all action buttons
After Approval:
- Production builds will have APP_STORE_MODE=false
- Users must explicitly enable trading (multi-step process)
- Full risk acknowledgment required for live trading
Documentation:
- See APP_STORE_SUBMISSION_GUIDE.md in code repository
- Review APPLE_APP_REVIEW_SUBMISSION_NOTES.md for details
- REVIEWER_EXPERIENCE_MAP.md shows exact reviewer flow
Contact: support@nija.app for any questions
Before full App Store submission:
cd mobile/android
./gradlew assembleRelease
jarsigner -verbose -sigalg SHA256withRSA \
-digestalg SHA-256 \
-keystore nija-release-key.keystore \
app/build/outputs/bundle/release/app-release.aab
CRITICAL: Accurately fill out Data Safety section.
Data Collected:
Data Usage:
Data Sharing: None (except with userβs exchange)
Use IARC questionnaire:
Add to βNotes for Reviewerβ:
This app is configured with APP_STORE_MODE=true for review.
All trading functionality is disabled - only read-only dashboards
and risk disclosures are shown. See included documentation for details.
DO NOT immediately switch APP_STORE_MODE=false in production!
cp .env.example .env.production
# .env.production
APP_STORE_MODE=false # Disable review mode
LIVE_CAPITAL_VERIFIED=false # Still require explicit user enable
DRY_RUN_MODE=false
# Production credentials
KRAKEN_PLATFORM_API_KEY=your_production_key
KRAKEN_PLATFORM_API_SECRET=your_production_secret
# Security
JWT_SECRET_KEY=your_production_jwt_secret
ALLOWED_ORIGINS=https://app.yourdomain.com
# After successful production deployment
git checkout main
git merge copilot/disable-trade-buttons-read-only
git push origin main
# Tag release
git tag -a v1.0.0 -m "App Store approved release"
git push origin v1.0.0
IMPORTANT: Keep APP_STORE_MODE functionality for future updates!
Every app update goes through review. Youβll need to:
Solution:
# Verify environment
echo $APP_STORE_MODE
# Reinstall dependencies
pip install -r requirements.txt
# Run tests with verbose output
python qa_app_store_mode.py --full --verbose
Check:
.app-store-disabled class/api/safety/status returns app_store_mode: trueFix:
// In browser console
fetch('/api/safety/status')
.then(r => r.json())
.then(d => console.log('APP_STORE_MODE:', d.app_store_mode))
Common Causes:
Solution:
Response Template:
Thank you for the review. NIJA is a trading automation tool,
not a payment/financial service. We:
1. Do NOT handle user funds (funds stay on user's exchange)
2. Do NOT process payments
3. Do NOT provide financial advice
4. Require extensive risk disclosures
5. Have APP_STORE_MODE for review (no real trading)
Please see our detailed response in APPLE_APP_REVIEW_SUBMISSION_NOTES.md
which explains our independent trading model and safety controls.
We're happy to provide additional information or clarification.
Ensure Your Policy States:
Check:
Fix:
# iOS
cd mobile/ios
pod install
pod update
# Android
cd mobile/android
./gradlew clean
./gradlew build
python qa_app_store_mode.py --full --verboseAPPLE_APP_REVIEW_SUBMISSION_NOTES.md - Detailed reviewer notesNIJA_APP_STORE_LAUNCH_READINESS_CHECKLIST.md - Complete checklistREVIEWER_EXPERIENCE_MAP.md - Visual guide for reviewersRISK_DISCLOSURE.md - Required risk warningsREADME.md - Project overviewLast Updated: February 9, 2026
Version: 2.0
Status: Production Ready
π Good luck with your App Store submission! π
NIJA Trading Bot - Apple App Store Submission
# Set App Store review mode
export APP_STORE_MODE=true
# Verify mode is active
python -c "from bot.app_store_mode import is_app_store_mode_enabled; print('β
Ready' if is_app_store_mode_enabled() else 'β Not Ready')"
# Run QA verification
python qa_app_store_mode.py --full
# Expected output: "β
ALL QA TESTS PASSED"
# Switch to production mode
export APP_STORE_MODE=false
# Build production version
# ... your build process
# Submit updated build to App Store
Create .env file with:
# APP STORE REVIEW MODE
APP_STORE_MODE=true
# SAFETY CONTROLS
LIVE_CAPITAL_VERIFIED=false
DRY_RUN_MODE=false
# Other settings...
# Run comprehensive QA
python qa_app_store_mode.py --full
# Should output:
# Total Tests: 22
# Passed: 22
# Failed: 0
# β
ALL QA TESTS PASSED
# Install dependencies
pip install -r requirements.txt
# Run tests
python test_app_store_mode.py
# Build app (adjust for your platform)
# iOS: Use Xcode build
# Android: Use gradle build
# Web: Build frontend assets
App Name: NIJA Trading Bot
Subtitle: Automated Cryptocurrency Trading
Category: Finance
Age Rating: 17+ (Financial Risk)
NIJA - Automated Cryptocurrency Trading
INDEPENDENT TRADING MODEL
Each account trades independently using the same algorithmic strategy.
NO trade copying between accounts.
FEATURES
β’ Automated market scanning
β’ Dual RSI strategy (RSI_9 + RSI_14)
β’ Dynamic position management
β’ Automatic profit targets
β’ Risk management controls
β’ Multi-exchange support
IMPORTANT DISCLAIMERS
RISK WARNING
Trading involves substantial risk of loss. You may lose all invested capital.
Only invest money you can afford to lose.
NOT FINANCIAL ADVICE
NIJA is a software tool, not a financial advisor. We do not provide
investment advice or recommendations.
YOUR RESPONSIBILITY
β’ You maintain full control of exchange accounts
β’ You are responsible for all trades
β’ Monitor your account regularly
β’ Understand the strategy before use
REQUIREMENTS
β’ 18+ years old (21+ in some jurisdictions)
β’ Valid exchange API credentials
β’ Minimum $50 USD recommended
β’ Stable internet connection
SUPPORTED EXCHANGES
β’ Kraken
β’ Coinbase
β’ Alpaca (stocks)
cryptocurrency, trading, automated, bitcoin, ethereum, crypto, finance, investment, algo trading, kraken
Prepare screenshots showing:
Important: Screenshots should show APP_STORE_MODE is active
Include link to your privacy policy that covers:
Copy this into βNotes for Reviewβ in App Store Connect:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
APP STORE REVIEW MODE - IMPORTANT INFORMATION
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
This build is configured for safe App Store review with APP_STORE_MODE enabled.
β
WHAT YOU CAN TEST:
1. Full Dashboard & UI
β’ View account balances (simulated data for demo)
β’ Browse trading history
β’ See performance metrics
β’ Navigate all screens
2. Risk Disclosures
β’ Independent trading model explanation
β’ Financial risk warnings
β’ User responsibility statements
β’ Terms of service
β’ Privacy policy
3. Functionality Demo
β’ Market scanning visualization
β’ Trading signal generation (simulated)
β’ Position management display
β’ Settings and preferences
β WHAT'S SAFELY BLOCKED:
β’ Live trading execution (hard-blocked at code level)
β’ Real money transactions (impossible to execute)
β’ Exchange API order placement (blocked)
β’ Any financial risk during review
π TECHNICAL IMPLEMENTATION:
β’ APP_STORE_MODE=true environment flag
β’ Multi-layer execution blocking:
- Layer 0: Broker execution layer
- Layer 1: Hard controls layer
- Layer 2: Safety controller layer
β’ All blocking attempts are logged
β’ Simulated responses for demonstration
π COMPLIANCE:
β’ Apple Guideline 2.3.8: Fully functional app β
β’ Guideline 5.1.1: Risk disclosures present β
β’ No in-app purchases β
β’ Users connect their own exchange accounts β
π― POST-APPROVAL OPERATION:
After approval, production users will:
β’ Set APP_STORE_MODE=false for live trading
β’ Connect their own exchange API credentials
β’ Enable LIVE_CAPITAL_VERIFIED flag individually
β’ Maintain full control of their funds
The app NEVER handles user money directly.
All trades execute on user's own exchange accounts.
π§ QUESTIONS?
For any questions during review:
β’ Email: [your-support-email@domain.com]
β’ Documentation: APP_STORE_MODE_IMPLEMENTATION.md
β’ Test Results: qa_app_store_mode.py --full (22/22 passing)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
VERIFICATION: Build tested and verified safe for review
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
A: The app is provided to users who want automated trading on their own accounts. Revenue model (if any) would be via subscription or one-time purchase, NOT taking commission on trades. The app operates on userβs own exchange accounts.
A: Yes, and this is clearly disclosed. Trading involves substantial risk. Multiple risk warnings are shown throughout the app. Users must acknowledge they understand the risks before proceeding.
A: The app needs to:
All access is via userβs own API credentials. The app does not store or access user funds directly.
A: The app has multiple safety controls:
Users maintain full control and can disable the app or close positions manually via their exchange.
Before full App Store submission, use TestFlight:
# Ensure APP_STORE_MODE=true
export APP_STORE_MODE=true
# Upload build via Xcode or Application Loader
# or
# Use fastlane: fastlane beta
Invite internal testers to verify:
Invite external beta testers to:
If issues found:
python qa_app_store_mode.py --fullAfter Apple approval:
# Production .env
APP_STORE_MODE=false
LIVE_CAPITAL_VERIFIED=false # Users enable individually
# Verify production mode
python -c "from bot.app_store_mode import is_app_store_mode_enabled; assert not is_app_store_mode_enabled(), 'Should be disabled'"
# Run tests
python test_app_store_mode.py
# Build
# ... your build process
Users will:
Always use APP_STORE_MODE for submissions:
# Before each submission
export APP_STORE_MODE=true
python qa_app_store_mode.py --full
# Build and submit
# ...
# After approval
export APP_STORE_MODE=false
# Build production version
When making changes:
# Check mode
echo $APP_STORE_MODE
# Should be 'true' for review submission
# If not, set it:
export APP_STORE_MODE=true
# Re-run QA
python qa_app_store_mode.py --full
Point them to:
Explain:
Before submitting to Apple:
APP_STORE_MODE=true in buildpython qa_app_store_mode.py --fullIf you encounter issues during submission:
Technical Issues:
python qa_app_store_mode.py --fullReviewer Questions:
Submission Prepared By: Development Team
Date: February 9, 2026
Status: β
Ready for Submission
QA Status: β
All Tests Passing (22/22)