{"id":50508994,"url":"https://github.com/amaduswaray/shellql","last_synced_at":"2026-06-02T19:00:24.287Z","repository":{"id":361681969,"uuid":"1223872869","full_name":"amaduswaray/ShellQL","owner":"amaduswaray","description":"Database manager TUI","archived":false,"fork":false,"pushed_at":"2026-05-31T20:16:46.000Z","size":662,"stargazers_count":3,"open_issues_count":10,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-31T21:06:15.763Z","etag":null,"topics":["database","mysql","postgresql","ratatui","rust","sql","sqlite","tmux","vim"],"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/amaduswaray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-28T18:31:05.000Z","updated_at":"2026-05-31T20:54:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/amaduswaray/ShellQL","commit_stats":null,"previous_names":["amaduswaray/shellql"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/amaduswaray/ShellQL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amaduswaray%2FShellQL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amaduswaray%2FShellQL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amaduswaray%2FShellQL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amaduswaray%2FShellQL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amaduswaray","download_url":"https://codeload.github.com/amaduswaray/ShellQL/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amaduswaray%2FShellQL/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33833277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"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":["database","mysql","postgresql","ratatui","rust","sql","sqlite","tmux","vim"],"created_at":"2026-06-02T19:00:15.659Z","updated_at":"2026-06-02T19:00:24.260Z","avatar_url":"https://github.com/amaduswaray.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ShellQL\n\n\u003e **ShellQL is a database manager TUI for developers.**\n\u003e\n\u003e It is Vim- and tmux-inspired, built for ergonomic SQL workflows and database management from the terminal.\n\u003e If you know Vim and SQL, you will feel right at home.\n\n---\n\n## Beta status\n\nShellQL is currently in **beta**.\n\nIt is already usable for daily development workflows, but features and keybindings are still evolving. Expect frequent updates, UX refinements, and expansion of database support.\n\n---\n\n## What ShellQL is\n\nShellQL is a keyboard-first terminal app for working with databases without leaving your shell.\n\nIt focuses on:\n- fast navigation\n- modal editing\n- composable layouts (tabs + panes + views)\n- practical data operations (filter, sort, edit, delete, insert, query)\n\nShellQL is intentionally **not beginner-first**. The payoff for learning the keybindings is high: once the workflow clicks, you can move very quickly.\n\n---\n\n## Philosophy: tabs, panes, and views\n\nShellQL is designed like a dashboard you build yourself:\n\n- **Tabs**: separate work contexts (e.g. staging vs prod, or schema work vs query work)\n- **Panes**: split your current tab into focused working areas\n- **Views**: choose what each pane does (`tables`, `table`, `schema`, `editor`, `results`)\n\nA common setup:\n- left pane: table list\n- top-right pane: table view\n- bottom-right pane: SQL editor/results\n\nThis makes it easy to inspect data, write SQL, and validate outcomes side-by-side.\n\n---\n\n## Core capabilities\n\n- Connection management in TUI and CLI\n- Supported engines: **Postgres, MySQL, SQLite**\n- Vim-like SQL editor (normal/insert/visual, operators, motions, yank/paste)\n- Context-aware autocomplete (commands + editor SQL/table completion)\n- Table view workflows: browse, filter, sort, edit, delete, staged inserts\n- Schema exploration per table\n- Query execution + multi-result view\n- Multi-tab, multi-pane workspace\n\n---\n\n## Installation\n\n### Homebrew (custom tap)\n\n```bash\nbrew tap amaduswaray/tap\nbrew install shellql\n```\n\n\u003e Homebrew setup details: [docs/homebrew.md](./docs/homebrew.md)\n\n\n### Cargo\n\n```bash\ncargo install shellql\n```\n\n### Build from source\n\n```bash\ngit clone https://github.com/amaduswaray/ShellQL.git\ncd shellql\ncargo build --release\n./target/release/shql\n```\n\n---\n\n## Quick start\n\nLaunch TUI:\n\n```bash\nshql\n```\n\nCLI examples:\n\n```bash\n# Add a saved connection\nshql db add --name dev --engine postgres --url 'postgres://user:pass@localhost:5432/mydb'\n\n# List saved connections\nshql db list\n\n# Delete a saved connection\nshql db delete --name dev\n\n# Interactive connect flow\nshql connect --interactive\n```\n\n---\n\n## Demos\n\n\u003e Recorded terminal demos from `docs/demos/`.\n\n### 1) ShellQL overview\n![ShellQL overview demo](docs/demos/shellql.gif)\n\n### 2) Add connection flow\n![Add connection demo](docs/demos/Add%20connection.gif)\n\n### 3) Pane workflows (split + navigate)\n![Panes demo](docs/demos/Panes.gif)\n\n### 4) Tab workflows\n![Tabs demo](docs/demos/Tabs.gif)\n\n### 5) Column search\n![Column search demo](docs/demos/Column%20search.gif)\n\n### 6) Filter rows with `:where`\n![Where sort demo](docs/demos/Where%20sort.gif)\n\n### 7) Sort rows with `:order`\n![Order by demo](docs/demos/Order%20by.gif)\n\n### 8) Column projection with `:select`\n![Select projection demo](docs/demos/Select%20projection.gif)\n\n### 9) Query editor: multiple SELECTs\n![Multiple selects demo](docs/demos/Multiple%20Selects.gif)\n\n### 10) Cmdline SQL execution (`:!`)\n![Cmdline SQL demo](docs/demos/CMDLine%20SQL.gif)\n\n---\n\n## Keybindings (quick guide)\n\n### Home\n- `j / k` or `↓ / ↑` — move\n- `Enter` — connect\n- `a` — add connection\n- `d` — delete connection (with confirm)\n- `:` — open command line\n- `?` — help\n- `q` — quit\n\n### Dashboard\n- `h j k l` or arrows — navigate\n- `Ctrl+h/j/k/l` — move pane focus\n- `:` — command line\n- `/` and `?` — search forward/backward\n- `n` / `N` — next/prev match\n- `i` — edit cell (TableView) / insert mode (Editor)\n- `v` / `V` / `Ctrl+v` — visual selections\n- `dd` — stage row delete (TableView)\n- `o` / `O` — stage insert row below/above\n- `u` — undo staged change\n- `:w` — commit staged changes\n- `Tab` / `Shift+Tab` — next/previous result set (Results view)\n\n### Query editor (Vim-inspired)\n- Normal/Insert/Visual behavior\n- Motions, operators, text objects, yank/delete/change\n- Examples: `dd`, `dw`, `dG`, `dgg`, `yy`, `yG`, `ygg`, `p`, `P`\n- SQL and table-name autocomplete while typing\n\n---\n\n## Cmdline commands (quick reference)\n\nGeneral navigation/layout:\n- `:new tab`\n- `:new pane [tables|table|schema|editor|results]`\n- `:split`, `:vsplit`, `:hsplit`\n- `:tab \u003cid|next|prev|close\u003e`\n- `:q`, `:close`, `:full`\n\nView switching:\n- `:tables`\n- `:table \u003cname\u003e`\n- `:schema [table]`\n- `:editor`\n- `:results`\n\nData actions (TableView only):\n- `:where \u003cexpr\u003e`\n- `:order [by] \u003ccol\u003e [asc|desc]`\n- `:select \u003ccols\u003e`\n- `:insert [above|below]`\n- `:reset`\n- `:w`\n\nOther:\n- `:! \u003csql\u003e`\n- `:connect`\n- `:disconnect`\n- `:back`, `:forward`\n- `:resize \u003cdirection\u003e \u003camount\u003e`\n- `:noh`\n\n\u003e Full docs: see [docs/documentation.md](./docs/documentation.md)\n\n---\n\n## Use cases\n\n- Quickly inspect rows in a production-like environment from SSH sessions\n- Triaging data issues while coding (no context switch to heavy GUI tools)\n- Running one-off SQL updates with immediate side-by-side validation\n- Keyboard-only data workflows for Vim/tmux users\n\n---\n\n## Inspiration\n\nShellQL draws inspiration from terminal-native tools and SQL TUIs, including:\n\n- **sqlit**\n- **lazydb / lazysql** style workflows\n- the broader **Vim + tmux** ecosystem\n\nRespect to the maintainers and communities behind these projects.\n\n---\n\n## Documentation\n\nFor a more complete guide (views, workflows, keybindings, commands), see:\n\n- [docs/documentation.md](./docs/documentation.md)\n- [docs/homebrew.md](./docs/homebrew.md)\n\n---\n\n## Versioning \u0026 releases\n\nShellQL release tags follow GitHub-recommended `v` prefixes.\n\nCurrent beta track:\n- **`v0.1.x-beta`**\n- Increase `x` for each new beta release (`v0.1.0-beta`, `v0.1.1-beta`, `v0.1.2-beta`, ...)\n\nVersion sync rule:\n- `Cargo.toml` version should match the tag without the `v` prefix.\n  - Example: tag `v0.1.2-beta` ↔ `version = \"0.1.2-beta\"`\n\nRelease flow:\n\n- **Merges/pushes to `main` automatically create a new beta release.**\n  - The workflow bumps `0.1.x-beta` → `0.1.(x+1)-beta`\n  - Commits `Cargo.toml` + `Cargo.lock`\n  - Creates and pushes tag `v0.1.(x+1)-beta`\n  - Builds binaries and publishes a GitHub pre-release\n\nManual options are still available:\n\n```bash\n# trigger release by pushing a tag yourself\ngit tag -a v0.1.2-beta -m \"Release v0.1.2-beta\"\ngit push origin v0.1.2-beta\n```\n\nOr use **Actions → Release → Run workflow** and pass a tag.\n\nTags containing `-beta` are automatically marked as **pre-releases**.\n\n---\n\n## Contributing\n\nContributions are welcome.\n\n- See [CONTRIBUTING.md](./CONTRIBUTING.md) for setup, checks, and PR guidelines.\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famaduswaray%2Fshellql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famaduswaray%2Fshellql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famaduswaray%2Fshellql/lists"}