Skip to content

Unified web application consolidating ArDrive Turbo services - multi-chain wallet support (Arweave/Ethereum/Solana), Stripe payments, file uploads with progress tracking, ArNS domain management, and developer tools built with React + TypeScript + Vite.

Notifications You must be signed in to change notification settings

ardriveapp/turbo-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Turbo Gateway Application

A unified web application that consolidates all ArDrive Turbo services into a single, comprehensive interface for the AR.IO Network. Built with React 18, TypeScript, and multi-chain wallet support.

Overview

This production-ready application successfully merges three separate applications:

  • turbo-landing-page: Informational content, documentation, and resources
  • turbo-topup: Complete payment flows, wallet integration, and fiat/crypto payments
  • turbo-app: File uploads, site deployment, credit sharing, ArNS management, and gift functionality

The result is a feature-complete application providing seamless access to all Turbo services through a modern, dark-themed interface with React Router v6 navigation and multi-chain wallet integration.

Features

✅ Complete Feature Set

🔐 Authentication & Wallet Support

  • Email Sign-in - Privy email authentication with automatic embedded wallet creation
  • Arweave (Wander) - Native Arweave wallet with ArconnectSigner integration
  • Ethereum - MetaMask direct connection via Wagmi v2 with ethers.BrowserProvider
  • Solana - Phantom & Solflare via @solana/wallet-adapter with custom implementation
  • Session persistence with Zustand + localStorage
  • ArNS primary name resolution with 24-hour cache
  • Wallet capability matrix with feature restrictions per chain

💳 Payment & Credits System

  • Fiat Payments - Complete Stripe checkout with PaymentDetailsPanel, PaymentConfirmationPanel, PaymentSuccessPanel
  • Gift Fiat Flow - Dedicated gift payment panels (GiftPaymentDetailsPanel, GiftPaymentConfirmationPanel, GiftPaymentSuccessPanel)
  • Crypto Payments - Solana and Ethereum crypto payments with real-time conversion
  • Credit Sharing - Wallet-to-wallet transfers with expiration options (requires Wander wallet)
  • Credit Revocation - Revoke shared credits system
  • Gift System - Send/redeem credits with gift codes
  • Real-time Conversion - USD/crypto to credits with 500ms debouncing
  • Balance Refresh - Custom events trigger automatic balance updates

📤 File Upload & Deployment

  • File Upload - Drag & drop with batch support and progress tracking (Arweave wallets only)
  • Site Deployment - Complete site deployment with data export functionality
  • ArNS Association - Associate deployments with owned ArNS names via ArNSAssociationPanel
  • Recent Deployments - Track and manage deployed sites with history
  • Cost Calculator - Real-time pricing with GiB estimates and FREE tier highlighting
  • Upload Receipts - Transaction IDs with Arweave explorer links
  • Progress Tracking - Real-time progress bars with error handling per file

🌐 ArNS Domain Management

  • Primary Name Display - AR.IO SDK integration with caching throughout UI
  • Owned Names Management - Fetch, cache (6 hours), and update ArNS names with ANT state tracking
  • ANT Updates - Update ArNS names to point to new manifests (base name @ and undernames)
  • Name Search - Domain availability checking with pricing calculations
  • TTL Configuration - Unified 600-second TTL for all ArNS records
  • Site Association - Connect deployments to owned ArNS names

🏦 Account Management

  • Account Page - Comprehensive account overview with recent activity
  • Balance Cards Grid - Visual balance display across wallet types
  • Recent Uploads/Deployments - Activity tracking with transaction links
  • Credit Sharing Section - Manage shared credits and recipients
  • Wallet Overview - Connected wallet information and ArNS name display

🛠 Developer Resources & Tools

  • Developer Hub - Complete API documentation and integration guides
  • Pricing Calculator - Storage cost estimates with GiB calculations
  • Services Calculator - Combined storage + ArNS pricing calculator
  • Gateway Information - Service endpoints and configuration details
  • Balance Checker - Look up any wallet's credit balance
  • Code Examples - Copy-paste integration examples

🎯 Modern UX & Navigation

  • React Router v6 - Full client-side routing with direct URL access
  • Waffle Menu Navigation - Unified Grid3x3 icon menu in header
  • Service Pages - Dedicated pages for each major feature
  • Payment Callbacks - Stripe success/cancel callback handling
  • Responsive Design - Mobile-first with sticky header navigation
  • Dark Theme - Consistent Tailwind styling with Turbo brand colors

## Tech Stack

Frontend Framework:
  - React 18.3 with TypeScript
  - Vite 5.4 build tool with Node polyfills
  - React Router v6 with BrowserRouter
  - Tailwind CSS with Rubik font (@fontsource/rubik)

State & Data Management:
  - Zustand v4.5.5 for global state (with selective persistence)
  - TanStack React Query v5 for server state and caching
  - Custom hooks for complex state logic
  - Event-driven balance refresh system

