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.
- 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
- 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
- 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
- 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
- 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
| 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 |
- Node.js 18+ and npm
- Modern web browser with localStorage support
-
Clone the repository
git clone https://github.com/ankur-JA/Ethos-Wallet.git cd ethos-wallet -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open in browser
http://localhost:3001
# Build the application
npm run build
# Start production server
npm start- Click "Create Wallet" on the home page
- Set a strong password for local encryption
- Securely write down your 12-word seed phrase
- Confirm your seed phrase
- Access your new wallet dashboard
- Click "Import Wallet" on the home page
- Set a password for this device
- Enter your existing 12-word seed phrase
- Wallet validates and imports your accounts
- 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)
- Navigate to dashboard
- Click "Send" in the balance card
- Enter recipient address and amount
- Review transaction details and confirm
- Transaction broadcasts to Ethereum network
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
- 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
- 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
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 statusCurrently supports Ethereum Mainnet with plans for:
- Polygon
- Arbitrum
- Optimism
- Base
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Use Tailwind for styling
- Ensure responsive design
- Add proper error handling
- Test on multiple browsers
This project is licensed under the MIT License - see the LICENSE file for details.
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
- Live Demo: https://ethos-wallet.vercel.app
- GitHub: https://github.com/ankur-JA/Ethos-Wallet
- Issues: Report bugs or request features
Gearhead - GitHub Profile
Built with β€οΈ using modern web technologies for the Ethereum ecosystem.
Ethos Wallet - Your keys, your crypto, your control.