Add NDK skill documentation and examples
- Introduced comprehensive documentation for the Nostr Development Kit (NDK) including an overview, quick reference, and troubleshooting guide. - Added detailed examples covering initialization, authentication, event publishing, querying, and user profile management. - Structured the documentation to facilitate quick lookups and deep learning, based on real-world usage patterns from the Plebeian Market application. - Created an index for examples to enhance usability and navigation. - Bumped version to 1.0.0 to reflect the addition of this new skill set.
This commit is contained in:
94
.claude/skills/ndk/examples/README.md
Normal file
94
.claude/skills/ndk/examples/README.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# NDK Examples Index
|
||||
|
||||
Complete code examples extracted from the Plebeian Market production codebase.
|
||||
|
||||
## Available Examples
|
||||
|
||||
### 01-initialization.ts
|
||||
- Basic NDK initialization
|
||||
- Multiple NDK instances (main + zap relays)
|
||||
- Connection with timeout protection
|
||||
- Connection status checking
|
||||
- Full initialization flow with error handling
|
||||
|
||||
### 02-authentication.ts
|
||||
- NIP-07 browser extension login
|
||||
- Private key signer
|
||||
- NIP-46 remote signer (Bunker)
|
||||
- Auto-login from localStorage
|
||||
- Saving auth credentials
|
||||
- Logout functionality
|
||||
- Getting current user
|
||||
|
||||
### 03-publishing-events.ts
|
||||
- Basic note publishing
|
||||
- Events with tags (mentions, hashtags, replies)
|
||||
- Product listings (parameterized replaceable events)
|
||||
- Order creation events
|
||||
- Status update events
|
||||
- Batch publishing
|
||||
- Custom signer usage
|
||||
- Comprehensive error handling
|
||||
|
||||
### 04-querying-subscribing.ts
|
||||
- Basic fetch queries
|
||||
- Multiple author queries
|
||||
- Tag filtering
|
||||
- Time range filtering
|
||||
- Event ID lookup
|
||||
- Real-time subscriptions
|
||||
- Subscription cleanup patterns
|
||||
- React integration hooks
|
||||
- React Query integration
|
||||
- Waiting for specific events
|
||||
- Payment monitoring
|
||||
|
||||
### 05-users-profiles.ts
|
||||
- Fetch profile by npub
|
||||
- Fetch profile by hex pubkey
|
||||
- Fetch profile by NIP-05
|
||||
- Universal identifier lookup
|
||||
- Get current user
|
||||
- Extract profile information
|
||||
- Update user profile
|
||||
- Batch fetch multiple profiles
|
||||
- Convert between pubkey formats (hex/npub)
|
||||
- React hooks for profiles
|
||||
- Follow/unfollow users
|
||||
|
||||
## Usage
|
||||
|
||||
Each file contains:
|
||||
- Fully typed TypeScript code
|
||||
- JSDoc comments explaining the pattern
|
||||
- Error handling examples
|
||||
- Integration patterns with React/TanStack Query
|
||||
- Real-world usage examples
|
||||
|
||||
All examples are based on actual production code from the Plebeian Market application.
|
||||
|
||||
## Running Examples
|
||||
|
||||
```typescript
|
||||
import { initializeNDK } from './01-initialization'
|
||||
import { loginWithExtension } from './02-authentication'
|
||||
import { publishBasicNote } from './03-publishing-events'
|
||||
|
||||
// Initialize NDK
|
||||
const { ndk, isConnected } = await initializeNDK()
|
||||
|
||||
if (isConnected) {
|
||||
// Authenticate
|
||||
const { user } = await loginWithExtension(ndk)
|
||||
|
||||
// Publish
|
||||
await publishBasicNote(ndk, 'Hello Nostr!')
|
||||
}
|
||||
```
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- See `../ndk-skill.md` for detailed documentation
|
||||
- See `../quick-reference.md` for quick lookup
|
||||
- Check the main codebase for more complex patterns
|
||||
|
||||
Reference in New Issue
Block a user