reddit-cli/plan.md
2025-12-19 09:24:31 -06:00

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