Repository navigation
Redesign template detail pages around new Contentful fields (WEB3-28) - #80
Merged
Merged
Conversation
Rebuilds /templates/[slug] to the client project tracker handoff: hero, proof strip, definition, benefits, how it works, works with, FAQ and a final CTA. Per-template copy comes from the new Apps fields (Marketing Headline, Hero Description, SEO Keyword, Definition Body, Final CTA Heading, SEO Title, SEO Meta Description) plus the existing FAQ and Relative Apps fields; each section hides or falls back when its field is empty, so unfilled templates still render whole. - Benefits are read from the Marketing App Overview by a fixed layout (H2, then 2-4 H3 + paragraph cards); anything else renders whole and logs a warning. - Definition and FAQ headings are built from the SEO keyword. - Gallery card extracted into TemplateCard and reused by Works with. - /templates honours ?category= so the breadcrumb lands filtered. - BreadcrumbList, SoftwareApplication and FAQPage JSON-LD. - G2/Capterra marks moved to a shared component. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q5EaLBeuhHauS18ES6U7uK
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
[Medium impact] The PR appears safe to merge, with two non-blocking fixes for search descriptions and screen-reader text. FindingsSummaryRebuilds template detail pages around Contentful copy, screenshots, related templates, and FAQs.
Reviews (3) · Last reviewed commit: "Template page review fixes: copy rules, ..." · Reviewed by Greptile |
Image List (mobile) holds full phone screens (1320x2868). In the desktop frame's 16:10 they showed only the top sliver, so a frame holding a mobile shot switches to 4:5 below md and crops from the top. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q5EaLBeuhHauS18ES6U7uK
- The fallback <img> keeps the desktop srcSet, so a phone viewing a template with no mobile shot still picks a small width. - Benefits only split into two columns when the second screenshot exists; otherwise the cards take the full width, four across from lg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q5EaLBeuhHauS18ES6U7uK
Collaborator
Author
|
@greptileai please re-review: e1e0ebd addresses both findings from the first review (the fallback Generated by Claude Code |
…B3-28)
- Definition H2 names the template ("What is a client project tracker?");
only the FAQ heading uses the SEO keyword ("Questions about this ...").
- Meta description falls back SEO Meta Description -> Hero Description ->
committed long description, never the gallery subtitle; with none, the
tag is omitted.
- Social card prints the SEO title; its alt reads "{title} | Assembly".
- Screenshot alt falls back to "{name} screenshot"; customer logos carry
"{Customer} logo" as real text.
- Screenshots take their own aspect ratio and are contained, not cropped.
- "Use this template" keeps production's signed-in behaviour (Add app to
workspace / Open Assembly) by reusing TemplateAuthCta.
- "Free plan that never expires" -> "Start for free. No credit card required."
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q5EaLBeuhHauS18ES6U7uK
Collaborator
Author
|
@greptileai please review ff8c755: review fixes for the copy rules, alt text, uncropped screenshots and the auth-aware CTA. Generated by Claude Code |
- A template with no description sets description: null, so it doesn't
inherit the root layout's homepage description.
- The drawn customer marks are aria-hidden; the sr-only "{Customer} logo"
text is the link's one name (Advertai's SVG labelled itself too).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q5EaLBeuhHauS18ES6U7uK
The rating line is now built from the same RATINGS array as the badges, so the two can't drift apart. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q5EaLBeuhHauS18ES6U7uK
"Start from this template for free and make it yours in minutes. No credit card required." Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q5EaLBeuhHauS18ES6U7uK
/customers hero, the /solutions FAQ answer and llm-info.ts still quoted G2 4.8 / Capterra 4.7. The /customers badge labels lose their em dash to match the template pages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q5EaLBeuhHauS18ES6U7uK
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Rebuilds every
/templates/[slug]page to the client project tracker design handoff. Sections in order: hero, proof strip, definition, benefits, how it works, works with, FAQ, final CTA.Where each section's content comes from (all from the
partnerApps/ Apps entry):<title>, og/twitter title, social cardnullif none, so the root layout's description isn't inheritedHardcoded on every page, as the handoff specifies:
CTA: "Use this template" reuses
TemplateAuthCta, so signed-in visitors keep production's behaviour: "Add app to workspace" for a template with an app id, "Open Assembly" for one without. Both variants are in the markup, and the pre-paint auth script setsdisplay: noneon the one that doesn't apply.Also:
TemplateCardand reused by the Works with row. The gallery itself is visually unchanged./templates?category=trackersopens the gallery already filtered, so the breadcrumb lands on the right category.faqfield sets) JSON-LD.ogImageForalt text now reads "{title} | Assembly" instead of using an em dash. This also applies to the proposal and embed cards.solutions.frozen.ts, andllm-info.ts.Contentful (already published):
Linear
WEB3-28
Testing
tsc --noEmitpasses.eslintis clean on every changed file; the two remaining repo issues are in untouched files (use-auth.ts,ghost.ts) and also fail onmain.npm testpasses: 33 tests, including the benefits parser and copy-fallback tests (the definition names the template, the FAQ uses the keyword, the meta description never falls back to the subtitle).npm run buildcouldn't finish in the sandbox, because it can't resolvecopilot-blog.ghost.io. Vercel's build is the check.object-contain. FAQPage, BreadcrumbList and SoftwareApplication JSON-LD present.🤖 Generated with Claude Code
https://claude.ai/code/session_01Q5EaLBeuhHauS18ES6U7uK