# NOS CLI
A modern, fast terminal-based RSS feed reader specifically designed for NOS.nl (Nederlandse Omroep Stichting) news feeds.
## ✨ Features
- 📰 **Multiple Feed Categories**: Access news, sports, and special programs from NOS
- 🖼️ **Terminal Image Support**: View article images directly in your terminal
- ⚡ **Fast & Responsive**: Smooth navigation with vi-style keybindings
- 🎨 **Beautiful UI**: Clean interface with official NOS brand colors
- 📱 **Responsive Layout**: Adapts to different terminal sizes
- 🔍 **Article Preview**: Quick preview text in list view
- 📖 **Full Article View**: Read complete articles with proper formatting
## 🚀 Installation
### From Source
```bash
# Clone the repository
git clone https://github.com/thijmen-nos/nos-cli.git
cd nos-cli
# Build and install
cargo install --path .
```
### Prerequisites
- Rust 1.70 or later
- A terminal that supports 256 colors (most modern terminals)
- For optimal image display: A terminal with image protocol support (iTerm2, Kitty, etc.)
## 📖 Usage
Start the application:
```bash
nos-cli
```
### Navigation
The application uses intuitive keybindings:
#### Feed Selection Mode
- `↑/↓` or `j/k`: Navigate between feeds
- `Enter/l/→`: Select a feed
- `q/Esc`: Quit application
#### Article List Mode
- `↑/↓` or `j/k`: Navigate between articles
- `Enter/l/→`: Open article details
- `h/←/Backspace`: Return to feed selection
- `q/Esc`: Quit application
#### Article Detail Mode
- `↑/↓` or `j/k`: Scroll article content
- `J/K`: Jump to next/previous article
- `h/←/Backspace`: Return to article list
- `q/Esc`: Quit application
## 📺 Available Feeds
### News Feeds
- NOS Nieuws Algemeen (General News)
- NOS Nieuws Binnenland (Domestic News)
- NOS Nieuws Buitenland (International News)
- NOS Nieuws Politiek (Politics)
- NOS Nieuws Economie (Economics)
- NOS Nieuws Opmerkelijk (Remarkable News)
- NOS Nieuws Koningshuis (Royal House)
- NOS Nieuws Cultuur en media (Culture & Media)
- NOS Nieuws Tech (Technology)
### Sports Feeds
- NOS Sport Algemeen (General Sports)
- NOS Sport Voetbal (Football)
- NOS Sport Wielrennen (Cycling)
- NOS Sport Schaatsen (Ice Skating)
- NOS Sport Tennis
- NOS Sport Formule 1 (Formula 1)
### Special Programs
- Nieuwsuur
- NOS op 3
- NOS Jeugdjournaal (Youth News)
## 🛠️ Development
### Building
```bash
# Debug build
cargo build
# Release build
cargo build --release
```
### Running
```bash
# Run with cargo
cargo run
# Run with debug logging
RUST_LOG=debug cargo run
```
### Testing
```bash
cargo test
```
## 🤝 Contributing
We welcome contributions! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
### Development Guidelines
1. Follow standard Rust conventions and formatting (`cargo fmt`)
2. Ensure all tests pass (`cargo test`)
3. Add documentation for new features
4. Update README if needed
## 📄 License
This project is licensed under either of
- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
## 🙏 Acknowledgments
- [NOS.nl](https://nos.nl) for providing the RSS feeds
- [Ratatui](https://github.com/ratatui-org/ratatui) for the excellent TUI framework
- The Rust community for the amazing ecosystem
## 📞 Support
If you encounter any issues or have questions, please [open an issue](https://github.com/thijmen-nos/nos-cli/issues) on GitHub.
---
Made with ❤️ for the Dutch news community