No description
  • JavaScript 60.4%
  • CSS 21.1%
  • HTML 18.5%
Find a file
Kalvin Carefour Johnny a5848996cd
Merge pull request #5 from kalvin0x8d0/claude/code-review-improvements-ezP9q
Improve error handling, security, and Docker configuration
2026-03-28 16:35:19 +08:00
www Review and fix security, reliability, and code quality issues 2026-03-28 06:28:45 +00:00
.env.example Review and fix security, reliability, and code quality issues 2026-03-28 06:28:45 +00:00
.gitignore Review and fix security, reliability, and code quality issues 2026-03-28 06:28:45 +00:00
capacitor.config.json First commit 2026-03-22 15:03:48 +08:00
docker-compose.yaml Review and fix security, reliability, and code quality issues 2026-03-28 06:28:45 +00:00
LICENSE Create LICENSE 2026-03-28 00:00:55 +08:00
package.json Remove EVM support - Algorand-only wallet 2026-03-26 09:30:49 +00:00
README.md Update README.md 2026-03-28 00:13:42 +08:00

Unhosted Wallet

Self-custodial Algorand wallet. No backend, no account registration, no tracking. Keys live in memory only — they vanish when you close the app.

CC0 1.0 Universal (CC0 1.0) Public Domain Dedication

AI Generated Badge

What This Does

  • Generate or import Algorand wallets
  • Check balances, send transactions
  • All cryptographic operations happen client-side
  • Private keys are never written to disk or sent anywhere
  • Configurable Algorand node endpoints (defaults to testnet)

Quick Start (Web)

npm install
npm run dev

Opens at http://localhost:3000. That's it — you have a working wallet.

Build APK (Android)

Prerequisites

  • Node.js 18+
  • Android Studio (with SDK 34+)
  • Java JDK 17+

Steps

# 1. Install dependencies
npm install

# 2. Initialise Capacitor (only first time)
npm run cap:init

# 3. Add Android platform (only first time)
npm run cap:add

# 4. Sync web assets to Android project
npm run cap:sync

# 5. Open in Android Studio
npm run cap:open

In Android Studio: Build → Build Bundle(s) / APK(s) → Build APK.

Your APK will be at android/app/build/outputs/apk/debug/app-debug.apk.

Subsequent builds

After editing www/index.html, just run:

npm run cap:sync
npm run cap:open

Project Structure

unhosted-wallet/
├── capacitor.config.json   # Capacitor settings
├── package.json            # Dependencies + scripts
├── README.md
└── www/
    └── index.html          # The entire wallet app

Security Notes

  • Keys exist only in JavaScript memory during the session
  • Closing the app or tab destroys all key material
  • The seed phrase is shown once at generation — back it up on paper
  • No localStorage, no cookies, no IndexedDB for keys
  • For Android: future improvement is to use Android Keystore via Capacitor plugin

Defaults

Setting Default
Algorand Node https://testnet-api.algonode.cloud
Algorand Network Testnet

Switch to mainnet node when you're ready to handle real funds.

Extending

Configure a different Algorand node

Change the node URL in settings. Works with any Algorand testnet or mainnet node.

Add Algorand ASA support

Use algosdk asset transfer transactions. The account info response already includes opted-in assets.