Authentication & Wallet Integration:
  - @privy-io/react-auth (Email authentication with embedded wallets)
  - @ardrive/turbo-sdk v1.31.1-alpha.2 (Turbo services)
  - @ar.io/sdk v3.19.0-alpha.10 (ArNS resolution and domain management)
  - Wagmi v2.12.5 with ethers v6 (Ethereum wallets)
  - @solana/wallet-adapter ecosystem (Solana wallets)
  - ArConnect integration for Arweave wallets

Payment Processing:
  - Stripe Elements (@stripe/react-stripe-js v2.8.0)
  - Multi-step fiat payment flow with validation
  - Crypto payment address generation
  - Real-time USD/crypto conversion

UI Components & Styling:
  - Headless UI v2 (modals, dropdowns)
  - Lucide React (icon system)
  - Radix UI (tabs, tooltips)
  - Dark theme with Turbo brand colors
  - Responsive design with mobile-first approach

Development Tools:
  - TypeScript v5.5.3 with strict configuration
  - ESLint v9 with React hooks plugin
  - Cross-env for consistent environment handling
  - Memory optimization (2GB-8GB allocation)

Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn package manager
  • Modern browser with Web3 wallet extension (optional, for full functionality)

Installation

# Clone the repository
cd /mnt/c/source/turbo-gateway/app

# Install dependencies
npm install

# Start development server
npm run dev
# Opens at http://localhost:3000

# Build for production
npm run build
# Output in dist/ folder

# Preview production build
npm run preview

# Run linting
npm run lint

# Type checking
npm run type-check

Environment Variables

The application works with sensible defaults, but you can customize with a .env file:

# Node environment
VITE_NODE_ENV=production

# Authentication
VITE_PRIVY_APP_ID=your_privy_app_id  # Required for email authentication

# Wallet integrations
VITE_WALLETCONNECT_PROJECT_ID=your_project_id  # Optional
VITE_SOLANA_RPC=https://api.mainnet-beta.solana.com

# Service endpoints (have defaults)
VITE_PAYMENT_SERVICE_URL=https://payment.ardrive.io
VITE_UPLOAD_SERVICE_URL=https://upload.ardrive.io

# Stripe public keys are safely included in code
# AR.IO process IDs are environment-specific

Project Structure

