Skip to content

feat: add starter templates gallery#343

Open
bntvllnt wants to merge 5 commits into
mainfrom
feat/259-templates
Open

feat: add starter templates gallery#343
bntvllnt wants to merge 5 commits into
mainfrom
feat/259-templates

Conversation

@bntvllnt
Copy link
Copy Markdown
Collaborator

@bntvllnt bntvllnt commented May 12, 2026

Summary

  • Add /templates and /templates/[slug] routes for five starter kits: next-starter, dashboard, saas, ai-chat, and docs-site.
  • Add shared template metadata, screenshots, README/template manifests under templates/<slug>/, SoftwareApplication JSON-LD, sitemap entries, and llms.txt/llms-full.txt template sections.
  • Link templates from the home hero, header/sidebar navigation, and the shadcn comparison page.
  • Fix empty alt="" on template screenshot images (detail page + gallery) — now "{title} template screenshot".
  • Drop the "Live demo" CTA from the detail page sidebar; demoUrl values were self-referential (pointed at the registry's own template detail page). The field is preserved in the data model for future wiring. The "GitHub source" button remains.
  • Remove install-action output from template JSON-LD — no supported template install endpoint or CLI exists yet.

Validation

  • Targeted stale-copy scan: no tracked apps/registry or templates source matches for create-vllnt-app, --template, installUrl, Live demo, or template install commands.
  • pnpm -F @vllnt/ui-registry exec tsc --noEmit --project tsconfig.json
  • pnpm -F @vllnt/ui lint
  • pnpm -F @vllnt/ui exec tsc --noEmit --project tsconfig.build.json
  • pnpm build
  • pnpm test:once
  • git diff --check
  • GitHub checks for current head are green.

Notes: templates are presented as source to copy/adapt until a supported template CLI exists. pnpm build still emits the known Next.js multiple-lockfile worktree warning. pnpm test:once still emits existing jsdom navigation, ShareDialog description, and InteractiveTimeline duplicate-key warnings while passing all tests.

Closes #259

@bntvllnt bntvllnt added documentation Improvements or additions to documentation enhancement New feature or request discoverability Site/library discoverability labels May 12, 2026
@bntvllnt bntvllnt self-assigned this May 12, 2026
Comment thread apps/registry/lib/templates.ts Outdated
}

