MeiliFinder is a beautiful and fast terminal-based Meilisearch client built with Rust 🦀 and Ratatui.
Meilisearch is great; but there is no official client available for it. While there are some community-built clients, they are mostly web-based and lack important features. If you are a terminal lover like me or hate mouse, you may want to use a terminal-based client to interact with Meilisearch. That's where MeiliFinder comes in. It is fast, robust, lightweight, and easy to use. It is also open-source, so you can contribute to the project and make it better.
- Search for documents
- Search for documents with sort and filters queries
- Search for documents with pagination
- Delete individual documents
- Bulk delete documents by filter
- Connect to multiple Meilisearch instances
- edit documents
- update index settings
- Switch between indexes and instances on the fly
- Tasks preview
- settings.json file for customizing the app
- Toast notifications
Clone the repository and run cargo run
in the root directory.
In case you don't have an instances.json
file in the root directoty, it will prompt you to enter the Meilisearch instance URL and the API key. Once you enter the details, the app will save the info in a new instances.json
file, and you can start searching for documents.
To exit the app, press q
or Ctrl+C
.
tab
- Switch between different tabs in the app.r
- Refresh current list.s
- Go to Search mode (insert search queries).Up/Down
- Navigate through the current list.Enter
- Select the current index/instance.Space
- Quick preview of the highlighted document.Ctrl+u
- Reset all search queries.q
- Quit the app.Ctrl+C
- Quit the app.
Esc
- Exit search mode.tab
- Navigate through search/filter/sort queries.Enter
- Perform search.
Esc
- Exit preview mode.backspace
- Go to Delete mode.
Esc
- Exit delete mode.backspace
- Confirm delete.
The instances.json
file is a JSON file that stores the Meilisearch instance URL and the API key. The app uses this file to connect to the Meilisearch instance. You can add multiple instances to the file and switch between them on the fly.
The file should look like this:
[
{
"id": "1",
"name": "Your Meilisearch Instance Name",
"host": "https://your-Meilisearch-instance.com",
"primary_key": "your-api-key"
}
]
Please refer to the sample sample.instances.json
file in the root directory. You can rename it to instances.json
and add your Meilisearch instance details to it.
To run it globally, you can install the app with cargo binstall MeiliFinder
. Make sure you have binstall
binstall repo installed. Once installed, you can invoke the app just by running MeiliFinder
in the terminal.
This is a binary crate and not a library, so you shouldn't use it as a dependency.
I might provide some pre-built binaries for Windows/MacOS/Linux in the future, or publish it on Homebrew / Winget.
- Meilisearch for providing the Rust SDK.
- Ratatui for the beautiful TUI framework.
MIT
Currently, the app only handles ASCII or 1 byte UTF-8 character input. If you are typing a non-ASCII character (i.e. "ö", "ß" etc.), the app will ignore the input.