Skip to content

sendaifun/solana-app-kit

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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.

SolanaAppKit

NPM Downloads GitHub Forks GitHub License

Ask DeepWiki X (formerly Twitter) Follow

Anyone β€” whether a seasoned React Native developer or a Solana developer β€” can build mobile apps faster with 19+ protocol integrations.

Key Protocol Integrations

  1. Swaps:
    In-App trading via Jupiter for the best prices across all DEXs, and native Pump AMM

  2. Launchpads:
    The three biggest Solana launchpads with configurable bonding curves – Pump.fun, Raydium, and Meteora – along with Token Mill

  3. Embedded Wallets:
    Top wallets like Privy, Turnkey, and Dynamic, along with Mobile Wallet Adapter support by Solana Mobile for external wallet connections.

  4. Token Data & Prices:
    Live prices and token info from Coingecko, Birdeye, and Rugcheck

  5. NFTs:
    NFT minting via Metaplex and trading via Tensor

  6. AI Integration:
    SendAI for AI chat integration to take Solana actions

  7. On/Off-Ramps:
    Buy/sell crypto using cards or Apple Pay with MoonPay and Mercuryo (work in progress)

  8. Miscellaneous Tools:
    Jito Bundles and Helius for transaction landing


πŸ“‹ Detailed Table of Contents


πŸ“± 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

  1. Clone the repository:

    git clone https://github.com/SendArcade/solana-app-kit.git
    cd solana-app-kit
  2. Install dependencies:

    pnpm install
  3. Create a .env.local file with your environment variables (see Environment Variables section)

  4. 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
  5. 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

Development 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:

  1. React Native mobile application (in the root directory)
  2. Backend server (in the server directory)

Mobile App Installation

  1. Clone the repository:

    git clone https://github.com/SendArcade/solana-app-kit.git
    cd solana-app-kit
  2. Install dependencies:

    pnpm install
  3. 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
    

Server Installation

  1. Navigate to the server directory:

    cd server
  2. Install server dependencies:

    pnpm install
  3. 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
    
  4. 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 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.

Running the Mobile App

Standard vs Development Mode

The app can run in two modes:

  1. Standard Mode (Default):

    • Regular production-like environment
    • Missing environment variables will show warnings but limit functionality
  2. 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 --dev

Missing 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:

  1. A warning will appear with an "Enable Dev Mode" button
  2. After enabling, restart the app
  3. You'll see a green "DEV MODE" indicator at the bottom of the screen
  4. 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 install

Then run the app:

pnpm ios
# or
yarn ios
# or
npm run ios

Android

pnpm android
# or
yarn android
# or
npm run android
Android 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-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.


πŸ“‚ 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:

telegram_badge

X (formerly Twitter) Follow


πŸ“„ 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.

About

build solana apps under 15 mins

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.5%
  • JavaScript 0.2%
  • Kotlin 0.1%
  • Ruby 0.1%
  • Objective-C++ 0.1%
  • Dockerfile 0.0%