|
| 1 | +# CLAUDE.md — nostrkey.browser.plugin.src |
| 2 | + |
| 3 | +## What This Is |
| 4 | +NostrKey browser extension — cross-browser Nostr key management, encrypted vault, and identity layer. The core codebase that also powers the iOS and Android apps. |
| 5 | + |
| 6 | +## Ecosystem Position |
| 7 | +NostrKey is **the hand that holds the baseball card**. It manages your private keys, signs events, encrypts data, and connects you to your NostrKeep relay and npub.bio identity. Free, open source (MIT), forked from ursuscamp/nostore. |
| 8 | + |
| 9 | +## Current Version |
| 10 | +v1.5.5 — Live on Chrome Web Store, Android (Google Play), iOS (App Store submission in progress) |
| 11 | + |
| 12 | +## Tech Stack |
| 13 | +- Vanilla JS (Alpine.js was removed) |
| 14 | +- esbuild bundler |
| 15 | +- Tailwind CSS |
| 16 | +- nostr-crypto-utils for protocol operations |
| 17 | +- Chrome Manifest V3 |
| 18 | + |
| 19 | +## Build Commands |
| 20 | +```bash |
| 21 | +npm install |
| 22 | +npm run build # Safari: Tailwind + esbuild |
| 23 | +npm run build:chrome # Chrome → distros/chrome/ |
| 24 | +npm run build:all # Both targets |
| 25 | +npm run build:all:prod # Both, minified |
| 26 | +npm run watch # Watch mode (JS, Safari) |
| 27 | +npm run watch-tailwind # Watch mode (CSS) |
| 28 | +``` |
| 29 | + |
| 30 | +## Chrome Dev |
| 31 | +1. `npm run build:chrome` |
| 32 | +2. `chrome://extensions/` → Developer mode → Load unpacked → `distros/chrome/` |
| 33 | + |
| 34 | +## NIPs Implemented |
| 35 | +NIP-01, NIP-04 (deprecated), NIP-07, NIP-19, NIP-44, NIP-46, NIP-49, NIP-78 |
| 36 | + |
| 37 | +## Key Features |
| 38 | +- NIP-07 `window.nostr` signing |
| 39 | +- NIP-46 nsecBunker (remote signing) |
| 40 | +- NIP-44 encryption (ChaCha20-Poly1305) |
| 41 | +- Encrypted .md vault + API key vault (NIP-78) |
| 42 | +- Multi-profile with per-site permissions |
| 43 | +- Master password with auto-lock |
| 44 | +- Cross-device sync via storage.sync |
| 45 | +- WCAG AA accessibility |
| 46 | + |
| 47 | +## Architecture |
| 48 | +Extension uses background service worker + sidepanel UI. Mobile apps (iOS/Android) wrap this in dual-WebView architecture with native bridges (IOSBridge.swift / AndroidBridge.kt). |
| 49 | + |
| 50 | +## Conventions |
| 51 | +- Vanilla JS, no frameworks |
| 52 | +- kebab-case file names |
| 53 | +- Chrome Web Store zips go in `distros/` folder |
| 54 | +- WCAG AA contrast, aria-labels, reduced-motion support |
| 55 | + |
| 56 | +## Related Repos |
| 57 | +- `nostrkey.app.ios.src` — iOS app (WKWebView wrapper, v1.1.1) |
| 58 | +- `nostrkey.app.android.src` — Android app (WebView wrapper, v1.1.1) |
| 59 | +- `nostrkey.bizdocs.src` — business strategy docs |
| 60 | +- `npub-bio-landingpage` — npub.bio (uses NostrKey for NIP-07 connect) |
| 61 | +- `nostrkeep.srvr.relay.src` — NostrKeep relay (NostrKey points keys here) |
0 commit comments