A browser tool for validating and previewing IIIF manifests. Load a single URL or a CSV registry, validate against the IIIF Presentation API, browse your collection as a gallery, and open any manifest in Mirador 3.
| Layer | Tech |
|---|---|
| Framework | React 18 + Vite 5 |
| Viewer | Mirador 3 (CDN) |
| Validator | presentation-validator.iiif.io |
| Hosting | Vercel |
npm install
npm run devOpen http://localhost:5173.
npm install -g vercel
vercelFollow the prompts. Vercel auto-detects Vite; no extra config needed beyond vercel.json (already included).
- Push this repo to GitHub
- Go to vercel.com/new → Import repository
- Framework preset: Vite
- Build command:
npm run build - Output directory:
dist - Click Deploy
parent_collection,name,iiif_link
Medieval Manuscripts,Book of Hours,https://example.org/boh/manifest.json
Medieval Manuscripts,Psalter,https://example.org/psalter/manifest.json
Maps,World Map 1540,https://example.org/maps/manifest.jsonSupported column aliases:
| Field | Accepted names |
|---|---|
| Name | name, title, label, item name |
| URL | iiif_link, manifest, manifest_url, url, iiif, link |
| Group | parent_collection, collection, group, parent |
trypl/
├── public/
│ └── favicon.svg
├── src/
│ ├── components/
│ │ ├── JsonRain.jsx # animated left panel
│ │ ├── MiradorViewer.jsx # Mirador 3 wrapper
│ │ └── Sidebar.jsx # shared manifest tree sidebar
│ ├── hooks/
│ │ └── useItems.js # central state: items, validate, load
│ ├── pages/
│ │ ├── Home.jsx # landing + input
│ │ ├── Validator.jsx # results list
│ │ ├── Gallery.jsx # thumbnail grid
│ │ └── Viewer.jsx # Mirador viewer
│ ├── App.jsx # router + nav
│ ├── iiif.js # IIIF utils + CSV parser
│ ├── styles.js # all CSS as a JS string
│ ├── index.css # minimal reset
│ └── main.jsx # entry point
├── index.html
├── vite.config.js
├── vercel.json
└── package.json
- The IIIF Validator API is a public service; no API key required.
- Mirador 3 is loaded from jsDelivr CDN at runtime (not bundled).
- All state is in-memory; nothing is persisted between sessions.