A learning-focused Aptos testnet wallet built with React + TypeScript. Create accounts, fund them from the faucet, send APT, and explore transaction history — all against the real Aptos blockchain, with no real money at risk.
⚠️ Educational project. Private keys are generated and managed in the browser for learning purposes. Do not use this wallet with mainnet funds.
| Onboarding | Dashboard |
|---|---|
![]() |
![]() |
| Send APT | Transaction History |
|---|---|
![]() |
![]() |
| Account Switcher |
|---|
![]() |
- Create accounts — generate Ed25519 keypairs locally and onboard in seconds
- Dashboard — view your address and live APT balance
- Faucet funding — fund accounts with free testnet APT
- Send APT — build, sign, and submit transfer transactions
- Transaction history — browse past transactions for the active account
- Account switcher — manage and switch between multiple accounts
| Layer | Technology |
|---|---|
| Blockchain | Aptos (Testnet) via @aptos-labs/ts-sdk |
| Wallet integration | @aptos-labs/wallet-adapter-react |
| UI | React 18 + TypeScript |
| Build tool | Vite |
| Styling | Tailwind CSS |
- Node.js 18+
- npm
npm install
npm run devOpen the printed local URL (typically http://localhost:5173), create an account, fund it from the faucet, and start sending testnet APT.
npm run build
npm run previewsrc/
├── App.tsx # Root component with tab navigation
├── main.tsx # React entry point
├── components/
│ ├── Header.tsx # App header
│ ├── CreateAccount.tsx # Onboarding / account creation
│ ├── Dashboard.tsx # Balance and account overview
│ ├── SendTransaction.tsx # Send APT form
│ ├── TransactionHistory.tsx # Past transactions list
│ └── AccountSwitcher.tsx # Multi-account management
├── contexts/
│ └── WalletContext.tsx # Global wallet state
├── types/
│ └── wallet.ts # Shared TypeScript types
└── utils/
└── aptos.ts # Aptos SDK helpers (client, accounts, transactions)
The app connects to the Aptos testnet through the official TypeScript SDK. Accounts are random Ed25519 keypairs generated in the browser; the account address is derived from the public key. Transactions are signed locally with the private key and submitted to the network, then confirmed via waitForTransaction.
The source code is heavily commented with LEARNING NOTE blocks explaining blockchain concepts (keypairs, networks, signing, gas) — read through src/utils/aptos.ts first if you're new to Aptos.
MIT