app/
├── src/
│   ├── components/
│   │   ├── modals/                    # Modal system
│   │   │   ├── BaseModal.tsx          # Foundation modal with portal rendering
│   │   │   ├── WalletSelectionModal.tsx
│   │   │   ├── BlockingMessageModal.tsx
│   │   │   └── ReceiptModal.tsx       # Transaction receipt display
│   │   ├── panels/                    # Feature panels
│   │   │   ├── TopUpPanel.tsx         # Credit purchase
│   │   │   ├── UploadPanel.tsx        # File upload interface
│   │   │   ├── DeploySitePanel.tsx    # Site deployment
│   │   │   ├── ShareCreditsPanel.tsx  # Credit sharing
│   │   │   ├── GiftPanel.tsx          # Gift credit sending
│   │   │   ├── RedeemPanel.tsx        # Gift redemption
│   │   │   ├── ArNSPanel.tsx          # Domain search
│   │   │   ├── BalanceCheckerPanel.tsx
│   │   │   ├── PricingCalculatorPanel.tsx
│   │   │   ├── ServicesCalculatorPanel.tsx
│   │   │   ├── DeveloperPanel.tsx     # API documentation
│   │   │   ├── GatewayInfoPanel.tsx   # Service information
│   │   │   └── InfoPanel.tsx          # Landing page info
│   │   ├── panels/crypto/             # Crypto payment panels
│   │   │   ├── CryptoConfirmationPanel.tsx
│   │   │   └── CryptoManualPaymentPanel.tsx
│   │   ├── panels/fiat/               # Fiat payment panels
│   │   │   ├── PaymentDetailsPanel.tsx
│   │   │   ├── PaymentConfirmationPanel.tsx
│   │   │   ├── PaymentSuccessPanel.tsx
│   │   │   ├── GiftPaymentDetailsPanel.tsx
│   │   │   ├── GiftPaymentConfirmationPanel.tsx
│   │   │   └── GiftPaymentSuccessPanel.tsx
│   │   ├── account/                   # Account page components
│   │   │   ├── ActivityOverview.tsx
│   │   │   ├── BalanceCardsGrid.tsx
│   │   │   ├── CreditSharingSection.tsx
│   │   │   ├── RecentDeploymentsSection.tsx
│   │   │   ├── RecentUploadsSection.tsx
│   │   │   └── WalletOverviewCard.tsx
│   │   ├── ArNSAssociationPanel.tsx   # ArNS name association
│   │   ├── Header.tsx                 # Navigation header
│   │   ├── Navigation.tsx             # Waffle menu
│   │   ├── Layout.tsx                 # Page layout wrapper
│   │   ├── WalletConnect.tsx          # Wallet connection
│   │   ├── CreditBalance.tsx          # Balance display
│   │   ├── CopyButton.tsx             # Copy utility
│   │   ├── FormEntry.tsx              # Form inputs
│   │   ├── TurboLogo.tsx              # Brand component
│   │   ├── Footer.tsx                 # Page footer
│   │   └── Faq.tsx                    # FAQ accordion
│   ├── hooks/                         # Custom React hooks
│   │   ├── useWincForOneGiB.ts        # Storage pricing
│   │   ├── useCreditsForFiat.ts       # USD to credits conversion
│   │   ├── useCreditsForCrypto.ts     # Crypto to credits conversion
│   │   ├── useCryptoForFiat.ts        # Fiat to crypto conversion
│   │   ├── useFileUpload.ts           # Multi-chain upload logic
│   │   ├── useFolderUpload.ts         # Folder upload with drag & drop
│   │   ├── usePrimaryArNSName.ts      # Primary name fetching
│   │   ├── useOwnedArNSNames.ts       # Owned names management
│   │   ├── useArNSPricing.ts          # Domain pricing calculations
│   │   ├── useCountries.ts            # Country data for payments
│   │   ├── useDebounce.ts             # Input debouncing (500ms)
│   │   ├── useTurboConfig.ts          # Centralized SDK configuration
│   │   ├── useAddressState.ts         # Address state management
│   │   ├── useGatewayInfo.ts          # Gateway information
│   │   ├── useTurboWallets.ts         # Turbo wallet management
│   │   └── useUploadStatus.ts         # Upload status tracking
│   ├── pages/                         # React Router pages
│   │   ├── LandingPage.tsx            # Public landing page
│   │   ├── HomePage.tsx               # Authenticated home
│   │   ├── Dashboard.tsx              # Main dashboard
│   │   ├── AccountPage.tsx            # Account management
│   │   ├── TopUpPage.tsx              # Credit purchase
│   │   ├── UploadPage.tsx             # File upload
│   │   ├── DeploySitePage.tsx         # Site deployment
│   │   ├── ShareCreditsPage.tsx       # Credit sharing
│   │   ├── GiftPage.tsx               # Gift sending
│   │   ├── RedeemPage.tsx             # Gift redemption
│   │   ├── ArNSPage.tsx               # Domain management
│   │   ├── CalculatorPage.tsx         # Pricing calculator
│   │   ├── ServicesCalculatorPage.tsx # Services calculator
│   │   ├── BalanceCheckerPage.tsx     # Balance lookup
│   │   ├── DeveloperPage.tsx          # Developer resources
│   │   ├── GatewayInfoPage.tsx        # Gateway information
│   │   ├── RecentDeploymentsPage.tsx  # Deployment history
│   │   └── MyAccountPage.tsx          # Account alias
│   ├── providers/                     # Context providers
│   │   └── WalletProviders.tsx        # Multi-chain wallet providers
│   ├── services/                      # API services
│   │   └── paymentService.ts          # Payment processing
│   ├── store/                         # Zustand state
│   │   └── useStore.ts                # Global state management
│   ├── utils/                         # Helper functions
│   │   └── index.ts                   # Utility functions
│   ├── constants.ts                   # App configuration
│   ├── types/                         # TypeScript types
│   │   └── global.d.ts                # Global type definitions
│   ├── App.tsx                        # Root component with routing
│   ├── main.tsx                       # Application entry point
│   ├── vite-env.d.ts                  # Vite type definitions
│   └── styles/                        # Global styles
│       └── globals.css                # Tailwind and global CSS
├── public/                            # Static assets
├── CLAUDE.md                          # Development guidance
├── package.json                       # Dependencies and scripts
├── vite.config.ts                     # Vite configuration
├── tailwind.config.js                 # Tailwind configuration
├── tsconfig.json                      # TypeScript configuration
├── tsconfig.node.json                 # Node-specific TypeScript config
├── eslint.config.js                   # ESLint configuration
├── postcss.config.js                  # PostCSS configuration
└── .env                               # Environment variables

Application Architecture

React Router Navigation System

  • Entry Point (App.tsx): React Router v6 with BrowserRouter
  • Page Structure: Each service has dedicated page wrapping panel components
  • Client-Side Routing: Full React Router implementation with direct URL access
  • Navigation: Unified waffle menu (Grid3x3 icon) in header with Link components

Available Routes

const routes = [
  '/', '/topup', '/upload', '/deploy', '/share', '/gift', '/account',
  '/domains', '/calculator', '/services-calculator', 
  '/balances', '/redeem', '/developer', '/gateway-info', '/deployments'
];

Multi-Chain Wallet Integration