export function getTemplateInstallCommand(template: Template): string {
return `pnpm dlx create-vllnt-app@latest --template ${template.slug}`;
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This helper now publishes --template ${template.slug} to the template page, llms surfaces, and template READMEs/metadata, but several of the new gallery slugs are not accepted by the current scaffolder. create-vllnt-app supports presets/aliases such as saas, dashboard, docs, web, mobile, and fullstack; it does not support next-starter, ai-chat, or docs-site, and npm view create-vllnt-app@latest currently returns E404. That makes the primary install command on the new public template pages fail for users/agents.

Comment thread apps/registry/lib/templates.ts Outdated
"ai-source-citation",
"ai-streaming-text",
"ai-tool-call-display",
"conversation-thread",
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

conversation-thread is not in apps/registry/registry.json (nor anywhere else in apps/registry), but the template detail page renders each component as /components/${component}. This publishes a dead /components/conversation-thread link from /templates/ai-chat; please either add the component to the registry or replace this slug with the existing component that represents the conversation surface.

@bntvllnt
Copy link
Copy Markdown
Collaborator Author

Review outcome: REQUEST_CHANGES (blocking)

I found two blockers in the template gallery as currently shipped:

  1. The published install command is not executable for most advertised templates. getTemplateInstallCommand() emits pnpm dlx create-vllnt-app@latest --template ${template.slug} for every template, and that string is reused on the template gallery/detail pages, llms.txt, llms-full.txt, and each template metadata/README. The current create-vllnt-app CLI only recognizes presets/aliases such as saas, dashboard, docs, web, mobile, and fullstack; it does not recognize next-starter, ai-chat, or docs-site. I also checked npm and create-vllnt-app@latest currently returns E404. If this deploys, the public template pages and agent surfaces instruct users/agents to run commands that fail before scaffolding anything.

  2. The AI Chat template links to a non-existent component page. Its component list includes conversation-thread, and the detail page renders every component as /components/${component}. conversation-thread is not present in apps/registry/registry.json and does not appear anywhere else in apps/registry, so /templates/ai-chat will publish a dead /components/conversation-thread link.

Validation performed:

  • GitHub PR state: open, non-draft, mergeStateStatus CLEAN, all reported checks successful at head 1380872e960fecae7c5f75e5f2495e8ed350b10b.
  • pnpm --filter @vllnt/ui-registry build: pass after linking the existing main checkout node_modules into the detached review worktree; generated registry mutation was reset afterward and the worktree is clean.
  • pnpm --filter @vllnt/ui-registry lint: blocked by the known non-PR-specific eslint-plugin-jsx-a11y / minimatch crash in untouched apps/registry/app/report/report-bug-form.tsx.
  • Custom static checks: 5/5 template screenshots, template.json files, and READMEs exist; 1 missing registry component (conversation-thread); 3 unsupported create-vllnt-app template slugs (next-starter, ai-chat, docs-site).

Recommended fix: either align the UI gallery slugs/install commands with actual create-vllnt-app presets (saas, dashboard, docs, etc.) or land/publish the matching CLI support first; then replace or add the missing conversation-thread registry component before linking it from the AI Chat template.

@bntvllnt
Copy link
Copy Markdown
Collaborator Author

Review outcome: BLOCKED (GitHub would not let this account submit REQUEST_CHANGES on its own PR)

The code-specific issues from my earlier pass appear addressed in this head: the template pages no longer publish unsupported create-vllnt-app install commands, and the AI Chat component list now only links registry-backed component slugs. I also rechecked the template manifests against the registry component slugs and found no failures.

Remaining blockers before this can merge:

  1. The deployment/check state is still red. gh pr checks 343 --repo vllnt/ui exits non-zero because Vercel – ui.vllnt.ai is fail with message Canceled from the Vercel Dashboard at the current head bf124a6ad092007b363bd8ac7526ba6ef0a81a6f. Repository R6 requires the workspace gates/checks to be green at HEAD, so this should not be approved while the deployment check is failing/canceled.

  2. The PR body still lists npx --yes react-doctor . --diff origin/main --annotations --fail-on error --offline under Validation. AGENTS.md marks pnpm as the package manager and says never use npm/yarn/bun. Please rerun/report that gate through pnpm (pnpm dlx/pnpm exec, as appropriate) or document an explicit approved exception.

  3. This PR adds public UI routes (/templates and /templates/[slug]), but the body only has checked validation boxes. R4 requires UI behavior verification evidence, not just checkboxes. Please add current-head evidence for the gallery/detail routes (for example preview URLs plus screenshot/recording, or a command/output showing the rendered routes) once the ui.vllnt.ai preview is available again.

Validation I performed:

  • git diff --check origin/main...HEAD: pass.
  • pnpm -F @vllnt/ui-registry exec tsc --noEmit --project tsconfig.json: pass.
  • Static template manifest check: all 5 templates/*/template.json files have no installCommand; every listed component slug exists in the registry-derived component set.
  • Current checks: GitHub analysis/CodeQL/issue-link/Quality Gates/codebase health pass; Vercel – ui.vllnt.ai remains failed/canceled, Vercel – storybook passes.

Copy link
Copy Markdown
Collaborator Author

@bntvllnt bntvllnt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bntvllnt Review verdict: REQUEST_CHANGES recommended — template source blocker

Head reviewed: bf124a6ad092007b363bd8ac7526ba6ef0a81a6f

BLOCKING

  • The new templates surface advertises copyable starter-template source and “GitHub source” links, but each templates/<slug>/ directory contains only README.md, template.json, and screenshots/preview.svg. There is no actual starter app/source for users to copy. The public page and READMEs therefore promise source that the PR does not ship.

WARNING

  • demoUrl points back to the template detail page for each template while the UI labels it “Live demo”. If intentional, consider relabeling to avoid implying a runnable demo.

STATUS

  • GitHub Actions/code checks are green and Vercel – storybook is SUCCESS.
  • Vercel – ui.vllnt.ai: FAILURE is eligible for the PM stale-Vercel reviewer-triage waiver only; it is not merge/release approval.
  • Validation gap: I did not rerun full local workspace gates; this review used the live GitHub status rollup plus changed-file inspection.


<section className="mt-10">
<h2 className="text-2xl font-semibold">Source</h2>
<p className="mt-4 text-sm text-muted-foreground">
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: the page tells users to copy/adapt files from the template source, but each templates/<slug>/ directory only contains README/template metadata/screenshot files. Either ship actual starter source or change the public copy/links so they don't promise copyable template source.

@vllnt-pilot vllnt-pilot Bot had a problem deploying to Preview · pr-343-storybook May 18, 2026 17:14 Failure
@vllnt-pilot
Copy link
Copy Markdown

vllnt-pilot Bot commented May 18, 2026

Preview ready · pr-343-ui-registry

Service Status Preview
ui-registry Ready https://pr-343-ui-registry.preview.vllnt.ai
Inspect
  • Deployed to vllnt-cluster from dcc8d5e
  • Reply with /clean to destroy this preview now

@vllnt vllnt deleted a comment from vllnt-pilot Bot May 18, 2026
@vllnt vllnt deleted a comment from vercel Bot May 18, 2026
- Add meaningful alt text to template screenshot images in both the
  gallery page and the detail page: `{title} template screenshot`
- Remove the "Live demo" CTA button from the detail page sidebar; all
  demoUrl values pointed at the registry's own template detail page
  (self-referential loop) rather than a live hosted demo. Dropping the
  button is the safer option until real demo deployments exist.
  The demoUrl field in lib/templates.ts is left in place so it can be
  wired up to actual demos in a follow-up without a data-model change.
- Remove installUrl from softwareApplicationLd JSON-LD output; no
  install endpoint exists, so the field was misleading schema.org markup.
Copy link
Copy Markdown
Collaborator Author

@bntvllnt bntvllnt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review — 2 blocking findings (comment-only; GitHub does not allow this account to request changes on its own PR)

BLOCKING

  • C1 — Template source/demos are advertised as copyable starter kits, but the target folders only contain README, template.json, and preview SVG. The new detail pages and llms-full reference tell users/agents to copy/adapt template source files that do not exist.
  • C2 — Machine-readable/docs surfaces still expose self-referential Demo URLs even though the PR explicitly removed the UI demo CTA because those URLs are only the template detail pages.

VERIFIED CLEAN

  • Reviewed PR #343 at head 76f8517d793d4186175b3fbf7e84e569ed03f280; live checks remain 9/9 successful.
  • Issue link is present (closes #259).
  • Gallery/detail routes, metadata, sitemap additions, header/sidebar/home navigation, JSON-LD installUrl removal, and image alt text were inspected.
  • All 32 changed files were covered, including template READMEs/manifests and screenshots.

VALIDATION

  • Ran locally: git diff --check origin/main...HEAD; pnpm -F @vllnt/ui-registry exec tsc --noEmit --project tsconfig.json; npx --yes react-doctor . --diff origin/main --annotations --fail-on error --offline; pnpm -F @vllnt/ui lint; pnpm -F @vllnt/ui exec tsc --noEmit --project tsconfig.build.json; pnpm build; pnpm test:once.
  • Result: all exited 0. React Doctor emitted existing warnings; test run passed 216 files / 1215 tests with the known jsdom/share-dialog/interactive-timeline warnings.

Please either add real copyable template source/app files for each starter kit, or revise the page/README/llms copy so these are clearly inspiration/metadata templates only and remove/rename the self-referential demo fields from user/agent-facing outputs.

<section className="mt-10">
<h2 className="text-2xl font-semibold">Source</h2>
<p className="mt-4 text-sm text-muted-foreground">
This template is available as source in the VLLNT UI
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This source promise is not true at this head. Each templates/<slug> folder only contains README.md, template.json, and screenshots/preview.svg; there are no app/page/component files to copy or adapt. That makes the new detail pages send users to a GitHub source folder that cannot actually function as a starter kit. Please either add the promised copyable source files for all five templates or change this wording/CTA to describe these as metadata/inspiration templates only.

lines.push("");
lines.push(`- Slug: \`${template.slug}\``);
lines.push(`- Page: ${SITE_URL}${getTemplatePath(template)}`);
lines.push(`- Demo: ${template.demoUrl}`);
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR body says the Live demo CTA was removed because demoUrl points back to the same template detail page, but /llms-full.txt still emits that self-referential value as Demo. This is especially risky because agents will treat the full LLM reference as structured truth and may believe a real runnable demo exists. Please remove this line until a real demo exists, or rename it to Page/Registry page and avoid duplicating the already-emitted page URL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

discoverability Site/library discoverability documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: /templates — starter kits (Next.js, Dashboard, SaaS) using VLLNT UI

1 participant