A Typesense Dashboard to manage and browse collections.
A side project to test the Typesense API and Quasar with electron.
As a web application, only typesense server started with --enable-cors will work.
Use https://bfritscher.github.io/typesense-dashboard/ or build and install on your own server
When using in your browser from an https address your server must also be behind SSL. Or you will get a MixedContent Network Error. (You might allow mix content in your browser, but this is not recommended).
self-host this dashboard with docker* (web version has some limitations import/export size of files)
use environment variable PUBLIC_PATH if you need something else than /
Example usage:
$ docker build -t typesense-dashboard .
$ docker run -d -p 80:80 typesense-dashboardcaddy is used for serving the actual files.
One could also copy /srv from the final Docker Image into another:
FROM alpine
COPY --from=typesense-dashboard /srv /typesense-dashboardTo build and serve from a subfolder /example (must start with /)
docker build --build-arg=PUBLIC_PATH=/example -t typesense-dashboard .You can also use the pre-built docker image for example like this:
docker run -d -p 80:80 ghcr.io/bfritscher/typesense-dashboard:latestYou can enable auto-login by mapping a config.json file to /srv/config.json in the container.
docker run -d -p 80:80 -v /path/to/config.json:/srv/config.json typesense-dashboardSample config.json (same data as saved in localStorage of the browser). A sample configuration file is available at config.json.sample in the project root.
{
"apiKey": "xyz",
"node": {
"host": "somehost",
"port": "443",
"protocol": "https",
"path": "",
"tls": true
},
"ui": {
"hideProjectInfo": false
},
"history": [
{
"apiKey": "abc",
"node": {
"host": "anotherhost",
"port": "80",
"protocol": "http",
"path": "",
"tls": false
}
},
{
"apiKey": "def",
"node": {
"host": "yetanotherhost",
"port": "8080",
"protocol": "http",
"path": "",
"tls": true
},
"clusterTag": "dev-cluster"
}
]
}The history is used to populate the client history to act as bookmarks.
The ui section allows you to customize the dashboard interface:
hideProjectInfo: Set totrueto hide the project information section (version, GitHub link, and issue tracker) from the navigation menu. Default isfalse.
The Cluster Status page lets you see multiple Typesense nodes side-by-side and poll their status in parallel. Each node card shows:
- Node URL and version
- Role with emphasis (Leader/Follower)
- Memory and Disk usage
- Typesense memory metrics (eg, typesense_* metrics)
- System Network Rx/Tx
- Stats (if enabled on the node)
How it works:
- The navigation entry for Cluster Status appears only when the currently connected node belongs to a cluster.
- Nodes are associated to a cluster using an optional
clusterTagfield embedded in each login history entry. - Nodes are displayed in a stable order (host, then port, then protocol), and the current node is highlighted. You can switch to another node directly from its card.
Ways to define clusters:
- In the UI: tag any saved server entry (from the server history popover) with a text tag. The tag input autocompletes existing tags and accepts new values.
- In
config.json: pre-populate history entries with an optionalclusterTagto group them. If a history entry omitsclusterTag, it is not part of any cluster. The Cluster Status page is shown only when the currently connected node has aclusterTag.
With the desktop application everything except instant search will work without cors. To export or import large json or jsonl files, desktop version is required, because the browser version times out.
Download from the release page or build your own.
App cannot be started by clicking on it, on Nautilus*
Make it executable and then you can run it from command line.
./'Typesense-Dashboard'
- API features not yet implemented:
- create Snapshot
- delete by query
- Scoped Search Key generation
yarnquasar dev
quasar dev -m electron --devtoolsyarn lint
# or
npm run lintyarn format
# or
npm run formatquasar build
quasar build --mode electron --target all









