---
title: "Harbor photo archive · Sanity × Nuxt UI"
description: "Ten thousand historical photos, tagged and searchable, with a public gallery built from collections."
canonical_url: "https://sanity-nuxtui.vercel.app/projects/harbor-archive"
meta:
  "og:description": "Ten thousand historical photos, tagged and searchable, with a public gallery built from collections."
  "og:image": "https://cdn.sanity.io/images/kdwtvkc2/production/2c51e3a4cab7ddea412dc33f31fd253479bbba08-1600x1067.jpg?fit=crop&w=1200&h=630&auto=format"
  "og:image:alt": "Photo by Jay Ruzesky"
  "og:image:height": "630"
  "og:image:width": "1200"
  "og:title": "Harbor photo archive · Sanity × Nuxt UI"
---

> Index of every page on this site: [llms.txt](https://sanity-nuxtui.vercel.app/llms.txt)

[Projects](https://sanity-nuxtui.vercel.app/projects)·May 20, 2026

# **Harbor photo archive**

Ten thousand historical photos, tagged and searchable, with a public gallery built from collections.

![Photo by Jay Ruzesky](https://cdn.sanity.io/images/kdwtvkc2/production/2c51e3a4cab7ddea412dc33f31fd253479bbba08-1600x1067.jpg?w=2400&h=1600&auto=format)<dl>

<dt>Client</dt>
<dd>**Harbor Museum**</dd>

<dt>Year</dt>
<dd>**2025–2026**</dd>

<dt>Role</dt>
<dd>**Migration &amp; frontend**</dd></dl>

The museum kept its photo archive in spreadsheets and shared folders. We migrated it to Sanity, added hotspots for cropping, and published a gallery for each decade.

Tags: [archive](https://sanity-nuxtui.vercel.app/projects?tag=archive) [website](https://sanity-nuxtui.vercel.app/projects?tag=website)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://sanity-nuxtui.vercel.app/#website","@type":"WebSite","name":"Sanity × Nuxt UI","url":"https://sanity-nuxtui.vercel.app/","publisher":{"@id":"https://sanity-nuxtui.vercel.app/#identity"}},{"@id":"https://sanity-nuxtui.vercel.app/projects/harbor-archive#webpage","@type":"WebPage","dateModified":"2026-10-16T00:42:53Z","datePublished":"2026-05-20T09:00:00Z","description":"Ten thousand historical photos, tagged and searchable, with a public gallery built from collections.","name":"Harbor photo archive","url":"https://sanity-nuxtui.vercel.app/projects/harbor-archive","isPartOf":{"@id":"https://sanity-nuxtui.vercel.app/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://sanity-nuxtui.vercel.app/projects/harbor-archive"]}]},{"@id":"https://sanity-nuxtui.vercel.app/#identity","@type":"Organization","name":"Sanity × Nuxt UI","url":"https://sanity-nuxtui.vercel.app"},{"@id":"https://sanity-nuxtui.vercel.app/projects/harbor-archive#article","@type":"Article","dateModified":"2026-10-16T00:42:53Z","datePublished":"2026-05-20T09:00:00Z","description":"Ten thousand historical photos, tagged and searchable, with a public gallery built from collections.","headline":"Harbor photo archive","inLanguage":"en","thumbnailUrl":"https://cdn.sanity.io/images/kdwtvkc2/production/2c51e3a4cab7ddea412dc33f31fd253479bbba08-1600x1067.jpg?w=1200&auto=format","author":{"@id":"https://sanity-nuxtui.vercel.app/#identity"},"image":{"@id":"https://sanity-nuxtui.vercel.app/#/schema/image/1"},"isPartOf":{"@id":"https://sanity-nuxtui.vercel.app/projects/harbor-archive#webpage"},"mainEntityOfPage":{"@id":"https://sanity-nuxtui.vercel.app/projects/harbor-archive#webpage"},"publisher":{"@id":"https://sanity-nuxtui.vercel.app/#identity"}},{"@id":"https://sanity-nuxtui.vercel.app/#/schema/image/1","@type":"ImageObject","contentUrl":"https://cdn.sanity.io/images/kdwtvkc2/production/2c51e3a4cab7ddea412dc33f31fd253479bbba08-1600x1067.jpg?w=1200&auto=format","inLanguage":"en","url":"https://cdn.sanity.io/images/kdwtvkc2/production/2c51e3a4cab7ddea412dc33f31fd253479bbba08-1600x1067.jpg?w=1200&auto=format"}]}
```

## Sitemap

See the full [sitemap](https://sanity-nuxtui.vercel.app/sitemap.md) for all pages.
