|
1 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------ |
2 |
| - |
3 |
| -## 📝 Project Overview & Feature Summary |
4 |
| - |
5 |
| -### High-level architecture |
6 |
| - |
7 |
| - * **Language & crates** |
8 |
| - Rust + Cargo project, using: |
9 |
| - |
10 |
| - |
11 |
| - * **clap** for CLI parsing |
12 |
| - |
13 |
| - * **directories** + **toml** + **serde** for a user-editable config file |
14 |
| - |
15 |
| - * **crossterm** + **ratatui** for the terminal UI |
16 |
| - |
17 |
| - * **redis** for talking to Redis synchronously |
18 |
| - |
19 |
| - * **crossclip** for clipboard support |
20 |
| - |
21 |
| - * **fuzzy-matcher** for fuzzy key search |
22 |
| - |
23 |
| - * **url** for URL parsing/validation |
24 |
| - |
25 |
| - Cargo.toml |
26 |
| - * **Config loading** |
27 |
| - On startup (and on `--seed`), we load `~/.config/lazyredis/lazyredis.toml` (created automatically if missing) into a `Config` holding a list of |
28 |
| -`ConnectionProfile`s. |
29 |
| - [src/config.rs](/Users/mazdak/Code/lazyredis/src/config.rs)[src/config.rs](/Users/mazdak/Code/lazyredis/src/config.rs) |
30 |
| - * **CLI & seeding mode** |
31 |
| - The binary accepts a `--seed` flag to bulk-populate a development Redis instance with thousands of sample keys of every type. |
32 |
| - [src/main.rs](/Users/mazdak/Code/lazyredis/src/main.rs)[src/main.rs](/Users/mazdak/Code/lazyredis/src/main.rs) |
33 |
| - * **TUI startup** |
34 |
| - In normal mode, we switch to an alternate screen, enable raw mode, build a `ratatui::Terminal<CrosstermBackend>`, and hand off to `run_app`. |
35 |
| - [src/main.rs](/Users/mazdak/Code/lazyredis/src/main.rs)[src/main.rs](/Users/mazdak/Code/lazyredis/src/main.rs) |
36 |
| - |
37 |
| -### Interactive UI & Controls |
38 |
| - |
39 |
| - * **Profile / DB selection** |
40 |
| - Press `p` to open the profile selector (choose Redis instance), then use `j`/`k` (or ↑/↓) and `Enter`. |
41 |
| - [src/ui.rs](/Users/mazdak/Code/lazyredis/src/ui.rs) |
42 |
| - * **Key tree browsing** |
43 |
| - Keys are fetched via `KEYS *`, parsed into a folder-leaf tree based on the delimiter (`:` by default), and shown in the left panel. |
44 |
| - Navigate with `j`/`k` or arrows; `Enter` to descend into a folder or fetch a key’s value; `Backspace`/`Esc` to go up. |
45 |
| - [src/app.rs](/Users/mazdak/Code/lazyredis/src/app.rs)[src/app.rs](/Users/mazdak/Code/lazyredis/src/app.rs) |
46 |
| - * **Value inspection** |
47 |
| - Simple strings are pulled with `GET` and displayed. On `WRONGTYPE`, we run `TYPE` and then the appropriate fetcher (`HGETALL`, `ZRANGE … |
48 |
| -WITHSCORES`, `LRANGE`, etc.) for hash, zset, list, set, or stream. |
49 |
| - [src/app.rs](/Users/mazdak/Code/lazyredis/src/app.rs) |
50 |
| - * **Fuzzy search** |
51 |
| - `/` enters search mode. Every key in `raw_keys` is scored via `fuzzy_matcher::skim::SkimMatcherV2`, and matches populate the filtered list. |
52 |
| - [src/app.rs](/Users/mazdak/Code/lazyredis/src/app.rs) |
53 |
| - * **Clipboard support** |
54 |
| - `y` copies the selected key’s name; `Y` copies the selected value or sub-item. Under the hood this uses `crossclip::SystemClipboard`. |
55 |
| - [src/app.rs](/Users/mazdak/Code/lazyredis/src/app.rs)[src/app.rs](/Users/mazdak/Code/lazyredis/src/app.rs) |
56 |
| - * **Delete with confirmation** |
57 |
| - `d` on a focused key or folder pops up a confirmation dialog; upon `Y`es it issues `DEL` or does a prefixed `KEYS/p` + `DEL`. |
58 |
| - [src/ui.rs](/Users/mazdak/Code/lazyredis/src/ui.rs)[src/app.rs](/Users/mazdak/Code/lazyredis/src/app.rs) |
59 |
| - * **Footer help & paging** |
60 |
| - The bottom of the screen shows a help line with all keybindings, and PageUp/PageDown navigate long value lists. |
61 |
| - [src/ui.rs](/Users/mazdak/Code/lazyredis/src/ui.rs) |
62 |
| - |
63 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------ |
64 |
| - |
65 | 1 | ## 🔍 Areas for Improvement (Style, Functionality & Bug-risk)
|
66 | 2 |
|
67 | 3 |
|
@@ -90,8 +26,6 @@ dynamic dispatch.
|
90 | 26 | Embed a mini REPL for arbitrary Redis commands.
|
91 | 27 | 5. **Export & import.**
|
92 | 28 | Backup selected keys or entire subtrees to JSON/CSV, and restore from file.
|
93 |
| - 6. **Authentication & TLS.** |
94 |
| - Support Redis ACL passwords, `rediss://` URLs, and certificates for secure connections. |
95 | 29 | 7. **Config reload at runtime.**
|
96 | 30 | Press a key to reload `lazyredis.toml` without restarting.
|
97 | 31 | 8. **Enhanced metrics/viewer.**
|
|
0 commit comments