Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions crates/tui/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# VortexDB TUI

A terminal user interface for managing VortexDB databases locally.

## Important Note

> **This is currently a local admin/development tool**, not a network client. The TUI operates directly on database files using embedded storage — it does not connect to a running VortexDB server. This will change once the server gets the multiple-database support.
>
> For remote server access, use the [Python client](../../client/python/).

## Usage

```bash
cargo run -p tui
```

Databases are stored in `./databases/` by default.

### Environment Variables

For embedding features, set these in your `.env` file or environment:

```bash
TEXT_EMBEDDING_URL=http://localhost:8000/embed/text
IMAGE_EMBEDDING_URL=http://localhost:8000/embed/image
```

These point to an external embedding service that generates vectors from text/images.

## Roadmap

This TUI will evolve into a full client that connects to VortexDB servers over gRPC. Planned changes:

- Add remote connection mode via gRPC (like the Python client)
- Move to `client/tui/` once server multi-database support lands
2 changes: 1 addition & 1 deletion crates/tui/src/ui/components.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ impl PageTitle {
.block(
Block::default()
.borders(Borders::ALL)
.title("Vector DB")
.title("VortexDB")
.title_alignment(Alignment::Center)
.border_style(Style::default().fg(self.color)),
)
Expand Down
49 changes: 6 additions & 43 deletions crates/tui/src/ui/dashboard.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,74 +21,37 @@ pub fn render_dashboard(f: &mut Frame, app: &App) {
Line::from(""),
Line::from(""),
Line::from(vec![Span::styled(
"██╗ ██╗██████╗ ██████╗████████╗ ██████╗ ██████╗ ",
"██╗ ██╗ ██████╗ ██████╗ ████████╗███████╗██╗ ██╗██████╗ ██████╗ ",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
"██║ ██║██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗",
"██║ ██║██╔═══██╗██╔══██╗╚══██╔══╝██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
"██║ ██║█████╗ ██║ ██║ ██║ ██║██████╔╝",
"██║ ██║██║ ██║██████╔╝ ██║ █████╗ ╚███╔╝ ██║ ██║██████╔╝",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
"╚██╗ ██╔╝██╔══██║ ██║ ██║ ██║██╔══██╗",
"╚██╗ ██╔╝██║ ██║██╔══██╗ ██║ ██╔══╝ ██╔██╗ ██║ ██║██╔══██╗",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
" ╚████╔╝ ███████╗╚██████╗ ██║ ██████╔╝██║ ██║",
" ╚████╔╝ ██████╔╝██║ ██║ ██║ ███████╗██╔╝ ██╗██████╔╝██████╔╝",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
" ╚═══╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(""),
Line::from(vec![Span::styled(
"██████╗ ██████╗ ",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
"██╔══██╗██╔══██╗",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
"██║ ██║██████╔╝",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
"██║ ██║██╔══██╗",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
"██████╔╝██████╔╝",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
)]),
Line::from(vec![Span::styled(
"╚═════╝ ╚═════╝ ",
" ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ",
Style::default()
.fg(Color::Cyan)
.add_modifier(ratatui::style::Modifier::BOLD),
Expand Down
Loading