Open-Source React Native Scaffold for Building iOS and Android Crypto Mobile Apps with Solana Protocols.
From AI to Social, Launchpads to Wallets, and Trading β build mobile apps in under 15 minutes.
Anyone β whether a seasoned React Native developer or a Solana developer β can build mobile apps faster with 19+ protocol integrations.
-
Swaps:
In-App trading via Jupiter for the best prices across all DEXs, and native Pump AMM -
Launchpads:
The three biggest Solana launchpads with configurable bonding curves β Pump.fun, Raydium, and Meteora β along with Token Mill -
Embedded Wallets:
Top wallets like Privy, Turnkey, and Dynamic, along with Mobile Wallet Adapter support by Solana Mobile for external wallet connections. -
Token Data & Prices:
Live prices and token info from Coingecko, Birdeye, and Rugcheck -
AI Integration:
SendAI for AI chat integration to take Solana actions -
On/Off-Ramps:
Buy/sell crypto using cards or Apple Pay with MoonPay and Mercuryo (work in progress) -
Miscellaneous Tools:
Jito Bundles and Helius for transaction landing
- π± App Features
- π Documentation
- π¦ Core Installation
- π οΈ Tech Stack
- β Prerequisites
- π Quick Start
- β¨οΈ Hotkeys
- π§ͺ Development Mode Guide
- π Getting Started
- π Project Structure
- π§© Modules
- π Examples
- π’ Production Deployment
- π Dependencies
- π€ Contributing
- π₯ Contributors
- π License
- β Troubleshooting
- π Security
- π Community
Feature | Description |
---|---|
π Wallet Integration | β’ Multiple wallet connection methods β’ Embedded wallet support via Privy, Dynamic, and Turnkey β’ External wallet connections via Solana Mobile MWA β’ Transaction signing and management |
π₯ Social Features | β’ User profiles and following system β’ Social feed with posts and interactions β’ Community engagement features β’ NFT display and management β’ IPFS storage for metadata |
π¨ UI/UX | β’ Modern, responsive design β’ Tab-based navigation β’ Interactive charts and visualizations β’ Elegant loading states and error handling β’ Platform-specific optimizations |
π₯οΈ Backend Features | β’ RESTful API for token operations β’ Social data storage and retrieval β’ Token market creation and management β’ Token swapping via Jupiter and PumpSwap β’ Token launching via different launchpads like Pump, Raydium, and Meteora β’ Image upload and storage |
You can view the full documentation of the kit at: http://docs.solanaappkit.com/
npx start-solana-app
- Node.js >= 18
- pnpm or yarn or npm
- iOS: XCode and CocoaPods
- Android: Android Studio, Android SDK, and JDK
- Expo CLI
- PostgreSQL database (for the server)
-
Clone the repository:
git clone https://github.com/SendArcade/solana-app-kit.git cd solana-app-kit
-
Install dependencies:
pnpm install
-
Create a
.env.local
file with your environment variables (see Environment Variables section) -
Run the app in development mode with dev tools enabled:
# Run with development tools enabled pnpm dev # Or with the standard npm command npm run dev
-
Run on a specific platform:
# For iOS npx expo run:ios # For Android npx expo run:android
To run in development mode with cache clearing:
pnpm start --dev --clear
Solana App Kit supports two running modes:
- Standard Mode: Default production-like experience
- Development Mode: Enhanced with developer tools, navigation helpers, and error handling
To run in development mode, use the --dev
flag or the dev
script:
# Using npm script
npm run dev
# Or with the start script flag
npm start --dev
When running the Expo development server:
Key | Action |
---|---|
i |
Open on iOS simulator |
a |
Open on Android emulator |
r |
Reload the app |
m |
Toggle the menu |
d |
Open developer tools |
For details on running the app in development mode, including environment variable handling and troubleshooting, please refer to the Development Mode Guide.
This project consists of two main parts:
- React Native mobile application (in the root directory)
- Backend server (in the
server
directory)
-
Clone the repository:
git clone https://github.com/SendArcade/solana-app-kit.git cd solana-app-kit
-
Install dependencies:
pnpm install
-
Set up environment variables: Create a
.env.local
file in the root directory with the necessary variables as shown in the example below:# Blockchain CLUSTER=mainnet-beta # Authentication PRIVY_APP_ID=your_privy_app_id PRIVY_CLIENT_ID=your_privy_client_id DYNAMIC_ENVIRONMENT_ID=your_dynamic_env_id # Turnkey wallet TURNKEY_BASE_URL=https://api.turnkey.com TURNKEY_RP_ID=host.exp.exponent TURNKEY_RP_NAME=send-fi TURNKEY_ORGANIZATION_ID=your_turnkey_organization_id TURNKEY_API_PUBLIC_KEY=your_turnkey_public_key TURNKEY_API_PRIVATE_KEY=your_turnkey_private_key # APIs HELIUS_API_KEY=your_helius_api_key HELIUS_RPC_CLUSTER=mainnet HELIUS_STAKED_URL=your_helius_staked_url HELIUS_STAKED_API_KEY=your_helius_staked_api_key SERVER_URL=your_server_url TENSOR_API_KEY=your_tensor_api_key COINGECKO_API_KEY=your_coingecko_api_key BIRDEYE_API_KEY=your_birdeye_api_key COIN_MARKE_CAPAPI_KEY=your_coinmarketcap_api_key OPENAI_API_KEY=your_openai_api_key COMMISSION_WALLET=your_commission_wallet_address
-
Navigate to the server directory:
cd server
-
Install server dependencies:
pnpm install
-
Set up server environment variables:
cp .env.example .env
Required server environment variables:
WALLET_PRIVATE_KEY=your_wallet_private_key RPC_URL=your_helius_rpc_url TOKEN_MILL_PROGRAMID=your_token_mill_program_id TOKEN_MILL_CONFIG_PDA=your_token_mill_config_pda SWAP_AUTHORITY_KEY=your_swap_authority_key COMMISSION_WALLET=your_commission_wallet_address # Pinata for IPFS PINATA_JWT=your_pinata_jwt PINATA_GATEWAY=your_pinata_gateway PINATA_SECRET=your_pinata_secret PINATA_API_KEY=your_pinata_api_key # Database and Storage DATABASE_URL=your_postgresql_url GCS_BUCKET_NAME=your_gcs_bucket_name SERVICE_ACCOUNT_EMAIL=your_service_account_email # Turnkey TURNKEY_API_URL=https://api.turnkey.com TURNKEY_ORGANIZATION_ID=your_turnkey_organization_id TURNKEY_API_PUBLIC_KEY=your_turnkey_api_public_key TURNKEY_API_PRIVATE_KEY=your_turnkey_api_private_key # Supabase SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_supabase_anon_key
-
Start the development server:
pnpm dev # or yarn dev
For more details about the server, see the Server README.
The project is configured to use the .env.local
file for both local development and EAS builds. When building with EAS, the environment file is automatically loaded:
# Example for a development build on Android
npx eas build --profile development --platform android
The configuration in eas.json
specifies the .env.local
file for each build profile. The babel configuration dynamically loads this file during the build process.
The app can run in two modes:
-
Standard Mode (Default):
- Regular production-like environment
- Missing environment variables will show warnings but limit functionality
-
Development Mode:
- Enhanced developer tools and diagnostics
- Visual indicator showing "DEV MODE" at the bottom of the screen
- Access to developer drawer with navigation shortcuts and environment variable status
- Ability to bypass authentication for testing
- Missing environment variables are clearly displayed with options to fix
To start the app:
# Standard mode
pnpm start
# or
npm start
# Development mode
pnpm dev
# or
npm run dev
# or
pnpm start --dev
If you're missing environment variables:
- In standard mode: A warning banner will appear on the login screen alerting you
- In dev mode: A detailed drawer will show all missing variables, and you can bypass authentication
To enable dev mode from standard mode when env vars are missing:
- A warning will appear with an "Enable Dev Mode" button
- After enabling, restart the app
- You'll see a green "DEV MODE" indicator at the bottom of the screen
- Tap it to access developer tools
For iOS, you need to install CocoaPods dependencies first:
# Install Ruby bundler (first time only)
bundle install
# Install CocoaPods dependencies
bundle exec pod install
Then run the app:
pnpm ios
# or
yarn ios
# or
npm run ios
pnpm android
# or
yarn android
# or
npm run android
If you encounter Android SDK location errors, you need to set up your Android environment variables. Add the following to your shell configuration file (.zshrc
, .bashrc
, or .bash_profile
):
# Android SDK setup (macOS)
export ANDROID_HOME=~/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
For temporary setup in your current terminal session:
export ANDROID_HOME=~/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
Note: Make sure you have Android Studio installed and the Android SDK is located at ~/Library/Android/sdk
(macOS) or adjust the path accordingly for your system.
solana-app-kit/
βββ src/ # Mobile app source code
β βββ assets/ # Images, icons, and other static assets
β β βββ images/ # Image assets for the app
β β βββ svgs/ # SVG graphic files
β β βββ colors.ts # Color definitions
β β βββ typography.ts # Typography definitions
β βββ core/ # Core application components
β β βββ chat/ # Chat functionality components
β β βββ dev-mode/ # Development mode utilities
β β βββ profile/ # User profile related components
β β βββ shared-ui/ # Common UI components
β β βββ thread/ # Thread-related components
β βββ modules/ # Feature modules (core functionality)
β β βββ data-module/ # Data management module
β β βββ meteora/ # Meteora integration
β β βββ moonpay/ # Moonpay integration
β β βββ nft/ # NFT display and management
β β βββ pump-fun/ # Pump.fun integration
β β βββ raydium/ # Raydium integration
β β βββ solana-agent-kit/ # Solana agent kit integration
β β βββ swap/ # Swap functionality
β β βββ token-mill/ # Token creation and management
β β βββ wallet-providers/ # Wallet connection adapters
β βββ screens/ # App screens and UI flows
β β βββ common/ # Common screen components
β β βββ sample-ui/ # Sample UI screens
β β βββ index.ts # Screen exports
β βββ server/ # Server-related functionality
β β βββ meteora/ # Meteora server integration
β βββ shared/ # Shared utilities and components
β βββ config/ # Configuration files
β βββ context/ # React context providers
β βββ hooks/ # Custom React hooks
β βββ mocks/ # Mock data for testing
β βββ navigation/ # Navigation configuration
β βββ services/ # API integrations and business logic
β βββ state/ # Redux store and slices
β β βββ auth/ # Authentication state management
β β βββ chat/ # Chat state management
β β βββ notification/ # Notification state management
β β βββ profile/ # Profile state management
β β βββ thread/ # Thread state management
β β βββ transaction/ # Transaction state management
β β βββ users/ # User state management
β β βββ store.ts # Redux store configuration
β βββ types/ # TypeScript type definitions
β βββ utils/ # Utility functions and helpers
β βββ common/ # Common utility functions
βββ server/ # Backend server code
β βββ src/ # Server source code
β β βββ controllers/ # Controller functions
β β βββ db/ # Database configuration
β β βββ routes/ # API endpoints
β β βββ service/ # Service implementations
β β βββ types/ # TypeScript types
β β βββ utils/ # Utility functions
β βββ .env.example # Example environment variables
β βββ README.md # Server documentation
βββ App.tsx # Main application component
βββ index.js # Entry point
βββ app.config.js # Expo configuration
βββ app.json # App configuration
βββ babel.config.js # Babel configuration
βββ metro.config.js # Metro bundler configuration
βββ tsconfig.json # TypeScript configuration
βββ docs/ # Documentation files
βββ CONTRIBUTING.md # Contribution guidelines
βββ LICENSE # License information
βββ package.json # Dependencies and scripts
The Solana App Kit provides several modular features that can be used independently:
Module | Capabilities |
---|---|
π embedded-wallet-providers | β’ Multiple wallet connection methods (Privy, Dynamic, Mobile Wallet Adapter) β’ Standardized wallet interface β’ Transaction handling across providers β’ Support for embedded wallets, social login, and external wallets |
π data-module | β’ Fetching on-chain data with optimized RPC calls β’ Token balance tracking β’ Transaction history display β’ Real-time data synchronization |
πΌοΈ nft | β’ NFT display, management, and trading β’ Collection viewing with floor prices β’ Compressed NFT support β’ Integration with threads and posts |
π± swap | β’ Token swapping using multiple DEX SDKs β’ Liquidity pool creation with custom token pairs β’ Liquidity management (add and remove liquidity) β’ Pool creation with custom parameters β’ Real-time quotes and price impact estimates β’ Transaction status monitoring |
π pump-fun | β’ Integration with the Pump.fun ecosystem β’ Meme token creation and management β’ Community engagement tools |
πΉ raydium | β’ Raydium DEX integration β’ Token launching and trading β’ Pool creation and management |
π meteora | β’ Meteora protocol integration β’ Token launching capabilities β’ Pool and liquidity management |
πΈ moonpay | β’ Fiat on-ramp integration β’ Buy crypto with credit cards and Apple Pay β’ Seamless payment flow |
π¦ mercuryo | β’ Fiat gateway integration (work in progress) β’ On-ramp functionality β’ Multiple payment methods support β’ Real-time exchange rates |
π€ solana-agent-kit | β’ AI agent integration for Solana interactions β’ Automated workflows and actions β’ Enhanced user assistance |
πͺ token-mill | β’ Token creation with configurable parameters β’ Bonding curve configuration for token pricing β’ Token swapping (buy/sell) functionality β’ Staking tokens for rewards β’ Creating and releasing vesting plans |
Contributions are welcome! Please feel free to submit a Pull Request.
For detailed guidelines on how to contribute to this project, see our Contributing Guide.
This toolkit handles transaction generation, signing and sending, using provided wallets. Always ensure you're using it in a secure environment and never share your private keys.
Common issues and their solutions:
Issue | Solution |
---|---|
Expo build errors | Clear your cache with expo start --clear |
Wallet connection issues | Ensure you're using the correct provider and have properly configured environment variables |
iOS simulator issues | Try resetting the simulator or running pod install in the iOS directory |
Join our community to get help, share your projects, and contribute:
This project is licensed under the Apache-2.0 License - see the LICENSE file for details.
Built with β€οΈ for the Solana ecosystem by SendAI and Send Arcade.