Skip to Content
Data LayerSearch & Explore

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:

SurfaceUsed for
The standalone route at /[tenantDomain]/exploreFull-screen browse dashboard — sidebar, results, and map. Auto-mounted per tenant.
The explore-section-block page-builder sectionA 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:

  • Formatcards or table. Cards are visual record listings; table is a spreadsheet-style view.
  • Card layoutgrid (cards in columns) or list (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.