- π Overview
- β¨ Features
- π― Demo
- ποΈ System Architecture
- π Application Flow
- π Getting Started
- π Project Structure
- π οΈ Technologies Used
- π§ Configuration
- π± Usage Guide
- π Security Features
- π€ Contributing
- π License
- π Contact
Web3-Wallet is a cutting-edge, React-based web application that empowers users to generate secure hierarchical deterministic (HD) wallets for multiple blockchain networks. Built with modern web technologies, it provides a seamless interface for managing Ethereum and Solana wallets from a single mnemonic seed phrase, along with an integrated DApp browser for Web3 interactions.
- Security First: Implement BIP39 standard for secure mnemonic generation
- Multi-Chain Support: Unified interface for Ethereum and Solana networks
- User Experience: Intuitive design with smooth animations and responsive layout
- Web3 Integration: Built-in DApp browser for seamless blockchain interactions
- π² Secure Mnemonic Generation: BIP39-compliant 12-word seed phrases
- π Hierarchical Deterministic Wallets: Generate unlimited addresses from single seed
- β‘ Multi-Chain Support: Ethereum (ETH) and Solana (SOL) networks
- π One-Click Copy: Easy copying of addresses and seed phrases
- π¨ Beautiful UI: Modern design with Framer Motion animations
- π₯οΈ Integrated DApp Browser: Browse and interact with decentralized applications
- π Cross-Chain Compatibility: Seamless switching between networks
- π Real-Time Analytics: Vercel Analytics integration for user insights
- π± Responsive Design: Optimized for desktop, tablet, and mobile devices
- π Dark Theme: Modern dark interface with gradient accents
- β‘ Smooth Animations: Framer Motion powered transitions
- π― Accessibility: Built with accessibility best practices
Live Demo: Visit Web3-Wallet
graph TB
A[User Interface] --> B[React Router]
B --> C[Home Page]
B --> D[DApp Browser]
C --> E[Mnemonic Generator]
C --> F[Wallet Components]
E --> G[BIP39 Library]
F --> H[Ethereum Wallet]
F --> I[Solana Wallet]
H --> J[Ethers.js]
I --> K[Solana Web3.js]
D --> L[iframe Integration]
G --> M[Secure Seed Generation]
J --> N[ETH Address Derivation]
K --> O[SOL Address Derivation]
flowchart TD
A[Start Application] --> B[Load Home Page]
B --> C[User Clicks Create Seed Phrase]
C --> D[Generate BIP39 Mnemonic]
D --> E[Display 12-Word Seed Phrase]
E --> F[User Can Add Wallets]
F --> G[Add Ethereum Wallet]
F --> H[Add Solana Wallet]
G --> I[Generate ETH Address using HDWallet]
H --> J[Generate SOL Address using Keypair]
I --> K[Display ETH Address]
J --> L[Display SOL Address]
K --> M[User Can Copy Address]
L --> M
flowchart TD
A[Navigate to DApp Browser] --> B[Enter DApp URL]
B --> C[Click Load DApp]
C --> D[Validate URL]
D --> E{URL Valid?}
E -->|Yes| F[Load DApp in iframe]
E -->|No| G[Show Error Message]
F --> H[DApp Interaction]
H --> I[Wallet Connection]
I --> J[Transaction Signing]
graph LR
A[User Input] --> B[BIP39 Validation]
B --> C[Secure Seed Generation]
C --> D[HD Wallet Derivation]
D --> E[ETH Path m/44'/60'/0'/0']
D --> F[SOL Path m/44'/501'/0'/0']
E --> G[Ethereum Address]
F --> H[Solana Address]
G --> I[Client-Side Storage]
H --> I
graph TD
A[App.jsx] --> B[React Router]
B --> C[Navbar Component]
B --> D[Home Page]
B --> E[DApp Browser Page]
D --> F[Mnemonic Container]
D --> G[ETH Wallet Component]
D --> H[Solana Wallet Component]
F --> I[Mnemonic Card Components]
G --> J[Copy Button Component]
H --> J
I --> K[Individual Word Display]
J --> L[Clipboard API]
Before you begin, ensure you have the following installed:
- Node.js (v16.0.0 or later) - Download
- npm (v8.0.0 or later) or yarn (v1.22.0 or later)
- Git - Download
- A modern web browser (Chrome, Firefox, Safari, Edge)
-
Clone the Repository
git clone https://github.com/VedantAnand17/Web3-Wallet.git cd Web3-Wallet
-
Install Dependencies
# Using npm npm install # Or using yarn yarn install
-
Start Development Server
# Using npm npm run dev # Or using yarn yarn dev
-
Open Application
Navigate to
http://localhost:5173
in your browser.
# Create production build
npm run build
# Preview production build
npm run preview
Web3-Wallet/
βββ π public/ # Static assets
β βββ πΌοΈ vite.svg # Vite logo
β βββ πΌοΈ web3-wallet.png # Application banner
βββ π src/ # Source code
β βββ π components/ # Reusable components
β β βββ π CopyButton.jsx # Copy functionality
β β βββ π ETHWallet.jsx # Ethereum wallet component
β β βββ π MnemonicCard.jsx # Individual mnemonic word card
β β βββ π MnemonicContainer.jsx # Mnemonic display container
β β βββ π Navbar.jsx # Navigation component
β β βββ π SolanaWallet.jsx # Solana wallet component
β βββ π pages/ # Page components
β β βββ π Home.jsx # Main wallet page
β β βββ π DAppBrowserPage.jsx # DApp browser page
β βββ π assets/ # Static assets
β β βββ πΌοΈ react.svg # React logo
β βββ π App.jsx # Main application component
β βββ π App.css # Application styles
β βββ π main.jsx # Application entry point
β βββ π index.css # Global styles
βββ π .github/ # GitHub workflows
β βββ π workflows/
β βββ π greetings.yml # Automated greetings
βββ π index.html # HTML template
βββ π package.json # Dependencies and scripts
βββ π vite.config.js # Vite configuration
βββ π tailwind.config.js # Tailwind CSS configuration
βββ π eslint.config.js # ESLint configuration
βββ π postcss.config.js # PostCSS configuration
βββ π README.md # Project documentation
βββ π LEARN.md # Learning guide
βββ π CODE_OF_CONDUCT.md # Code of conduct
βββ π .gitignore # Git ignore rules
- React 18.3.1 - Modern React with hooks and concurrent features
- Vite 5.4.1 - Lightning-fast build tool and development server
- React Router DOM 6.26.2 - Client-side routing
- Tailwind CSS 3.4.10 - Utility-first CSS framework
- Framer Motion 11.11.1 - Production-ready motion library
- Lucide React 0.446.0 - Beautiful & consistent icon toolkit
- Material-UI 5.16.7 - React components implementing Google's Material Design
- BIP39 3.1.0 - Bitcoin BIP39 mnemonic code for deterministic keys
- Ethers.js 6.13.2 - Complete Ethereum wallet implementation
- @solana/web3.js 1.95.2 - Solana's JavaScript SDK
- ed25519-hd-key 1.3.0 - Hierarchical deterministic keys for ed25519
- tweetnacl 1.0.3 - Cryptographic functions
- @vercel/analytics 1.3.1 - Privacy-friendly analytics
- ESLint 9.9.0 - Pluggable JavaScript linter
- Autoprefixer 10.4.20 - PostCSS plugin to parse CSS
- vite-plugin-node-polyfills 0.22.0 - Node.js polyfills for Vite
Create a .env
file in the root directory:
# Application Configuration
VITE_APP_NAME=Web3-Wallet
VITE_APP_VERSION=1.0.0
# Blockchain Network URLs (Optional)
VITE_ETHEREUM_RPC_URL=https://mainnet.infura.io/v3/YOUR_PROJECT_ID
VITE_SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
# Analytics (Optional)
VITE_VERCEL_ANALYTICS_ID=your_analytics_id
The project uses a custom Vite configuration with Node.js polyfills:
// vite.config.js
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { nodePolyfills } from 'vite-plugin-node-polyfills'
export default defineConfig({
plugins: [react(), nodePolyfills()],
})
- Access the Application: Open the Web3-Wallet in your browser
- Create Seed Phrase: Click the "Create Seed Phrase" button
- Secure Your Mnemonic: Copy and securely store your 12-word mnemonic
- Generate Addresses: Use "Add Ethereum Wallet" or "Add Solana Wallet" buttons
// Each wallet follows BIP44 derivation paths:
// Ethereum: m/44'/60'/account'/0/address_index
// Solana: m/44'/501'/account'/0'
- Navigate to DApp Browser: Click "DAppBrowser" in the navigation
- Enter DApp URL: Input the URL of your desired DApp
- Load DApp: Click "Load DApp" to interact with the application
- Click the copy button next to any generated address
- The address will be copied to your clipboard
- Visual feedback confirms successful copying
- Client-Side Generation: All keys generated locally in your browser
- No Server Storage: Mnemonics and private keys never leave your device
- BIP39 Standard: Industry-standard mnemonic generation
- Secure Randomness: Cryptographically secure random number generation
β οΈ IMPORTANT SECURITY NOTICE
- Never share your mnemonic phrase with anyone
- Store your mnemonic offline in a secure location
- This is a demo application - do not use for storing significant funds
- Always verify addresses before sending transactions
- Backup Strategy: Write down your mnemonic on paper and store in multiple secure locations
- Verification: Always verify generated addresses on multiple devices
- Network Security: Use HTTPS and avoid public WiFi for wallet operations
- Regular Updates: Keep the application and dependencies updated
- ESLint: JavaScript/React code linting with custom rules
- Prettier: Code formatting for consistent style
- Husky: Git hooks for pre-commit validation
# Run linting
npm run lint
# Fix linting issues
npm run lint:fix
# Check build
npm run build
# Production build
npm run build
# The build artifacts will be stored in the `dist/` directory
- Vercel: Recommended for React applications
- Netlify: Alternative static hosting
- GitHub Pages: Free hosting for open source projects
# Set production environment variables
VITE_APP_ENV=production
VITE_APP_URL=https://your-domain.com
We welcome contributions from the community! Here's how you can help:
- π Bug Reports: Report issues you encounter
- π‘ Feature Requests: Suggest new features or improvements
- π Documentation: Improve documentation and guides
- π§ Code Contributions: Submit bug fixes or new features
- π¨ Design: Contribute to UI/UX improvements
-
Fork the Repository
git clone https://github.com/your-username/Web3-Wallet.git
-
Create a Feature Branch
git checkout -b feature/amazing-feature
-
Make Your Changes
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
-
Commit Your Changes
git commit -m 'Add some amazing feature'
-
Push to Your Branch
git push origin feature/amazing-feature
-
Open a Pull Request
- Provide a clear description of your changes
- Link any related issues
- Ensure all tests pass
- ESLint: Follow the configured ESLint rules
- Prettier: Use Prettier for code formatting
- Commits: Use conventional commit messages
- Testing: Add tests for new functionality
-
Node.js Version Issues
# Check Node.js version node --version # Update to latest LTS nvm install --lts nvm use --lts
-
Dependency Installation Problems
# Clear npm cache npm cache clean --force # Delete node_modules and reinstall rm -rf node_modules package-lock.json npm install
-
Build Errors
# Check for ESLint errors npm run lint # Fix auto-fixable issues npm run lint:fix
- Tree Shaking: Unused code elimination
- Code Splitting: Lazy loading for better performance
- Asset Optimization: Compressed images and fonts
- First Contentful Paint: < 1.5s
- Largest Contentful Paint: < 2.5s
- Cumulative Layout Shift: < 0.1
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2024 Vedant Anand
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
- React Team for the amazing React framework
- Vite Team for the blazing-fast build tool
- Ethereum Foundation for Ethereum ecosystem tools
- Solana Labs for Solana development tools
- Open Source Community for the incredible libraries used
- Mobile App: React Native implementation
- Hardware Wallet: Integration with Ledger/Trezor
- Multi-Language: Internationalization support
- Advanced Analytics: Portfolio tracking and analytics
- NFT Support: NFT viewing and management
- DeFi Integration: Built-in DeFi protocol interactions
- Multi-Signature: Multi-sig wallet support
- Transaction History: Detailed transaction tracking
- Price Tracking: Real-time cryptocurrency prices
- Staking: Built-in staking functionality
Made with β€οΈ by Vedant Anand
β Star this repository if you found it helpful!