Architecture
Understanding RedHarmony's system design and components.
System Overview
RedHarmony is built with a modular architecture consisting of:
graph TD
A[Main Controller] --> B[Content Generator]
A --> C[Reddit Interface]
A --> D[Database Manager]
B --> E[OpenAI API]
C --> F[Reddit API]
D --> G[SQLite DB]
Core Components
1. Main Controller (main.py
)
- Orchestrates all operations
- Manages rate limiting
- Coordinates between components
- Handles scheduling
2. Content Generation (utils/constant.py
)
- Interfaces with OpenAI API
- Manages prompt engineering
- Handles content formatting
- Ensures quality control
3. Reddit Interface (utils/post.py
, utils/comment.py
)
- Manages Reddit API interactions
- Handles post creation
- Manages comment interactions
- Implements vote behavior
4. Database Management (utils/database.py
)
- Tracks all activities
- Manages persistence
- Handles data queries
- Ensures data integrity
Data Flow
- Content Creation Flow
sequenceDiagram
Main->>OpenAI: Generate Content
OpenAI->>Main: Return Content
Main->>Reddit: Create Post
Reddit->>Main: Post Created
Main->>Database: Save Activity
- Interaction Flow
sequenceDiagram
Main->>Reddit: Monitor Responses
Reddit->>Main: New Comments
Main->>OpenAI: Generate Reply
OpenAI->>Main: Return Reply
Main->>Reddit: Post Comment
Component Interactions
Helper Utilities (utils/helper.py
)
- Provides shared functionality
- Manages configuration loading
- Implements common utilities
- Handles error checking
Vote Management (utils/vote.py
)
- Implements voting strategies
- Manages vote timing
- Tracks vote history
- Ensures natural behavior
Configuration Structure
System Configuration:
├── Environment Variables (.env)
│ ├── API Keys
│ └── Credentials
├── Persona Definitions (accounts.json)
│ ├── Subreddit Targets
│ └── Personality Traits
└── Rate Limits (main.py)
├── Daily Limits
└── Hourly Limits
Database Schema
-- Activity Tracking
CREATE TABLE posts (
id INTEGER PRIMARY KEY,
post_id TEXT UNIQUE,
username TEXT,
subreddit TEXT,
timestamp DATETIME
);
CREATE TABLE comments (
id INTEGER PRIMARY KEY,
comment_id TEXT UNIQUE,
post_id TEXT,
timestamp DATETIME
);