Arweave (Wander)

  • Uses ArconnectSigner from @ardrive/turbo-sdk/web
  • Required for file uploads and ArNS transactions
  • Direct window.arweaveWallet integration

Ethereum

  • Uses Wagmi v2 with MetaMask and WalletConnect connectors
  • Supports mainnet via HTTP transport
  • Uses ethers.BrowserProvider for signing

Solana

  • Uses @solana/wallet-adapter with Phantom and Solflare
  • Custom SolanaWalletAdapter implementation
  • Uses window.solana for direct provider access

State Management Architecture

Uses Zustand with selective persistence:

// Persistent state (survives page refresh)
address, walletType, arnsNamesCache, uploadHistory, deployHistory

// Ephemeral state (cleared on refresh)
creditBalance, paymentState, UI state

Payment Callback System

  • ?payment=success - Payment success callback (handled by PaymentCallbackHandler)
  • ?payment=cancelled - Payment cancellation callback
  • Custom event system for balance refresh across components
  • Automatic parameter cleanup after processing

Key Components

WalletProviders

Wraps the entire app with necessary providers:

  • Wagmi for Ethereum wallets
  • Solana wallet adapters
  • Stripe Elements for payments
  • React Query for data fetching

Dashboard

Main authenticated interface with Features dropdown:

  • Buy Credits, Upload Files, Share Credits, Send Gift, Manage Domains

Standalone Pages

Dedicated pages accessible from navigation:

  • Redeem (gift code redemption)
  • Check Balance (lookup any wallet balance)
  • Pricing Calculator (storage cost estimates)

Payment Integration

  • Stripe Elements for card payments
  • Crypto payment address generation
  • Real-time USD to credits conversion

Testing Checklist

Critical User Flows

  • Wallet connection (Arweave, Ethereum, Solana)
  • Buy Credits: Fiat payment with test card
  • Buy Credits: Crypto top-up flow (when implemented)
  • Send Gift: Gift creation and sending
  • Redeem: Gift code redemption (standalone page)
  • Share Credits: Wallet-to-wallet transfers
  • Upload Files: Single and batch file uploads
  • Manage Domains: ArNS name search
  • Check Balance: Lookup any wallet balance (standalone page)
  • Navigation: URL parameter handling for deep linking
  • Balance updates after transactions

Browser Compatibility

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)

Responsive Design

  • Desktop (1920x1080, 1440x900)
  • Tablet (768x1024)
  • Mobile (375x667, 414x896)

Deployment

The application is ready for static hosting:

# Build production bundle
npm run build

# Test production build locally
npm run preview

# Deploy dist/ folder to:
# - Vercel
# - Netlify
# - AWS S3 + CloudFront
# - Any static hosting service

Production Requirements

  • Node.js 18+
  • SSL certificate required
  • CDN recommended for global distribution
  • Environment variables properly configured

Notes for Senior Team

Completeness

  • 98% Feature Complete: All major features implemented and functional
  • Consolidation Success: Three apps merged into one cohesive interface
  • Production Ready: Can be deployed immediately with minor polish

Recent Major Features

  1. React Router Migration: Full client-side routing with direct URL access
  2. Site Deployment: Complete site deployment with ArNS association
  3. Account Management: Comprehensive account page with activity tracking
  4. ArNS Integration: Owned names management with ANT state tracking
  5. Multi-step Payment Flows: Complete fiat and gift payment panels
  6. Crypto Payment Support: Solana and Ethereum payment integration
  7. Mobile Optimization: Responsive design with sticky header navigation
  8. Cache Management: Optimized caching for ArNS names and balances

🔄 Wallet Capability Matrix

Feature Arweave Ethereum Solana
Buy Credits (Fiat)
Buy Credits (Crypto)
Upload Files
Deploy Sites
Share Credits
ArNS Names
Update ArNS Records

⚠️ Current Limitations

  • Crypto Payments: Implemented but need improved UX and additional testing
  • Share Credits: Requires Wander wallet for transaction signing
  • ArNS Purchase: Search UI ready, purchase flow not connected
  • Upload Restrictions: Limited to Arweave wallets only
  • ArNS Updates: Requires Arweave wallet for ANT operations and signing

Security Notes

  • Stripe public keys are correctly exposed (frontend safe)
  • No sensitive data in localStorage
  • API calls use public endpoints only
  • CORS configuration needed on backend
  • Rate limiting should be implemented

Support


This consolidated application represents the next evolution of Turbo services, bringing together the best of turbo-landing-page, turbo-topup, and turbo-app into a unified, powerful interface for the AR.IO Network.

About

Unified web application consolidating ArDrive Turbo services - multi-chain wallet support (Arweave/Ethereum/Solana), Stripe payments, file uploads with progress tracking, ArNS domain management, and developer tools built with React + TypeScript + Vite.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages