Solana App Kit
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.
Key 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
📋 Detailed Table of Contents
- 📱 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
📱 App Features
| 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 |
📚 Documentation
You can view the full documentation of the kit at: http://docs.solanaappkit.com/
📦 Core Installation
npx start-solana-app🛠️ Tech Stack
✅ Prerequisites
- 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)
🚀 Quick Start
-
Clone the repository:
git clone https://github.com/SendArcade/solana-app-kit.git cd solana-app-kit -
Install dependencies:
pnpm install -
Create a
.env.localfile 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 --clearDevelopment vs Standard Mode
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⌨️ Hotkeys
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 |
🧪 Development Mode Guide
For details on running the app in development mode, including environment variable handling and troubleshooting, please refer to the Development Mode Guide.
🏁 Getting Started
This project consists of two main parts:
- React Native mobile application (in the root directory)
- Backend server (in the
serverdirectory)
Mobile App Installation
-
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.localfile 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
Server Installation
-
Navigate to the server directory:
cd server -
Install server dependencies:
pnpm install -
Set up server environment variables:
cp .env.example .envRequired 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.
Environment Variables for EAS Builds
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 androidThe configuration in eas.json specifies the .env.local file for each build profile. The babel configuration dynamically loads this file during the build process.
Running the Mobile App
Standard vs Development Mode
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
Starting the App
To start the app:
# Standard mode
pnpm start
# or
npm start
# Development mode
pnpm dev
# or
npm run dev
# or
pnpm start --devMissing Environment Variables
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
iOS
For iOS, you need to install CocoaPods dependencies first:
# Install Ruby bundler (first time only)
bundle install
# Install CocoaPods dependencies
bundle exec pod installThen run the app:
pnpm ios
# or
yarn ios
# or
npm run iosAndroid
pnpm android
# or
yarn android
# or
npm run androidAndroid SDK Setup
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-toolsFor temporary setup in your current terminal session:
export ANDROID_HOME=~/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-toolsNote: 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.
📂 Project Structure
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
🧩 Modules
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 |
🤝 Contributing
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.
👥 Contributors
🔒 Security
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.
❓ Troubleshooting
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 |
🌐 Community
Join our community to get help, share your projects, and contribute:
📄 License
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.
