# ProductRating — Seo Audit Tool Template Next.js

> Free seo audit tool template nextjs: ProductRating's live scanner interface, with five provider reports and a catalog workspace, under MIT.

- Price: free
- License: Free
- Version: 1.0.0
- Category: SaaS landing page
- Editions: React
- Dark mode: No
- Stack: Next.js >=15, React >=19, Tailwind CSS >=4
- Dependencies: `lucide-react`

## What's inside

- 7 pages
- 14 components
- 287 design tokens plus 0 dark overrides

## Pages

| Path | Sections |
| --- | --- |
| `/` | `scanner`, `discovery-particles`, `provider-overview`, `pricing`, `page-verification` |
| `/chatgpt` | `scanner`, `discovery-panel` |
| `/checklist` | `scanner` |
| `/pricing` | `scanner`, `pricing` |
| `/workspace` | `workspace-shell`, `catalog-intake`, `job-detail` |
| `/workspace/report` | `workspace-shell`, `job-detail` |
| `/workspace/billing` | `workspace-shell`, `billing-panel` |

## Components

| Name | What it renders |
| --- | --- |
| `scanner` | The whole public page: header, the URL form and its scanning, cancel and error states, the provider banner, the report with its three views, the field guide, the method and the footer |
| `discovery-particles` | The hero's canvas of small squares and stars morphing between commerce and search outlines, static under reduced motion and paused off screen |
| `provider-overview` | Five selectable provider cards with score or access state, the selected provider's priority findings, its evidence and its method, plus the provider field guide and the scoring dialog body |
| `discovery-panel` | The ChatGPT view: web search and merchant feed paths, observed points and coverage, priority fixes, the feed field table and the eight-step discovery playbook |
| `pricing` | The All Access button, the catalog prompt under the report and the pricing dialog body with its allowance explainer |
| `page-verification` | The page-consistency strip that compares structured facts with the visible page, when a report carries one |
| `workspace-shell` | The workspace header, the Catalogs and Billing sidebar, the allowance button and the session notices |
| `catalog-intake` | New catalog form: label, URL list or CSV upload, the accepted, duplicate and rejected preview, and the plan-gated start |
| `job-detail` | Catalog runs: the run list, progress, checked pages with recheck selection, grouped findings, cancel and remove, and the full-report inspector |
| `billing-panel` | The period's allowance with used, reserved and renewal figures, and the one plan with its terms and billing actions |
| `ui/ui` | The duotone icon, the focus-and-hover tooltip, the modal dialog with trapped focus, and the export popover |
| `ui/disclosure` | Native details and summary with interruptible height motion, opened by a matching URL hash |
| `ui/brand` | ProductRating's grid-and-spark mark and the two-weight wordmark |
| `ui/provider-icon` | The five LobeHub provider marks as local images |
## Design tokens

