Skip to content

Commit d952906

Browse files
vveerrggclaude
andcommitted
docs: Add Apple App Store submission guide
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent a02f8c8 commit d952906

2 files changed

Lines changed: 205 additions & 0 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ See [docs/PROJECT-VISION.md](docs/PROJECT-VISION.md) for the full roadmap.
9696
### Chrome Web Store
9797
Coming soon — submission in progress.
9898

99+
### Apple App Store (Safari)
100+
Coming soon — submission in progress.
101+
99102
## Development
100103

101104
### Prerequisites

docs/APPLE-APP-STORE-SUBMISSION.md

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
# Apple App Store Submission Guide
2+
3+
This document contains all the information needed to submit NostrKey to the Apple App Store (Safari extension for macOS and iOS).
4+
5+
## Prerequisites
6+
7+
- [ ] Apple Developer account ($99/year)
8+
- [ ] Xcode with valid signing certificate
9+
- [ ] App Store Connect access
10+
- [ ] Screenshots for macOS and iOS
11+
- [ ] App icon (1024x1024px)
12+
- [ ] Privacy Policy URL
13+
- [ ] Built Safari extension via Xcode
14+
15+
## App Store Listing
16+
17+
### App Name (30 chars max)
18+
**NostrKey**
19+
20+
### Subtitle (30 chars max)
21+
**Nostr Key Manager & Signer**
22+
23+
### Promotional Text (170 chars, can update without new build)
24+
```
25+
Securely manage your Nostr keys and sign events without exposing private keys to websites. Encrypted vault, nsecBunker support, and auto-lock protection.
26+
```
27+
28+
### Keywords (100 chars, comma-separated)
29+
```
30+
nostr,nip-07,signing,encryption,nsec,npub,keys,vault,nsecbunker,privacy,crypto
31+
```
32+
33+
### Description (4000 chars max)
34+
```
35+
NostrKey is a Safari extension for macOS and iOS that manages your Nostr identities and signs events on your behalf — your private keys never touch the websites you visit.
36+
37+
Features:
38+
• NIP-07 signing — works with any Nostr web app
39+
• NIP-46 nsecBunker — remote signing, your key never leaves the bunker
40+
• NIP-44 encryption — modern ChaCha20-Poly1305 messaging
41+
• Encrypted document vault — zero-knowledge storage on Nostr relays
42+
• API key vault — encrypted secret storage
43+
• Master password — keys encrypted at rest with auto-lock
44+
• Multi-profile support — manage multiple Nostr identities
45+
• Per-site permissions — control which sites can request signatures
46+
47+
Your keys. Your control. No data collection. No tracking. Fully open source.
48+
```
49+
50+
### Category
51+
**Utilities**
52+
53+
### Secondary Category
54+
**Social Networking**
55+
56+
## Privacy Details (App Store Connect)
57+
58+
### Data Collection
59+
**We do NOT collect any user data.**
60+
61+
Apple requires you to declare data practices in App Store Connect. Select:
62+
63+
- **Data Not Collected** — NostrKey does not collect any data from users
64+
65+
### Privacy Policy URL
66+
**https://nostrkey.com/privacy.html**
67+
68+
### Privacy Nutrition Label
69+
| Data Type | Collected | Linked to Identity | Tracking |
70+
|-----------|-----------|-------------------|----------|
71+
| All types | No | No | No |
72+
73+
## Required Assets
74+
75+
### App Icon
76+
- 1024x1024px (required for App Store)
77+
- Existing icons in `src/images/` can be scaled up or recreated
78+
79+
### Screenshots
80+
81+
#### macOS (required)
82+
- At least 1 screenshot
83+
- Recommended sizes: 2880x1800, 1280x800
84+
- Show: profile management, signing flow, vault, security settings
85+
86+
#### iOS (required if supporting iPhone/iPad)
87+
- 6.7" display: 1290x2796
88+
- 6.5" display: 1284x2778 or 1242x2688
89+
- Show: popup interface, key management, permission dialog
90+
91+
### Preview Video (optional)
92+
- Up to 30 seconds
93+
- Show the signing flow in action
94+
95+
## App Review Information
96+
97+
### Demo Account
98+
Not applicable — NostrKey generates its own keys locally.
99+
100+
### Review Notes
101+
```
102+
NostrKey is a Safari Web Extension that implements the NIP-07 standard for Nostr key management. It allows users to:
103+
104+
1. Generate or import Nostr private keys (nsec/hex format)
105+
2. Sign events requested by Nostr-compatible websites via the window.nostr API
106+
3. Encrypt/decrypt messages using NIP-44
107+
4. Connect to remote signers via NIP-46 (nsecBunker)
108+
5. Store encrypted documents in a zero-knowledge vault
109+
110+
To test:
111+
1. Install the extension and enable it in Safari → Settings → Extensions
112+
2. Visit a Nostr web app (e.g., https://snort.social or https://nostrudel.ninja)
113+
3. The app will detect window.nostr and prompt for key access
114+
4. NostrKey will show a permission dialog for user approval
115+
116+
No account or login is needed — the extension generates keys locally.
117+
```
118+
119+
### Contact Information
120+
- **Website:** https://nostrkey.com
121+
- **Support URL:** https://nostrkey.com/support.html
122+
- **GitHub:** https://github.com/HumanjavaEnterprises/nostrkey.browser.plugin.src
123+
124+
## Xcode Build & Archive
125+
126+
### Build for Distribution
127+
```bash
128+
# 1. Build the Safari extension source
129+
npm run build:all
130+
131+
# 2. Open in Xcode
132+
open apple/NostrKey.xcodeproj
133+
134+
# 3. In Xcode:
135+
# - Select "Any Mac" or "Any iOS Device" as destination
136+
# - Product → Archive
137+
# - Window → Organizer → Distribute App → App Store Connect
138+
```
139+
140+
### Signing
141+
- Requires Apple Developer certificate (distribution)
142+
- Bundle ID should match App Store Connect entry
143+
- Enable "Safari Web Extension" capability
144+
145+
## Submission Checklist
146+
147+
- [ ] Apple Developer account active
148+
- [ ] App Store Connect entry created
149+
- [ ] App name reserved: "NostrKey"
150+
- [ ] Bundle ID registered
151+
- [ ] Fill out app description, subtitle, keywords
152+
- [ ] Upload promotional text
153+
- [ ] Set categories (Utilities + Social Networking)
154+
- [ ] Upload screenshots (macOS required, iOS if applicable)
155+
- [ ] Set privacy declarations (Data Not Collected)
156+
- [ ] Add privacy policy URL
157+
- [ ] Add support URL
158+
- [ ] Add review notes (see above)
159+
- [ ] Archive and upload build from Xcode
160+
- [ ] Select build in App Store Connect
161+
- [ ] Submit for review
162+
163+
## Review Timeline
164+
165+
- Initial review: 1-3 days typically
166+
- Safari extensions may receive additional review for:
167+
- Content script injection (`<all_urls>`)
168+
- Cryptographic functionality
169+
- Key storage practices
170+
- Be prepared to explain NIP-07 standard and why `<all_urls>` is required
171+
172+
## Post-Submission
173+
174+
### If Approved
175+
- Update README.md with App Store link
176+
- Update nostrkey.com with App Store badge
177+
- Update support.html with installation link
178+
- Announce on social media / Nostr
179+
180+
### If Rejected
181+
- Review feedback in Resolution Center
182+
- Common issues:
183+
- Missing functionality explanation → update review notes
184+
- Privacy concerns → clarify local-only storage
185+
- `<all_urls>` justification → reference NIP-07 standard and MetaMask/Alby precedent
186+
- Resubmit via App Store Connect
187+
188+
## Terms and Conditions
189+
190+
**URL:** https://nostrkey.com/terms.html
191+
192+
## Additional Resources
193+
194+
- [App Store Connect](https://appstoreconnect.apple.com)
195+
- [Safari Web Extension Guide](https://developer.apple.com/documentation/safariservices/safari_web_extensions)
196+
- [App Store Review Guidelines](https://developer.apple.com/app-store/review/guidelines/)
197+
- [NIP-07 Specification](https://github.com/nostr-protocol/nips/blob/master/07.md)
198+
199+
---
200+
201+
*Last updated: February 19, 2026*
202+
*Published by Humanjava Enterprises Inc*

0 commit comments

Comments
 (0)