# Overview

> Findlane is hosted product search for online stores. Upload your catalog from your server, then search it from your storefront with typo tolerance, facets, filters, and sorting.

## How it works

1. **Upload your catalog.** Your server sends product records to an index with a secret API key, using [`@findlane/server`](/docs/server-sdk.md) or the [HTTP API](/docs/api.md). Writes are searchable as soon as they return.
2. **Choose how it searches.** Pick the fields to search and how much each counts, and the fields shoppers can filter, facet, and sort by. You can change them at any time, and the index keeps serving searches while a change applies.
3. **Search from the storefront.** The browser calls the index with its public ID, using [`@findlane/browser`](/docs/browser-sdk.md). Only origins you allow can use it.

## Concepts

| Term          | What it is                                                                                                                                                  |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Workspace** | Your team's account: its members, API keys, indexes, and plan.                                                                                              |
| **Index**     | A searchable collection of records, such as a store's products, with its own settings. A workspace can have several, for example one per store or language. |
| **Record**    | A JSON object with a string `objectID`: one product, with the fields you want to search, filter, show, or sort by.                                          |
| **API key**   | A secret for your server. It has the `search` scope, the `write` scope, or both, and can be limited to one index.                                           |
| **Public ID** | An index's ID for browser search (`pub_…`). It is public by design: it can only search, only its own index, and only from allowed origins.                  |

## Where to start

- [Quick start](/docs/quick-start.md): upload a catalog and search it from a page, in about ten minutes.
- [Records](/docs/records.md): what a record looks like, and keeping records in sync with your store.
- [Search settings](/docs/settings.md): searchable fields, facets, filters, sorts, ranking, and synonyms.
- [Searching](/docs/search.md): queries, filters, facets, paging, and highlighting.
- [Security](/docs/security.md): API keys, public IDs, and what browser search exposes.

## Packages

| Package                                  | Runs in                                   | Authenticates with   |
| ---------------------------------------- | ----------------------------------------- | -------------------- |
| [`@findlane/server`](/docs/server-sdk.md)   | Node.js 18+, Bun, Deno, and edge runtimes | A workspace API key  |
| [`@findlane/browser`](/docs/browser-sdk.md) | Browsers                                  | An index's public ID |

Both are small, typed, and have no dependencies. From other languages, call the [HTTP API](/docs/api.md) directly.

## Use with AI assistants

Every page is also plain Markdown: add `.md` to its address, as in [/docs/quick-start.md](/docs/quick-start.md), or use **Copy page** at the top. For coding assistants and other LLM tools:

- [/llms.txt](/llms.txt) lists every page with a one-line summary, following the [llms.txt convention](https://llmstxt.org).
- [/llms-full.txt](/llms-full.txt) has all the docs in one file, to attach or paste as context.
