A terminal-based user interface for browsing Hacker News with Vim-style navigation and Claude AI integration for story summarization.
- 🚀 Browse top Hacker News stories in your terminal
- ⌨️ Vim-style keyboard navigation
- 🤖 Claude AI integration for story summarization
- 🌐 Open stories directly in your default browser
- 💚 Classic green-on-black terminal aesthetic
- 🎯 Minimalist, distraction-free interface
- Rust and Cargo (Latest stable version)
- A Claude API key from Anthropic
- Clone the repository:
git clone https://github.com/yourusername/hackernews-tui
cd hackernews-tui
- Add your Claude API key to your environment:
export CLAUDE_API_KEY=your_key_here
- Build and run:
cargo build --release
cargo run
j
or↓
: Move downk
or↑
: Move upEnter
: Open selected story in default browsero
: Open options menuq
: Quit applicationEsc
: Close menus/summariesT
: Switch to Top storiesA
: Switch to Ask HNS
: Switch to Show HNJ
: Switch to Jobsh
/l
: Navigate between sectionsr
: Refresh current sectionR
: Refresh all sections
Press o
to open the options menu, which provides:
- Summarize this post (uses Claude AI)
- Open in browser
- Close menu
Each story displays:
- Title
- Score
- Author
- Direct link to article or discussion
[dependencies]
ratatui = "0.21.0"
crossterm = "0.26.0"
tokio = { version = "1.0", features = ["full"] }
reqwest = { version = "0.11", features = ["json"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
open = "3.2"
src/
├── main.rs # Main application logic
├── types.rs # Data structures and type definitions
├── ui.rs # UI rendering and layout
└── hn_api.rs # Hacker News API integration
- Fetches top 30 stories from Hacker News API
- Real-time score and comment updates
- Direct access to article URLs and discussion pages
- Summarizes long articles and discussions
- Provides concise, intelligent summaries of complex topics
- Accessible through the options menu with
o
- Built with ratatui for smooth rendering
- Classic green-on-black color scheme
- Efficient memory usage and fast rendering
- Responsive layout that adapts to terminal size
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.