Show HN: Hackertuah – I made a Hacker News CLI in Rust

4 months ago 18

A terminal-based user interface for browsing Hacker News with Vim-style navigation and Claude AI integration for story summarization.

Hacker News TUI Demo

Install and run immediately with Cargo:

git clone https://github.com/program247365/hackertuah.git cd hackertuah cargo run --release

Or install globally from the latest source:

cargo install --git https://github.com/program247365/hackertuah
  • 🚀 Browse top Hacker News stories in your terminal
  • ⌨️ Vim-style navigation (j/k, arrows, etc.)
  • 🤖 Claude AI integration for story summarization
  • 🌐 Open stories directly in your default browser
  • 💚 Classic green-on-black terminal aesthetic
  • 🎯 Minimalist, distraction-free interface
  • 🔍 Instant search/filter: Press / or use the command palette to filter stories as you type
  • 🧑‍💻 Command Palette: Press Ctrl+K to access all commands, including search, section switching, and more
  • 📝 Options menu for each story (summarize, open, close)
  • 🏷️ Section switching: Top, Ask, Show, Jobs
  • 🛠️ Easy install & run with Cargo

Press Ctrl+K to open the command palette:

  • 🔎 Search for commands as you type
  • Quickly switch sections (Top, Ask, Show, Jobs)
  • 🔄 Refresh current or all sections
  • 🔍 Activate search mode (type 'search' and press Enter)
  • 🌐 Open in browser, 💬 Open comments, 🤖 Summarize
  • Quit the app
  • ⬆️⬇️ Navigate with Up/Down arrows, Esc to close
  • Press / to start searching, or open the command palette and type 'search'
  • Type to filter stories by title in real-time
  • Use Up/Down arrows to navigate filtered results
  • Press Enter to open the selected story, or Esc to cancel
  • Works across all sections (Top, Ask, Show, Jobs)
  • j or ↓: Move down
  • k or ↑: Move up
  • Enter: Open selected story in default browser
  • C: Open comments for selected story
  • o: Open options menu
  • q: Quit application
  • Esc: Close menus/summaries
  • T: Switch to Top stories
  • A: Switch to Ask HN
  • S: Switch to Show HN
  • J: Switch to Jobs
  • h/l: Navigate between sections
  • r: Refresh current section
  • R: Refresh all sections
  • Ctrl+K: Open command palette (search and execute commands)
  • /: Start search (type to filter stories)
cargo install --git https://github.com/program247365/hackertuah
  • Rust and Cargo (Latest stable version)
  • A Claude API key from Anthropic
  1. Clone the repository:
git clone https://github.com/program247365/hackertuah cd hackernews-tui
  1. Add your Claude API key to your environment:
export CLAUDE_API_KEY=your_key_here
  1. Build and run:
cargo build --release cargo run
  • j or ↓: Move down
  • k or ↑: Move up
  • Enter: Open selected story in default browser
  • C: Open comments for selected story
  • o: Open options menu
  • q: Quit application
  • Esc: Close menus/summaries
  • T: Switch to Top stories
  • A: Switch to Ask HN
  • S: Switch to Show HN
  • J: Switch to Jobs
  • h/l: Navigate between sections
  • r: Refresh current section
  • R: Refresh all sections
  • Ctrl+K: Open command palette (search and execute commands)
  • /: Start search (type to filter stories)

Press Ctrl+K to open the command palette, which provides:

  • Searchable list of all available commands
  • Real-time filtering as you type
  • Command descriptions
  • Execute commands with Enter
  • Navigate with Up/Down arrows
  • Close with Esc

Available commands now include:

  • Open in Browser
  • Open Comments
  • Summarize
  • Search (activate search/filter mode)
  • Switch to Top/Ask/Show/Jobs
  • Refresh/Refresh All
  • Quit

Press o to open the options menu, which provides:

  1. Summarize this post (uses Claude AI)
  2. Open in browser
  3. 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
  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

This project is licensed under the MIT License - see the LICENSE file for details.

Read Entire Article