The open-source, non-custodial browser wallet built natively for the JEE blockchain — one install, every major browser.
🌐 Website · 🔍 Explorer · 📦 Releases · 🐛 Issues · 🔐 Security
██╗███████╗███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗████████╗
██║██╔════╝██╔════╝ ██║ ██║██╔══██╗██║ ██║ ██╔════╝╚══██╔══╝
██║█████╗ █████╗ ██║ █╗ ██║███████║██║ ██║ █████╗ ██║
██ ██║██╔══╝ ██╔══╝ ██║███╗██║██╔══██║██║ ██║ ██╔══╝ ██║
╚█████╔╝███████╗███████╗ ╚███╔███╔╝██║ ██║███████╗███████╗███████╗ ██║
╚════╝ ╚══════╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝ ╚═╝
| 🔥 | Zero-fee L1 — send JEE without gas headaches |
| 🔐 | Non-custodial — keys never leave your device |
| 🌍 | Cross-browser — Chrome · Brave · Edge · Firefox |
| 🧩 | dApp native — connect, sign, send from any JEE site |
| 📦 | One build — npm run bundle → load everywhere |
- Overview
- Screenshots
- Features
- Supported Browsers
- Chain Info
- How It Works
- Build from Source
- Install the Extension
- Tech Stack
- Project Structure
- Development
- SDK for dApp Developers
- Security Model
- FAQ
- Roadmap
- Contributing
- Author
- License
JEE Wallet is a production-grade browser extension wallet for the JEE zero-fee Layer-1 network. It ships as a single cross-browser build — no separate Chrome vs Firefox forks.
Built for real users and real dApps:
- Create HD wallets from a 12 / 24-word seed
- Import legacy private keys
- Manage multiple accounts across wallets
- Connect to JEE dApps with explicit approval
- Sign messages and send transactions from a clean React UI
- Auto-lock after idle — session keys wiped on lock
Privacy first: JEE Wallet collects zero telemetry. See PRIVACY_POLICY.md.
Screenshots and a product demo will be added in a future release. For now, see Releases to download and try the latest build.
|
|
🔍 Full feature list
| Feature | Details | |
|---|---|---|
| 🔐 | Non-custodial | Private keys never leave your device |
| 🔒 | AES-256-GCM | Sensitive data encrypted with password-derived keys |
| 🌱 | HD Wallets | 12 or 24-word BIP39 mnemonics |
| 🔑 | Legacy import | Raw private key support |
| 🌐 | dApp bridge | Isolated + MAIN-world content scripts |
| ✍️ | Sign messages | Off-chain ownership proofs |
| 💸 | Send & stake | Full transaction flows with confirmation |
| ⏱️ | Auto-lock | Idle timeout → keys cleared from session |
| 📦 | Multi-account | Unlimited wallets & accounts locally |
| 🦊 | Cross-browser | Single manifest, single build |
| Browser | Min version | Toolbar | Side panel | Load method |
|---|---|---|---|---|
| Google Chrome | 114+ | Popup | — | Load unpacked → dist/ |
| Brave | Latest | Popup | — | Load unpacked → dist/ |
| Microsoft Edge | Latest | Popup | — | Load unpacked → dist/ |
| Mozilla Firefox | 128+ | Popup | Sidebar | Temporary add-on → dist/manifest.json |
One command builds for all:
npm run bundle→ output inapps/extension/dist
| Property | Value |
|---|---|
| Network | JEE Mainnet |
| Chain ID | JEE |
| Bech32 prefix | jee |
| Native token | JEE |
| On-chain denom | jeff |
| Decimals | 6 |
| Tx fees | Zero |
| Block explorer | jeescan.org |
| Official site | jee.money |
flowchart LR
subgraph EXT["🧩 Extension"]
UI["Popup / Sidebar<br/><i>React UI</i>"]
BG["Background<br/><i>Crypto + RPC</i>"]
CS["Content Script<br/><i>Isolated</i>"]
BR["Bridge<br/><i>MAIN world</i>"]
end
subgraph WEB["🌍 Website"]
DAPP["JEE dApp"]
end
subgraph CHAIN["⛓️ JEE Network"]
RPC["RPC / LCD"]
end
DAPP <-->|window.postMessage| BR
BR <-->|postMessage| CS
CS <-->|Messager| BG
UI <-->|Messager| BG
BG <-->|HTTPS| RPC
style UI fill:#0f172a,stroke:#00d4aa,color:#e2e8f0
style BG fill:#0f172a,stroke:#00d4aa,color:#e2e8f0
style CHAIN fill:#1e1b4b,stroke:#818cf8,color:#e2e8f0
sequenceDiagram
participant D as dApp (web page)
participant B as Content Bridge
participant C as Content Script
participant K as Background
participant U as Wallet UI
D->>B: pocket-network request
B->>C: postMessage (same origin)
C->>K: Messager API
K->>U: Open approval popup
U->>K: User confirms
K->>C: Signed result / txid
C->>B: Response
B->>D: postMessage response
flowchart TB
subgraph TRUSTED["✅ Trusted — Extension only"]
BG2["Background script"]
UI2["Extension pages"]
end
subgraph UNTRUSTED["⚠️ Untrusted — Web pages"]
PAGE["Any website / dApp"]
end
PAGE -->|"postMessage only"| BR2["Bridge"]
BR2 --> CS2["Content script"] --> BG2
UI2 --> BG2
style TRUSTED fill:#052e16,stroke:#22c55e,color:#ecfdf5
style UNTRUSTED fill:#450a0a,stroke:#ef4444,color:#fef2f2
| Requirement | Version |
|---|---|
| Node.js | 24.18.0 LTS (nvm recommended) |
| npm | 11.x or higher |
| OS | Linux, macOS, or Windows (WSL recommended) |
nvm install 24.18.0
nvm usegit clone https://github.com/SujayPro/Jee-wallet.git
cd Jee-wallet
npm ci
cp apps/extension/.env.example apps/extension/.env
npm run bundle| Artifact | Path | Purpose |
|---|---|---|
| Unpacked extension | apps/extension/dist/ |
Load unpacked in Chrome, Brave, Edge, or Firefox |
| Store package | apps/extension/dist.zip |
Firefox Add-ons (AMO) upload |
The bundle script produces a standard ZIP archive with manifest.json at the archive root. Background scripts are split into webpack chunks (bg-vendors-*.js, background.js) to stay under AMO's 5 MB per-file limit. No remote code is loaded at runtime.
For Mozilla AMO automated builds, use:
npm run build-for-amochrome://extensions → Developer mode ON → Load unpacked → select dist/
- Open
chrome://extensions(orbrave://extensions,edge://extensions) - Toggle Developer mode (top right)
- Load unpacked → pick
apps/extension/dist - Pin JEE WALLET to your toolbar
- After rebuilds → hit Refresh on the extension card
about:debugging → Load Temporary Add-on → dist/manifest.json
- Build the extension (
npm run bundle) or download a release - Open
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on…
- Select
apps/extension/dist/manifest.json
Temporary add-ons are cleared when Firefox restarts. Re-load from the same path after restart.
| Solution | |
|---|---|
| White blank popup | Load extension/dist/, not extension/ |
| Invalid zip on AMO | Use dist.zip from npm run bundle — do not zip manually |
| dApp won't connect (Firefox) | Requires Firefox 128+ |
Firefox sidebar: View → Sidebar → JEE WALLET
Firefox Add-ons (AMO) — developer notes
After npm run build-for-amo, upload apps/extension/dist.zip to the Firefox Developer Hub.
| Item | Value |
|---|---|
| Upload file | apps/extension/dist.zip |
| Source code | This repository + build command above |
| Privacy policy | PRIVACY_POLICY.md |
| Data collection | None (data_collection_permissions.required: ["none"] in manifest) |
Do not manually zip the dist/ folder — the bundle script creates the correct archive structure.
| Layer | Tech |
|---|---|
| UI | React 18, Redux Toolkit, React Router, Bootstrap 5, Sass |
| Extension | Manifest V3, cross-browser ext API shim |
| Crypto | AES-256-GCM, Argon2, BIP39 HD derivation |
| Build | Turborepo, webpack 5, Create React App (extension-ui) |
| Chain | JEE RPC / LCD, Cosmos-style addressing |
Jee-wallet/
├── apps/
│ ├── extension/ # MV3 entry — background, content, bridge
│ ├── extension-ui/ # React popup & sidebar UI
│ └── sdk-demo/ # SDK playground
├── packages/
│ ├── background/ # Wallet logic, RPC, encryption
│ ├── content/ # dApp message relay (isolated world)
│ ├── content-bridge/ # Page-context injector (MAIN world)
│ ├── sdk/ # Core dApp SDK
│ ├── react-sdk/ # React hooks for dApps
│ ├── wallet-utils/ # Key derivation & chain utils
│ ├── util-browser/ # Cross-browser messaging & routes
│ └── … # types, constants, ui, util
└── apps/extension/dist/ # 👈 Load this in your browser
npm run dev # Watch all packages
npm run build # Build packages
npm run build-ui # Build React UI only
npm run bundle # Full extension build + dist.zip
npm run build-for-amo # Same as bundle — AMO-compatible output
npm run test # Run test suite
npm run format # Prettier format🧪 Run specific tests
npm run test:wallet-utils
npm run test:background
npm run test:utilIntegrate JEE Wallet into your dApp:
| Package | Use case |
|---|---|
packages/sdk |
Vanilla JS / any framework |
packages/react-sdk |
React hooks (useJeeWallet, etc.) |
apps/sdk-demo |
Live integration example |
cd apps/sdk-demo && npm start # Demo at localhost:3000All sensitive operations execute only in the background script.
The UI and content scripts never touch raw private keys.
| Rule | Implementation |
|---|---|
| Keys stay local | Never sent over postMessage or network |
| Encrypted at rest | AES-256-GCM + password-derived keys |
| Session isolation | Auto-lock wipes in-memory secrets |
| dApp permissions | Explicit per-origin user approval |
| Connect / disconnect | Only extension UI can authorize origins |
| Message validation | UUID replay protection on dApp bridge |
Responsible disclosure: hello@jee.money — please report privately before public disclosure.
Is JEE Wallet custodial?
No. Your seed phrase and private keys are generated and stored only on your device, encrypted with your password. We never see them.
Which browsers are supported?
Chrome 114+, Brave, Edge, and Firefox 128+. One npm run bundle produces a build for all of them.
Why is my Firefox popup white/blank?
You loaded the wrong folder. Select apps/extension/dist/manifest.json, not the parent extension/ directory.
Does it work with MetaMask?
JEE Wallet is purpose-built for the JEE chain via the Pocket Network provider bridge — not EVM / MetaMask.
Where are my keys stored?
Encrypted in extension local storage. Session keys (unlocked state) live in extension session storage and are cleared on lock.
- Cross-browser support (Chrome, Brave, Edge, Firefox)
- HD & legacy wallet import
- dApp connect / sign / send
- Firefox sidebar panel
- AMO-ready build pipeline (
dist.zip, manifest compliance) - Chrome Web Store listing
- Firefox Add-ons (AMO) public listing approved
- Hardware wallet support
- Mobile companion app
- Multi-language UI
Contributions welcome! To get started:
- Fork the repo
- Create a feature branch (
git checkout -b feature/amazing-thing) - Commit your changes (
git commit -m 'Add amazing thing') - Push to the branch (
git push origin feature/amazing-thing) - Open a Pull Request
Please keep PRs focused and run npm run test before submitting.
JEE Wallet is open source — use, modify, and distribute under Apache 2.0 terms.