| Token | Light | Dark override |
| --- | --- | --- |
| `--background` | `#f6f8f1` |  |
| `--foreground` | `#26321f` |  |
| `--card` | `#ffffff` |  |
| `--card-foreground` | `#26321f` |  |
| `--primary` | `#d5f677` |  |
| `--primary-foreground` | `#2c391b` |  |
| `--secondary` | `#eef3e4` |  |
| `--secondary-foreground` | `#354b1f` |  |
| `--muted-foreground` | `#65705e` |  |
| `--accent` | `#e5f4ba` |  |
| `--accent-foreground` | `#354b1f` |  |
| `--border` | `#e1e6d9` |  |
| `--ring` | `#3e5a22` |  |
| `--radius` | `0.5625rem` |  |
| `--font-sans` | `var(--font-geist-sans), Arial, sans-serif` |  |
| `--font-mono` | `var(--font-geist-mono), monospace` |  |
| `--paper` | `#f6f8f1` |  |
| `--ink` | `#26321f` |  |
| `--muted` | `#65705e` |  |
| `--line` | `#e1e6d9` |  |
| `--green` | `#d5f677` |  |
| `--green-dark` | `#3e5a22` |  |
| `--white` | `#fff` |  |
| `--amber` | `#855c1a` |  |
| `--red` | `#a43e42` |  |
| `--ease` | `cubic-bezier(.22, 1, .36, 1)` |  |
| `--particle-ink` | `#456629` |  |
| `--pr-000` | `#000` |  |
| `--pr-17200f30` | `#17200f30` |  |
| `--pr-1d271c61` | `#1d271c61` |  |
| `--pr-1f2c1830` | `#1f2c1830` |  |
| `--pr-25311d06` | `#25311d06` |  |
| `--pr-25351d08` | `#25351d08` |  |
| `--pr-25351d17` | `#25351d17` |  |
| `--pr-26321f07` | `#26321f07` |  |
| `--pr-26321f08` | `#26321f08` |  |
| `--pr-26321f12` | `#26321f12` |  |
| `--pr-26321f22` | `#26321f22` |  |
| `--pr-27371903` | `#27371903` |  |
| `--pr-27371905` | `#27371905` |  |
| `--pr-27371908` | `#27371908` |  |
| `--pr-27371909` | `#27371909` |  |
| `--pr-283d1c08` | `#283d1c08` |  |
| `--pr-2c391b` | `#2c391b` |  |
| `--pr-2d3a1d` | `#2d3a1d` |  |
| `--pr-2d3b25` | `#2d3b25` |  |
| `--pr-31432207` | `#31432207` |  |
| `--pr-354b1f` | `#354b1f` |  |
| `--pr-40571e0a` | `#40571e0a` |  |
| `--pr-40571e10` | `#40571e10` |  |
| `--pr-40571e12` | `#40571e12` |  |
| `--pr-426424` | `#426424` |  |
| `--pr-4d6639` | `#4d6639` |  |
| `--pr-536246` | `#536246` |  |
| `--pr-536445` | `#536445` |  |
| `--pr-536b3d` | `#536b3d` |  |
| `--pr-557735` | `#557735` |  |
| `--pr-587438` | `#587438` |  |
| `--pr-5f7747` | `#5f7747` |  |
| `--pr-60704e` | `#60704e` |  |
| `--pr-638342` | `#638342` |  |
| `--pr-64705b` | `#64705b` |  |
| `--pr-648743` | `#648743` |  |
| `--pr-648846` | `#648846` |  |
| `--pr-667359` | `#667359` |  |
| `--pr-688944` | `#688944` |  |
| `--pr-69765e` | `#69765e` |  |
| `--pr-6a8748` | `#6a8748` |  |
| `--pr-6a9043` | `#6a9043` |  |
| `--pr-6b7c58` | `#6b7c58` |  |
| `--pr-6b8950` | `#6b8950` |  |
| `--pr-6c7663` | `#6c7663` |  |
| `--pr-6c8c4c` | `#6c8c4c` |  |
| `--pr-6c8d49` | `#6c8d49` |  |
| `--pr-6d7e5b` | `#6d7e5b` |  |
| `--pr-6d7f5a` | `#6d7f5a` |  |
| `--pr-6e7f5d` | `#6e7f5d` |  |
| `--pr-6e815e` | `#6e815e` |  |
| `--pr-6f393a` | `#6f393a` |  |
| `--pr-6f5a2d` | `#6f5a2d` |  |
| `--pr-70766c` | `#70766c` |  |
| `--pr-71805f` | `#71805f` |  |
| `--pr-719247` | `#719247` |  |
| `--pr-728162` | `#728162` |  |
| `--pr-72924c` | `#72924c` |  |
| `--pr-735d2f` | `#735d2f` |  |
| `--pr-738066` | `#738066` |  |
| `--pr-738263` | `#738263` |  |
| `--pr-738266` | `#738266` |  |
| `--pr-73944e` | `#73944e` |  |
| `--pr-748367` | `#748367` |  |
| `--pr-75905a` | `#75905a` |  |
| `--pr-788171` | `#788171` |  |
| `--pr-788270` | `#788270` |  |
| `--pr-789851` | `#789851` |  |
| `--pr-789852` | `#789852` |  |
| `--pr-795d24` | `#795d24` |  |
| `--pr-7a8c68` | `#7a8c68` |  |
| `--pr-7c876f` | `#7c876f` |  |
| `--pr-7d8b6d` | `#7d8b6d` |  |
| `--pr-7da04e` | `#7da04e` |  |
| `--pr-7ea446` | `#7ea446` |  |
| `--pr-809071` | `#809071` |  |
| `--pr-80996a` | `#80996a` |  |
| `--pr-809b58` | `#809b58` |  |
| `--pr-82a559` | `#82a559` |  |
| `--pr-84907a` | `#84907a` |  |
| `--pr-849575` | `#849575` |  |
| `--pr-85632f` | `#85632f` |  |
| `--pr-87907d` | `#87907d` |  |
| `--pr-87a363` | `#87a363` |  |
| `--pr-88967a` | `#88967a` |  |
| `--pr-899a76` | `#899a76` |  |
| `--pr-8a6725` | `#8a6725` |  |
| `--pr-8a9382` | `#8a9382` |  |
| `--pr-8b9d77` | `#8b9d77` |  |
| `--pr-8ba563` | `#8ba563` |  |
| `--pr-8caf63` | `#8caf63` |  |
| `--pr-9aae82` | `#9aae82` |  |
| `--pr-9ba492` | `#9ba492` |  |
| `--pr-9f34340a` | `#9f34340a` |  |
| `--pr-a0ba7a` | `#a0ba7a` |  |
| `--pr-aabf8f` | `#aabf8f` |  |
| `--pr-ab6b57` | `#ab6b57` |  |
| `--pr-acbe94` | `#acbe94` |  |
| `--pr-ad3c42` | `#ad3c42` |  |
| `--pr-aebaa2` | `#aebaa2` |  |
| `--pr-aecf54` | `#aecf54` |  |
| `--pr-b28b3d` | `#b28b3d` |  |
| `--pr-b34f51` | `#b34f51` |  |
| `--pr-b49a5b` | `#b49a5b` |  |
| `--pr-b4d078` | `#b4d078` |  |
| `--pr-b6c7a2` | `#b6c7a2` |  |
| `--pr-b8c9a4` | `#b8c9a4` |  |
| `--pr-bb6761` | `#bb6761` |  |
| `--pr-bbc8aa` | `#bbc8aa` |  |
| `--pr-bdcbaa` | `#bdcbaa` |  |
| `--pr-bfdf67` | `#bfdf67` |  |
| `--pr-c54c52` | `#c54c52` |  |
| `--pr-c5e671` | `#c5e671` |  |
| `--pr-c69b43` | `#c69b43` |  |
| `--pr-c7ed65` | `#c7ed65` |  |
| `--pr-c8ed69` | `#c8ed69` |  |
| `--pr-cad5bd` | `#cad5bd` |  |
| `--pr-cb8b84` | `#cb8b84` |  |
| `--pr-cbed9235` | `#cbed9235` |  |
| `--pr-cbed9240` | `#cbed9240` |  |
| `--pr-cfd8c4` | `#cfd8c4` |  |
| `--pr-cfdac1` | `#cfdac1` |  |
| `--pr-d0e29e` | `#d0e29e` |  |
| `--pr-d4dfc455` | `#d4dfc455` |  |
| `--pr-d5e2c5` | `#d5e2c5` |  |
| `--pr-d5f677` | `#d5f677` |  |
| `--pr-d5f677a0` | `#d5f677a0` |  |
| `--pr-d6dec9` | `#d6dec9` |  |
| `--pr-d6dfcb` | `#d6dfcb` |  |
| `--pr-d6e0c9` | `#d6e0c9` |  |
| `--pr-d7e1ca` | `#d7e1ca` |  |
| `--pr-d8e0ce` | `#d8e0ce` |  |
| `--pr-d8e4c8` | `#d8e4c8` |  |
| `--pr-d9e1ce` | `#d9e1ce` |  |
| `--pr-d9e1cf` | `#d9e1cf` |  |
| `--pr-dae3cf` | `#dae3cf` |  |
| `--pr-daeda6` | `#daeda6` |  |
| `--pr-dbe3d2` | `#dbe3d2` |  |
| `--pr-dbe5ce` | `#dbe5ce` |  |
| `--pr-dce4d2` | `#dce4d2` |  |
| `--pr-dce4d3` | `#dce4d3` |  |
| `--pr-dce5ce` | `#dce5ce` |  |
| `--pr-dce5d0` | `#dce5d0` |  |
| `--pr-dce6cf` | `#dce6cf` |  |
| `--pr-dde4d4` | `#dde4d4` |  |
| `--pr-dde5d3` | `#dde5d3` |  |
| `--pr-dee6d3` | `#dee6d3` |  |
| `--pr-dee8d1` | `#dee8d1` |  |
| `--pr-dfb2af` | `#dfb2af` |  |
| `--pr-dfe7d5` | `#dfe7d5` |  |
| `--pr-dfe8d0` | `#dfe8d0` |  |
| `--pr-e0e6d7` | `#e0e6d7` |  |
| `--pr-e0e8d4` | `#e0e8d4` |  |
| `--pr-e0e9d1` | `#e0e9d1` |  |
| `--pr-e1e6d9` | `#e1e6d9` |  |
| `--pr-e1e6da` | `#e1e6da` |  |
| `--pr-e1e7d8` | `#e1e7d8` |  |
| `--pr-e1e9d5` | `#e1e9d5` |  |
| `--pr-e2e6dc` | `#e2e6dc` |  |
| `--pr-e2e7da` | `#e2e7da` |  |
| `--pr-e3dfc9` | `#e3dfc9` |  |
| `--pr-e4e9dd` | `#e4e9dd` |  |
| `--pr-e4ead9` | `#e4ead9` |  |
| `--pr-e4eadb` | `#e4eadb` |  |
| `--pr-e4eadc` | `#e4eadc` |  |
| `--pr-e4edd7` | `#e4edd7` |  |
| `--pr-e5c9c7` | `#e5c9c7` |  |
| `--pr-e5eadc` | `#e5eadc` |  |
| `--pr-e5f4ba` | `#e5f4ba` |  |
| `--pr-e6ecde` | `#e6ecde` |  |
| `--pr-e6edda` | `#e6edda` |  |
| `--pr-e7ddc1` | `#e7ddc1` |  |
| `--pr-e7ebde` | `#e7ebde` |  |
| `--pr-e7ebdf` | `#e7ebdf` |  |
| `--pr-e7ebe1` | `#e7ebe1` |  |
| `--pr-e7f4f4` | `#e7f4f4` |  |
| `--pr-e9eedf` | `#e9eedf` |  |
| `--pr-e9eee2` | `#e9eee2` |  |
| `--pr-eaf1de` | `#eaf1de` |  |
| `--pr-eaf4fb` | `#eaf4fb` |  |
| `--pr-ebcfcb` | `#ebcfcb` |  |
| `--pr-ebf2de` | `#ebf2de` |  |
| `--pr-ecd3d1` | `#ecd3d1` |  |
| `--pr-ecdedd` | `#ecdedd` |  |
| `--pr-edf0e8` | `#edf0e8` |  |
| `--pr-edf1e7` | `#edf1e7` |  |
| `--pr-edf2e5` | `#edf2e5` |  |
| `--pr-edf3e3` | `#edf3e3` |  |
| `--pr-edf4e1` | `#edf4e1` |  |
| `--pr-eef2e7` | `#eef2e7` |  |
| `--pr-eef2e8` | `#eef2e8` |  |
| `--pr-eef2e9` | `#eef2e9` |  |
| `--pr-eef3e4` | `#eef3e4` |  |
| `--pr-eef4e3` | `#eef4e3` |  |
| `--pr-eef5e5` | `#eef5e5` |  |
| `--pr-eef5e6` | `#eef5e6` |  |
| `--pr-eff2e9` | `#eff2e9` |  |
| `--pr-eff5df` | `#eff5df` |  |
| `--pr-f0d6cf` | `#f0d6cf` |  |
| `--pr-f0d6d4` | `#f0d6d4` |  |
| `--pr-f0f2eb` | `#f0f2eb` |  |
| `--pr-f0f3ea` | `#f0f3ea` |  |
| `--pr-f0f4fb` | `#f0f4fb` |  |
| `--pr-f0f5e5` | `#f0f5e5` |  |
| `--pr-f0f5e6` | `#f0f5e6` |  |
| `--pr-f0f6e5` | `#f0f6e5` |  |
| `--pr-f1f1ed` | `#f1f1ed` |  |
| `--pr-f1f4eb` | `#f1f4eb` |  |
| `--pr-f1f5e9` | `#f1f5e9` |  |
| `--pr-f1f5eb` | `#f1f5eb` |  |
| `--pr-f1f6e7` | `#f1f6e7` |  |
| `--pr-f1f6e9` | `#f1f6e9` |  |
| `--pr-f2f5ed` | `#f2f5ed` |  |
| `--pr-f2f6eb` | `#f2f6eb` |  |
| `--pr-f2f7e9` | `#f2f7e9` |  |
| `--pr-f3f6ec` | `#f3f6ec` |  |
| `--pr-f3f7eb` | `#f3f7eb` |  |
| `--pr-f3f8e9` | `#f3f8e9` |  |
| `--pr-f4f6f0` | `#f4f6f0` |  |
| `--pr-f4f8eb` | `#f4f8eb` |  |
| `--pr-f4f8ec` | `#f4f8ec` |  |
| `--pr-f5f8ee` | `#f5f8ee` |  |
| `--pr-f5f8ef` | `#f5f8ef` |  |
| `--pr-f5f9eb` | `#f5f9eb` |  |
| `--pr-f5f9ed` | `#f5f9ed` |  |
| `--pr-f6f0df` | `#f6f0df` |  |
| `--pr-f6f9ef` | `#f6f9ef` |  |
| `--pr-f6f9f0` | `#f6f9f0` |  |
| `--pr-f7faef` | `#f7faef` |  |
| `--pr-f7faf0` | `#f7faf0` |  |
| `--pr-f7faf1` | `#f7faf1` |  |
| `--pr-f8faef` | `#f8faef` |  |
| `--pr-f8faf3` | `#f8faf3` |  |
| `--pr-f8faf4` | `#f8faf4` |  |
| `--pr-f9fbf5` | `#f9fbf5` |  |
| `--pr-f9fbf6` | `#f9fbf6` |  |
| `--pr-fae9e7` | `#fae9e7` |  |
| `--pr-faf2dd` | `#faf2dd` |  |
| `--pr-faf2df` | `#faf2df` |  |
| `--pr-fafbf7` | `#fafbf7` |  |
| `--pr-fafcf6` | `#fafcf6` |  |
| `--pr-fafcf7` | `#fafcf7` |  |
| `--pr-fbefe9` | `#fbefe9` |  |
| `--pr-fbf8ed` | `#fbf8ed` |  |
| `--pr-fcf0ee` | `#fcf0ee` |  |
| `--pr-fcf0ef` | `#fcf0ef` |  |
| `--pr-fcf9ef` | `#fcf9ef` |  |
| `--pr-fcfaf2` | `#fcfaf2` |  |
| `--pr-fcfdf9` | `#fcfdf9` |  |
| `--pr-fdfefb` | `#fdfefb` |  |
| `--pr-fff` | `#fff` |  |
| `--pr-fff1ee` | `#fff1ee` |  |
| `--pr-fff2ef` | `#fff2ef` |  |
| `--pr-fff2f1` | `#fff2f1` |  |
| `--pr-fff4f2` | `#fff4f2` |  |
| `--pr-fff7f6` | `#fff7f6` |  |
| `--pr-fff8f6` | `#fff8f6` |  |
| `--pr-fff9f7` | `#fff9f7` |  |
| `--pr-ffffff75` | `#ffffff75` |  |
| `--pr-rgba-255-255-255-_68` | `rgba(255,255,255,.68)` |  |
## Use it

- Registry: `bunx shadcn add https://tailthemes.com/r/productrating.json`
- MCP: [https://tailthemes.com/api/mcp](https://tailthemes.com/api/mcp)
- Download: [https://tailthemes.com/api/download/productrating](https://tailthemes.com/api/download/productrating)

## Links

- Product page: [https://tailthemes.com/themes/productrating](https://tailthemes.com/themes/productrating)
- Live preview: [https://tailthemes.com/preview/productrating](https://tailthemes.com/preview/productrating)
- Docs: [https://tailthemes.com/docs/productrating](https://tailthemes.com/docs/productrating)
- Manifest JSON: [https://tailthemes.com/api/themes/productrating](https://tailthemes.com/api/themes/productrating)
- Registry item: [https://tailthemes.com/r/productrating.json](https://tailthemes.com/r/productrating.json)
