Search & Explore
Once records are in, a complete browse surface ships out of the box: a per-tenant search index, faceted sidebar, search bar, sort, and pagination — all driven by the DataSchema annotations.
Two surfaces, one engine
The same browse experience shows up in two places, both backed by the same per-tenant index:
| Surface | Used for |
|---|---|
The standalone route at /[tenantDomain]/explore | Full-screen browse dashboard — sidebar, results, and map. Auto-mounted per tenant. |
The explore-section-block page-builder section | A contained records listing you can drop into any page via the page builder or shipmore page build. |
Display options
The same data renders in a few structurally different ways. You choose how it renders; the facets, search, sort, and pagination come along regardless:
- Format —
cardsortable. Cards are visual record listings; table is a spreadsheet-style view. - Card layout —
grid(cards in columns) orlist(stacked rows), with a column ceiling for grids that steps down automatically as the surface narrows. - Card style — auto (the platform fills/borders cards when the schema has no image or logo), or force bordered / flush.
- Map — auto (shown only when records carry geo coordinates), always on, or off.
The project’s shape sets the default format on the standalone /explore dashboard: a data-platform shape (research / data DB) opens as a sortable table, while directory and asset-library shapes open as cards — a multi-column grid, or a list alongside the map when records carry geo coordinates. Set it at apply time with shipmore schema apply --shape <value> (server default: directory). The page-builder explore-section-block exposes the per-placement options above so you can override the default on any page.
Detail pages
Every record has a public detail page at /[tenantDomain]/explore/[slug]. One template handles every archetype by reading the schema — it assembles a hero, header, descriptive copy, a facts table, an “at a glance” sidebar, and a map embed (only when the record carries geo coordinates) from the roles and annotations you tagged. JSON-LD is auto-emitted per record.
Same template, different content per archetype.
What gets indexed
Search and filtering cover the fields you mark searchable (full-text) and facetable (filters) in the schema — everything else stays on the detail page only. Indexing is per-tenant: one tenant’s data never appears in another’s results.
For very large datasets you can point the search layer at a hosted search engine without changing how the rest of the app works.
Premium columns
Any field can be marked premium in the schema to gate its value behind a subscription. On /explore, non-subscribers see the column locked — the cell is blurred with an upgrade call-to-action, and the value, its facet, and any sort over it are redacted server-side (never sent to the browser). A viewer with an active subscription sees the real values. Identity and discovery columns stay free so the catalog remains browseable; premium gates only the differentiators you sell, as a rule over the schema — no per-record curation. See Features → Monetization for the subscription side.
Reindexing
There’s no separate reindex step:
shipmore schema apply --tenant <domain> --fields-file …Re-applying the schema after changing searchable, facetable, or field types picks up the change, and importing new rows keeps search in sync automatically.
SEO
- Sitemap entries auto-generated for every published record at
/[tenantDomain]/explore/[slug]. - JSON-LD per record on the detail page, plus collection-level structured data on the archive.
- Per-tenant sitemaps are included in the site’s sitemap config.
See Features → Content for the broader page builder context.