feat: build recommendations and testimonials system - #73
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Next review available in: 8 minutes Limit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?Wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (16)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
|
|
make them 2 rows, and slightly faster |
Introduces a Recommendation content-collections type (data/recommendations/*.mdx) so one piece of feedback can render both as a short excerpt and a full, shareable, print/PDF-friendly page: - app/recommendations/[slug]/page.tsx: identity header, company logo, full MDX body, relationship/source/date, LinkedIn + other links, optional signature, and a print/save-as-PDF button (print stylesheet hides header/footer/chat/background chrome via print:hidden) - components/app/testimonial-card.tsx: shared excerpt card linking to the full page, with a company toggle so work pages don't repeat it - components/app/testimonials-marquee.tsx: landing-page marquee of excerpts, reusing the Marquee primitive from #67/#70 - app/work/[slug]/page.tsx: renders a testimonial at the bottom only when a recommendation is actually linked to that work entry - app/page.tsx: new "What people say" panel between the companies marquee and projects - app/sitemap.ts: includes real (non-placeholder) recommendation URLs The only entry right now is data/recommendations/1-jane-placeholder.mdx, explicitly flagged isPlaceholder: true with an obviously fake name and TODO copy -- it exists solely to prove the model/pages/components work end to end and is excluded from the sitemap. Real recommendations still need to be collected and approved before publishing.
1a4bc35 to
3cd4241
Compare
|
Rebased onto main to resolve the conflict (was CONFLICTING/DIRTY, now MERGEABLE). What happened: the branch carried an earlier draft of the footer/companies-marquee redesign ( Verified post-rebase: Closes #77. |
|
Addressed the two-rows/faster feedback — |
Summary
Scaffolding for the recommendations/testimonials system described in #65. This ships the content model, pages, and components -- no real testimonial content. There is exactly one entry,
data/recommendations/1-jane-placeholder.mdx, explicitly flaggedisPlaceholder: truewith an obviously fake name ("Jane Placeholder") and TODO copy, so the system is demonstrably working end to end without fabricating any endorsement.Stacked on #70 (#67) -- branched from the current tip of
design/67-simplify-footer-marquee, which already includes the two-row opposite-direction marquee layout and the keyboard/screen-reader accessibility fix. Base is set to that branch rather thanmain.Content model
actions/content-collections.ts: newrecommendationscollection (data/recommendations/*.mdx), matching this repo's existingwork/projectsconvention -- frontmatter for identity/metadata, MDX body as the full recommendation text (same pattern as work/project case studies).recommenderName,role,company,companyLogo?,photo?,excerpt,date,relationship(manager/coworker/client/collaborator),source(linkedin/x/email/message/other),linkedinUrl?,otherLinks?,signatureImage?,relatedWorkHref?,isPlaceholder?.TestimonialCard) and a full page -- same content, two views, per the acceptance criteria.Pages / components
app/recommendations/[slug]/page.tsx: full recommendation page -- identity header, avatar (with initials fallback, no fake photo), company logo, relationship/source/date, LinkedIn + other links, optional signature, full MDX body, and a print/save-as-PDF button.generateMetadatafor SEO.components/app/recommendation-print-button.tsx: clientwindow.print()trigger; header/footer/floating-chat/background chrome getprint:hiddenso print/PDF output is clean.components/app/testimonial-card.tsx: shared excerpt card (avatar, name, role [+ company unlesshideCompany], excerpt, link to the full page).app/work/[slug]/page.tsx: renders aTestimonialCardat the bottom, but only when a recommendation'srelatedWorkHrefmatches that work entry -- never forced onto pages with no linked recommendation. Company is hidden since the page already shows it.components/app/testimonials-marquee.tsx+app/page.tsx: landing-page "What people say" panel using<Marquee pauseOnHover>, same primitive design: simplify footer and remove repeated companies section #67 introduced for the companies marquee. Placed right after the "Companies I've worked with" panel and before Projects -- keeps all work-credibility content (work history -> who I worked with -> what they said) together before moving on.app/sitemap.ts: includes real (non-placeholder) recommendation URLs only; the placeholder is excluded from the sitemap so it's never indexed as if genuine.Content integrity
isPlaceholder: true, TODO-only excerpt/body, and a visible on-page banner linking back to feat: build recommendations and testimonials system #65 when viewing it directly..mdxentries -- that's follow-up work, not part of this PR.Test plan
pnpm buildsucceeds (env pulled locally for the check, not committed) --/recommendations/jane-placeholderprerenders viagenerateStaticParamstsc --noEmitclean after content-collections codegen/work/jobflow(itsrelatedWorkHref) and nowhere elseCloses #65
Closes #77.