mirror of
https://github.com/logos-messaging/OpChan.git
synced 2026-01-07 07:13:11 +00:00
128 lines
3.0 KiB
Markdown
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.
|