181 lines
5.4 KiB
Markdown
181 lines
5.4 KiB
Markdown
# Reddit CLI Interface - Project Plan
|
|
|
|
## Overview
|
|
Create a command-line interface for browsing Reddit posts with intuitive navigation, search capabilities, and interactive post viewing.
|
|
|
|
## Core Features
|
|
|
|
### 1. Search Functionality
|
|
- Search for Reddit posts by keyword/terms
|
|
- Display first 15 results per page
|
|
- Pagination support (press 'n' for next 15 posts)
|
|
- Posts numbered for easy selection
|
|
- Table format with:
|
|
- Post number
|
|
- Subreddit name
|
|
- Post creation date
|
|
- Post title (main column)
|
|
|
|
### 2. Post Navigation
|
|
- Click on post number to view full post details
|
|
- View main body text of the post
|
|
- Interactive comments viewing (press 'c' to cycle through comments)
|
|
- Summary functionality (press 's' to get AI-generated summary)
|
|
|
|
### 3. AI Integration
|
|
- Use Ollama API at IP 192.168.8.223:11434
|
|
- Model: gpt-oss:20b
|
|
- Send post body + 100 random comments to AI for summarization
|
|
- Display AI-generated summary to user
|
|
|
|
## Technical Implementation Plan
|
|
|
|
### Phase 1: Project Structure and Basic Setup
|
|
- Create directory structure
|
|
- Initialize project with dependencies
|
|
- Set up basic CLI framework using a library like `clap` for Rust or `commander` for Node.js
|
|
- Implement file-based data storage for caching Reddit data
|
|
|
|
### Phase 2: Search Functionality
|
|
- Implement Reddit API integration (using official Reddit API or third-party)
|
|
- Create search endpoint handler
|
|
- Design result table format with required columns
|
|
- Implement pagination logic ('n' key to load next page)
|
|
|
|
### Phase 3: Post Viewing Interface
|
|
- Create post detail view
|
|
- Display post body text
|
|
- Implement interactive comment viewing system (press 'c' for comments)
|
|
- Add UI for showing current post information
|
|
|
|
### Phase 4: AI Integration
|
|
- Set up connection to Ollama server at 192.168.8.223:11434
|
|
- Implement summary request functionality (press 's')
|
|
- Process and display AI-generated summaries
|
|
- Handle error scenarios for AI service unavailability
|
|
|
|
### Phase 5: User Experience Optimization
|
|
- Add keyboard navigation hints to UI
|
|
- Implement input validation
|
|
- Create error handling for API failures
|
|
- Add loading indicators for data fetching
|
|
- Optimize performance for large comment sets
|
|
|
|
## Data Structure Requirements
|
|
|
|
### Post Representation
|
|
```json
|
|
{
|
|
"id": "string",
|
|
"title": "string",
|
|
"body": "string",
|
|
"subreddit": "string",
|
|
"created_utc": "timestamp",
|
|
"url": "string",
|
|
"comments": ["comment1", "comment2", ...]
|
|
}
|
|
```
|
|
|
|
### UI Components
|
|
1. Search Interface
|
|
2. Results Table View
|
|
3. Post Detail View
|
|
4. Comments Viewer
|
|
5. AI Summary Display
|
|
|
|
## Detailed Technical Specifications
|
|
|
|
### API Integration Layer
|
|
- Use Reddit's official API (https://www.reddit.com/dev/api/)
|
|
- Authentication handling (OAuth or API key if needed)
|
|
- Rate limiting implementation
|
|
- Data caching to reduce API calls
|
|
- Error handling for network issues and API errors
|
|
|
|
### CLI Interface Components
|
|
- Main search screen with table view
|
|
- Post detail screen showing:
|
|
- Title
|
|
- Author and subreddit info
|
|
- Creation date
|
|
- Body text
|
|
- Comment viewer with cycling through posts
|
|
- Summary screen showing AI output
|
|
- Navigation controls with clear key hints
|
|
|
|
### Terminal UI Considerations
|
|
- Use a library like `tui-rs` for Rust or `blessed` for Node.js for advanced terminal rendering
|
|
- Support for color-coded UI elements (subreddit colors, etc.)
|
|
- Responsiveness to different terminal sizes
|
|
- Keyboard navigation support (arrows, enter, etc.)
|
|
|
|
### Data Management
|
|
- Local cache storage using JSON files or a simple database
|
|
- Cache invalidation strategy for fresh data
|
|
- Efficient data parsing and storage formats
|
|
|
|
## Dependencies and Tools
|
|
|
|
### Core Libraries
|
|
- CLI library (e.g., `clap` for Rust or `inquirer.js` for Node.js)
|
|
- HTTP client for Reddit API communication (e.g., `reqwest` for Rust or `axios` for Node.js)
|
|
- JSON parsing/serialization
|
|
- Terminal UI framework (for enhanced display)
|
|
|
|
### AI Integration
|
|
- Ollama client library for connecting to local AI server
|
|
- Connection pooling and error handling for AI service
|
|
- Request/response data formatting for the AI model
|
|
|
|
## Development Timeline
|
|
|
|
### Week 1
|
|
- Project setup and core CLI framework
|
|
- Basic Reddit API integration
|
|
- Search functionality implementation
|
|
- Initial terminal UI design
|
|
|
|
### Week 2
|
|
- Results table formatting and pagination
|
|
- Post detail view creation
|
|
- Comments viewing system
|
|
- Keyboard input handling
|
|
|
|
### Week 3
|
|
- AI integration with Ollama server
|
|
- Summary generation and display
|
|
- Error handling for both API and AI service
|
|
- Testing and UI refinement
|
|
|
|
### Week 4
|
|
- Performance optimization
|
|
- Error handling and edge case management
|
|
- Documentation and final testing
|
|
- User experience improvements
|
|
|
|
## Implementation Considerations
|
|
|
|
### Error Handling
|
|
- Implement graceful degradation when services are unavailable
|
|
- Network timeout handling
|
|
- Data validation and sanitization
|
|
- Clear error messages to user
|
|
|
|
### Usability Features
|
|
- Clear visual feedback for user actions
|
|
- Helpful key bindings documentation
|
|
- Progress indicators for loading content
|
|
- Responsive design for different terminal sizes
|
|
|
|
### Performance Optimization
|
|
- Efficient data fetching strategies
|
|
- Local caching of frequently accessed data
|
|
- Asynchronous loading where appropriate
|
|
- Memory management for large comment sets
|
|
|
|
## Testing Strategy
|
|
- Unit tests for core logic functions
|
|
- Integration tests for API interactions
|
|
- End-to-end tests for full user flows
|
|
- UI component testing for terminal interaction
|
|
- Performance testing with larger datasets |