Skip to content

Ethereum HD Wallet built with React and Next.js using mnemonic-based key generation.

Notifications You must be signed in to change notification settings

ankur-JA/Ethos-Wallet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🦊 Ethos Wallet

A secure, non-custodial Ethereum wallet built with Next.js, TypeScript, and TailwindCSS. Features mnemonic-based key generation, multi-account support, real-time token balances, and a beautiful modern UI.

License Next.js TypeScript Ethereum


✨ Features

πŸ” Wallet Management

  • Create New Wallet: Generate secure 12-word mnemonic phrases
  • Import Existing Wallet: Restore wallets using seed phrases
  • Multi-Account Support: HD wallet with multiple derived accounts
  • Password Protection: Local encryption with AES encryption
  • Auto-Lock: Automatic wallet locking on browser refresh

πŸ’° Portfolio & Assets

  • Real-Time Balances: Live ETH and ERC-20 token balances
  • Price Integration: Current prices and 24h changes via CoinGecko API
  • Portfolio Value: Total USD portfolio calculation
  • Token Icons: Visual token identification with logos
  • Multiple RPC Support: Resilient blockchain connectivity

πŸ”„ Transactions

  • Send ETH: Native Ethereum transfers with gas estimation
  • Send Tokens: ERC-20 token transfers
  • Receive: QR code generation for easy receiving
  • Transaction History: Recent activity with Etherscan links
  • Address Validation: Prevents invalid transactions

πŸ”’ Security Features

  • Client-Side Only: No servers, fully browser-based
  • Encrypted Storage: AES-encrypted seed phrases in localStorage
  • Password Hashing: SHA256 password verification
  • Lock/Unlock: Manual and automatic wallet locking
  • Private Key Access: Secure viewing with password confirmation
  • Reset Wallet: Complete data removal with confirmation

🎨 User Experience

  • Modern UI: Glass morphism and gradient design
  • Responsive Design: Mobile and desktop optimized
  • Dark Theme: Beautiful dark color scheme
  • Smooth Animations: Framer Motion transitions
  • Intuitive Navigation: Clean and organized interface

πŸ›  Tech Stack

Category Technology
Framework Next.js 15.3.5
Language TypeScript
Styling TailwindCSS
Blockchain Ethers.js v6
Crypto BIP39, crypto-js
UI Components Lucide React
QR Codes react-qr-code
Animations Framer Motion
APIs CoinGecko, Multiple Ethereum RPCs

πŸš€ Getting Started

Prerequisites

  • Node.js 18+ and npm
  • Modern web browser with localStorage support

Installation

  1. Clone the repository

    git clone https://github.com/ankur-JA/Ethos-Wallet.git
    cd ethos-wallet
  2. Install dependencies

    npm install
  3. Start development server

    npm run dev
  4. Open in browser

    http://localhost:3001
    

Build for Production

# Build the application
npm run build

# Start production server
npm start

πŸ“± How to Use

Creating a New Wallet

  1. Click "Create Wallet" on the home page
  2. Set a strong password for local encryption
  3. Securely write down your 12-word seed phrase
  4. Confirm your seed phrase
  5. Access your new wallet dashboard

Importing an Existing Wallet

  1. Click "Import Wallet" on the home page
  2. Set a password for this device
  3. Enter your existing 12-word seed phrase
  4. Wallet validates and imports your accounts

Managing Your Wallet

  • Lock Wallet: Account menu β†’ "Lock Wallet"
  • View Private Keys: Account menu β†’ "Show Private Keys" (requires password)
  • Switch Accounts: Use account switcher in balance card
  • Reset Wallet: Account menu β†’ "Reset Wallet" (⚠️ permanent action)

Sending Transactions

  1. Navigate to dashboard
  2. Click "Send" in the balance card
  3. Enter recipient address and amount
  4. Review transaction details and confirm
  5. Transaction broadcasts to Ethereum network

πŸ— Project Structure

ethos-wallet/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/          # React components
β”‚   β”‚   β”œβ”€β”€ NavBar.tsx       # Navigation with account management
β”‚   β”‚   β”œβ”€β”€ HomeCard.tsx     # Landing page content
β”‚   β”‚   β”œβ”€β”€ BalanceCard.tsx  # Portfolio display
β”‚   β”‚   β”œβ”€β”€ AssetsCard.tsx   # Token list with prices
β”‚   β”‚   β”œβ”€β”€ TransactionCard.tsx # Send/receive interface
β”‚   β”‚   β”œβ”€β”€ CreatePassword.tsx # Password creation
β”‚   β”‚   β”œβ”€β”€ MnemonicCard.tsx # Seed phrase display
β”‚   β”‚   β”œβ”€β”€ InputMnemonicCard.tsx # Seed phrase input
β”‚   β”‚   └── Footer.tsx       # App footer
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ index.tsx        # Home page
β”‚   β”‚   β”œβ”€β”€ about/           # About page
β”‚   β”‚   β”œβ”€β”€ create-wallet/   # Wallet creation flow
β”‚   β”‚   β”œβ”€β”€ import-wallet/   # Wallet import flow
β”‚   β”‚   β”œβ”€β”€ dashboard/       # Main wallet interface
β”‚   β”‚   └── _app.tsx         # App wrapper with auth logic
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”œβ”€β”€ wallet.ts        # Wallet operations
β”‚   β”‚   └── hash.ts          # Cryptographic functions
β”‚   └── styles/
β”‚       └── globals.css      # Global styles
β”œβ”€β”€ public/                  # Static assets
β”œβ”€β”€ next.config.ts           # Next.js configuration
└── package.json            # Dependencies and scripts

πŸ” Security

Local Storage

  • Seed phrases are AES-encrypted before localStorage
  • Passwords are SHA256-hashed for verification
  • Private keys never leave your browser
  • No data transmitted to external servers

Best Practices

  • Always backup your seed phrase securely
  • Use strong passwords for wallet encryption
  • Keep your browser updated
  • Don't share private keys or seed phrases
  • Verify recipient addresses before sending

Data Storage

localStorage:
- wallet_mnemonic_enc: AES-encrypted seed phrase
- wallet_password_hash: SHA256 password hash
- wallet_account_index: Current account index

sessionStorage:
- wallet_unlocked: Session unlock status

🌐 Supported Networks

Currently supports Ethereum Mainnet with plans for:

  • Polygon
  • Arbitrum
  • Optimism
  • Base

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use Tailwind for styling
  • Ensure responsive design
  • Add proper error handling
  • Test on multiple browsers

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


⚠️ Disclaimer

This wallet is for educational and development purposes. While security best practices are implemented:

  • Use at your own risk
  • Always backup seed phrases
  • Test with small amounts first
  • Not audited by security professionals
  • No warranty provided

πŸ”— Links


πŸ‘¨β€πŸ’» Created By

Gearhead - GitHub Profile

Built with ❀️ using modern web technologies for the Ethereum ecosystem.


Ethos Wallet - Your keys, your crypto, your control.

About

Ethereum HD Wallet built with React and Next.js using mnemonic-based key generation.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages