Testnet Web3 wallet learning project — create, import, and explore wallet flows across Polygon Amoy, Ethereum Sepolia, and Base Sepolia.
Learning project · Testnet networks only · Never use real funds or production seed phrases.
Browser ──JSON-RPC──► /api/rpc (proxy) ──► Infura RPC (Amoy/Sepolia/Base)
│
├──REST──► Etherscan V2 API (activity history)
│
└──WebSocket──► Binance (live prices)
git clone https://github.com/AbbasFullstack/vaultx.git
cd vaultx/frontend
npm install
cp .env.example .env.local
# Add INFURA_PROJECT_ID and ETHERSCAN_API_KEY to .env.local
npm run dev🔑 Provider keys ko sirf
.env.localaur Vercel Environment Variables mein rakhein. API keys, private keys, seed phrases aur.env.localko GitHub par kabhi commit na karein.
VaultX ke server-side API proxy contract ko OpenAPI 3.0 specification mein document kiya gaya hai:
- Specification:
docs/openapi/vaultx-openapi.yaml - Covered endpoints:
POST /api/rpcaurGET /api/activity - Generated client:
frontend/lib/generated/vaultx-api-client.ts - OpenAPI Forge workflow: spec ko OpenAPI Forge mein upload karein, validate karein, API documentation aur mock responses review karein, phir TypeScript client SDK generate karein.
VaultX dashboard ke RPC aur server-side activity fallback calls generated client methods (proxyJsonRpcRequest aur getWalletActivity) use karte hain. Jab specification change ho, client file ko OpenAPI Forge se regenerate karke update karein.
Provider credentials specification mein intentionally included nahi hain. Document sirf request/response contract aur safe example values describe karta hai.
vaultx/
├── docs/
│ └── openapi/
│ └── vaultx-openapi.yaml # API contract for OpenAPI Forge
└── frontend/
├── app/
│ ├── api/
│ │ ├── rpc/route.ts # RPC proxy (3 testnet networks)
│ │ └── activity/route.ts # Activity-history fallback
│ ├── create/page.tsx # Wallet creation + mnemonic
│ ├── import/page.tsx # Import phrase/key
│ ├── dashboard/page.tsx # Testnet balances + send + activity
│ └── page.tsx # Landing + unlock / account switch
├── lib/
│ ├── generated/
│ │ └── vaultx-api-client.ts # Generated OpenAPI client
│ └── wallet.ts # Local keystore helpers
└── .env.example # Required provider variable names only
Yeh ek learning project hai. Keys browser mein password-encrypted save hoti hain (industry standard keystore format). Phir bhi: asli funds kabhi test wallets mein na rakhein!
If provider credentials were ever committed or shared, revoke/rotate them in the relevant provider dashboards, replace them in Vercel Environment Variables, and redeploy before treating the project as publicly safe.
Full-Stack & Web3 Developer
🎯 Self-taught full-stack developer building public learning projects across Web3, APIs, and developer tooling. ⛓️ Next.js • TypeScript • ethers.js • Supabase • WebSocket APIs