OpChan/packages/core/README.md
Danish Arora 448a250cf6
feat: npm
2025-09-11 14:31:08 +05:30

128 lines
3.0 KiB
Markdown

# @opchan/core
Core package for OpChan - A decentralized forum built on Bitcoin Ordinals and Waku protocol.
## Features
- **Waku Integration**: Complete Waku protocol implementation for decentralized messaging
- **Bitcoin/Ethereum Wallet Support**: Multi-chain wallet integration with Reown AppKit
- **Forum Operations**: Cell creation, posts, comments, and voting system
- **Relevance Scoring**: Sophisticated algorithm for content ranking
- **Moderation System**: Cell-based moderation capabilities
- **Key Delegation**: Browser key generation for improved UX
- **Local Storage**: IndexedDB integration for offline-first experience
- **TypeScript**: Full TypeScript support with comprehensive type definitions
## Installation
```bash
npm install @opchan/core
```
## Usage
### Basic Setup
```typescript
import { WakuNodeManager, ForumActions, LocalDatabase } from '@opchan/core';
// Initialize Waku node
const wakuManager = new WakuNodeManager();
await wakuManager.initialize();
// Initialize local database
const db = new LocalDatabase();
await db.initialize();
// Create forum actions
const forumActions = new ForumActions(wakuManager, db);
```
### Creating a Cell
```typescript
import { ForumActions } from '@opchan/core';
const cell = await forumActions.createCell(
'My Cell',
'Description of my cell',
'https://example.com/icon.png' // optional
);
```
### Creating Posts and Comments
```typescript
// Create a post
const post = await forumActions.createPost(
cellId,
'Post Title',
'Post content here'
);
// Create a comment
const comment = await forumActions.createComment(
postId,
'Comment content here'
);
```
### Voting System
```typescript
// Vote on a post
await forumActions.votePost(postId, true); // upvote
await forumActions.votePost(postId, false); // downvote
// Vote on a comment
await forumActions.voteComment(commentId, true);
```
### Wallet Integration
```typescript
import { createWalletConfig } from '@opchan/core/wallet';
const config = createWalletConfig({
projectId: 'your-project-id',
// ... other wallet configuration
});
```
## API Reference
### Core Classes
- **WakuNodeManager**: Manages Waku node lifecycle and connections
- **ForumActions**: Handles all forum operations (create, vote, moderate)
- **LocalDatabase**: IndexedDB wrapper for local data persistence
- **RelevanceCalculator**: Calculates content relevance scores
- **BookmarkService**: Manages user bookmarks
- **UserIdentityService**: Handles user identity and verification
### Types
- **Cell**: Forum cell/board structure
- **Post**: Forum post structure
- **Comment**: Comment structure
- **User**: User identity and verification status
- **Vote**: Voting system types
## Requirements
- Node.js 18+
- Modern browser with IndexedDB support
- Bitcoin or Ethereum wallet (for posting)
## License
MIT
## Contributing
Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.
## Support
For questions and support, please open an issue on our GitHub repository.