ProjectSearch Infrastructure · 2024
Typesense Dashboard
A production-ready control plane for managing Typesense collections, search behavior, migrations, and cluster health from one focused interface.
- Next.js 16
- TypeScript
- Typesense
- shadcn/ui
- Tailwind CSS v4
- React Hook Form
- Zod
- Vitest
- Monaco Editor
- Recharts
Search Infrastructure · Project
The Problem
Typesense is fast and developer-friendly. Operating it still meant jumping between API docs, curl commands, Postman, and handwritten JSON whenever I needed to test a query, change a schema, or inspect cluster health.
I wanted the speed of a direct API with the confidence of a purpose-built interface.

One Control Plane
Typesense Dashboard brings the daily search workflow into one browser-based workspace. It covers the operations that usually get scattered across several tools:
- Build collections and edit schemas
- Browse, import, and update documents
- Tune synonyms, overrides, stopwords, and presets
- Test search behavior and inspect cluster health
The interface keeps the API visible enough for developers while giving risky operations clearer context and safer defaults.
Version-Aware UX
Typesense capabilities change between server releases. Showing every control to every user would create dead ends, so the dashboard detects the connected version and adapts the navigation before an unsupported request can happen.
const featureVersions = {
stopwords: '27.0',
searchPresets: '27.1',
conversational: '28.0',
} as const;
Older clusters get a focused interface. New capabilities appear naturally after an upgrade. Compatibility becomes part of the experience instead of an error message.
VS Code, On Demand
JSON is the working surface for documents and schemas, so a basic textarea was not enough. I embedded Monaco Editor for syntax highlighting and familiar editing behavior, then loaded it only when the user opens an editor.
const MonacoEditor = dynamic(() => import('@monaco-editor/react'), {
ssr: false,
loading: () => <EditorSkeleton />,
});
The result keeps the first visit lightweight without compromising the task that benefits most from a real code editor.
Safer Schema Changes
Changing a live search schema should feel deliberate, not dangerous. The dashboard turns Typesense collection aliases into a guided blue-green deployment flow:
- Create a new version of the collection
- Reindex data against the updated schema
- Validate the replacement collection
- Atomically move the production alias
The previous collection remains available for rollback, so the user always understands what changes and how to recover.
A Search Lab
The search playground is designed for iteration. Queries update in place while parameters, timing, hit counts, and result details stay in the same visual context.
- Adjust
query_by, filters, and sort order without rebuilding a request - Inspect typo handling and individual result scores
- Compare relevance changes as configuration evolves
- Copy the final query as a curl command for debugging or handoff
It turns search tuning from a sequence of disconnected requests into a visible feedback loop.
Operations in Context
Cluster health, node status, memory, disk, cache operations, and snapshots live next to the resources they affect. Connection failures also have a dedicated recovery path instead of collapsing the whole application.
The dashboard can build without a running Typesense instance, validates a connection at runtime, and gives the user a clear way to retry or update configuration.
What Changed
This project changed how I think about developer tools. The best interface does not hide the underlying system. It reveals the right amount of it at the moment a decision is being made.
Version awareness removed avoidable errors. Lazy loading protected the first visit. Guided migrations made a powerful API safer. Each decision is small on its own, but together they make infrastructure work feel calm.
Explore It
The dashboard is open source and works with Typesense Cloud or a self-hosted cluster. Open the live dashboard or review the implementation on GitHub.
Next projectIndependent project