{"id":24269148,"url":"https://github.com/program247365/hackertuah","last_synced_at":"2026-04-10T19:01:44.700Z","repository":{"id":261329543,"uuid":"883988948","full_name":"program247365/hackertuah","owner":"program247365","description":"A CLI for Hacker News","archived":false,"fork":false,"pushed_at":"2025-07-30T01:01:31.000Z","size":5182,"stargazers_count":12,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-15T15:26:27.756Z","etag":null,"topics":["cli","hackernews-cli","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/program247365.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-05T23:50:23.000Z","updated_at":"2025-07-30T01:01:34.000Z","dependencies_parsed_at":"2024-11-06T00:33:59.588Z","dependency_job_id":"4e245870-6877-4d7e-8db7-fa28b6abba8a","html_url":"https://github.com/program247365/hackertuah","commit_stats":null,"previous_names":["program247365/hackertuah"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/program247365/hackertuah","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/program247365%2Fhackertuah","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/program247365%2Fhackertuah/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/program247365%2Fhackertuah/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/program247365%2Fhackertuah/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/program247365","download_url":"https://codeload.github.com/program247365/hackertuah/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/program247365%2Fhackertuah/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015771,"owners_count":26085748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","hackernews-cli","rust"],"created_at":"2025-01-15T14:57:17.352Z","updated_at":"2026-04-10T19:01:44.683Z","avatar_url":"https://github.com/program247365.png","language":"Rust","readme":"# Hacker News TUI\n\nA terminal-based user interface for browsing Hacker News with Vim-style navigation and Claude AI integration for story summarization.\n\n![Hacker News TUI Demo](./demo.gif)\n\n## Quickstart\n\n### Homebrew (recommended)\n\n```bash\nbrew tap program247365/tap\nbrew install hackertuah\n```\n\n### Cargo\n\n```bash\ncargo install --git https://github.com/program247365/hackertuah\n```\n\n## Features\n\n- **Browse** top Hacker News stories in your terminal across Top, Ask, Show, and Jobs sections\n- **Vim-style navigation** (j/k, h/l, arrows) throughout the app\n- **Threaded comments view** — press `c` to read comments inline with indentation mirroring HN's thread structure, scroll through them with j/k, and reply directly\n- **Comment counts** displayed for each story in the list\n- **Claude AI integration** for story summarization via the options menu\n- **Command Palette** (`Ctrl+K`) for quick access to all commands with fuzzy search\n- **Instant search/filter** — press `/` to filter stories by title as you type\n- **Open in browser** — open stories, comments, or reply pages directly in your default browser\n- **Section switching** — navigate between Top, Ask, Show, and Jobs with `h/l` or hotkeys\n- **Context-aware help bar** — keyboard shortcuts displayed at the bottom of every screen, updating per context\n- **Matrix-style loading screen** while fetching data\n- **Classic green-on-black** terminal aesthetic\n\n## Keyboard Controls\n\n### Stories (Normal Mode)\n\n| Key | Action |\n|-----|--------|\n| `j` / `↓` | Move down |\n| `k` / `↑` | Move up |\n| `Enter` | Open story in browser |\n| `c` | View comments inline |\n| `C` | Open comments in browser |\n| `o` | Open options menu |\n| `h` / `l` | Previous / next section |\n| `T` / `A` / `S` / `J` | Jump to Top / Ask / Show / Jobs |\n| `r` | Refresh current section |\n| `R` | Refresh all sections |\n| `/` | Search / filter stories |\n| `Ctrl+K` | Open command palette |\n| `q` / `Ctrl+C` | Quit |\n\n### Comments View\n\n| Key | Action |\n|-----|--------|\n| `j` / `↓` | Move down |\n| `k` / `↑` | Move up |\n| `o` / `Enter` | Open selected comment in browser |\n| `r` | Reply to selected comment (opens HN reply page) |\n| `R` | Refresh comments |\n| `Esc` / `q` | Back to stories |\n\n### Search Mode\n\n| Key | Action |\n|-----|--------|\n| `↑` / `↓` | Navigate filtered results |\n| `Enter` | Open selected story |\n| `Esc` | Cancel search |\n\n### Command Palette\n\nPress `Ctrl+K` to open the command palette, which provides:\n- Searchable list of all available commands\n- Real-time filtering as you type\n- Navigate with Up/Down arrows, execute with Enter, close with Esc\n\n### Options Menu\n\nPress `o` to open the options menu:\n1. Summarize this post (uses Claude AI)\n2. Open in browser\n3. Close menu\n\n## Installation\n\n### Prerequisites\n\n- A Claude API key from Anthropic (for the summarization feature)\n\n### Setup\n\nAdd your Claude API key to your environment:\n\n```bash\nexport CLAUDE_API_KEY=your_key_here\n```\n\n## Project Structure\n\n```\nsrc/\n├── main.rs              # App state, event loop, terminal setup\n├── types.rs             # Data types (Story, Comment, Section, Mode)\n├── hn_api.rs            # Hacker News \u0026 Claude API integration\n├── ui.rs                # UI rendering and layout\n└── loading_screen.rs    # Matrix-style loading animation\n```\n\n## Dependencies\n\n```toml\n[dependencies]\nratatui = \"0.30.0\"\ncrossterm = \"0.29.0\"\ntokio = { version = \"1.51\", features = [\"full\"] }\nreqwest = { version = \"0.13\", features = [\"json\"] }\nserde = { version = \"1.0\", features = [\"derive\"] }\nopen = \"5.3\"\nrand = \"0.9\"\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogram247365%2Fhackertuah","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprogram247365%2Fhackertuah","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogram247365%2Fhackertuah/lists"}