# Rolodex ๐๏ธ
A fast and minimal terminal-based contact manager built in Rust using the Elm architecture, Crossterm, and Ratatui.
## Features
- ๐งญ Interactive TUI with real-time filtering by name or company
- โจ๏ธ Keyboard navigation (โ/โ, Home/End)
- ๐ Search-as-you-type filtering
- ๐งต JSON output for scripting (pipe into `jq` or CLI dialers)
- ๐ Contact data loaded from `contacts.json`
## Usage
```bash
Use arrow keys to select a contact. Press Enter to emit the contact as JSON, which you can then pipe into another tool.
## Keyboard shortcuts
| `โ / โ` | Move selection |
| `Home / End` | Jump to start/end |
| `Ctrl + Q` | Quit |
| `Esc` | Clear search |
| `Enter` | Output selected contact |
## JSON Format
```json
{
"name": "Alice Anderson",
"company": "Acme Co.",
"email": "alice@acme.co",
"phone": "0412 345 678"
}
```
## Installation
```bash
git clone https://github.com/popplestones/rolodex.git
cd rolodex
cargo build --release
```
Then run it:
```bash
./target/release/rolodex
```
## Development Notes
For planned features like Add/Edit/Delete modes, file persistence, XDG path support, and CLI improvements, see [TODO.md](TODO.md). Contributions and ideas welcome!
## License
MIT