-
Notifications
You must be signed in to change notification settings - Fork 134
feat(site): add templates #3567
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: graphite-base/3567
Are you sure you want to change the base?
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
2 Skipped Deployments
|
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
How to use the Graphite Merge QueueAdd the label merge-queue to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
PR Review: Templates FeatureOverviewThis PR adds a comprehensive templates page to the Rivet website, showcasing RivetKit templates and examples. The implementation demonstrates solid architecture and good practices. Here's my detailed analysis: ✅ Strengths
🐛 Issues FoundHigh Priority1. File Path Resolution Issue (templates/[slug]/page.tsx:38-46) const readmePath = path.join(
process.cwd(),
"..",
"examples",
templateName,
"README.md",
);
2. Error Handling for Missing READMEs (templates/[slug]/page.tsx:47-49) console.error(`Failed to read README for templateName:`, error);
Medium Priority3. Filter Logic - OR vs AND Behavior (TemplatesPageClient.tsx:57-69) const matchesTags =
selectedTags.length === 0 ||
selectedTags.some((tag) => template.tags.includes(tag));
4. Inline Styles Instead of Tailwind (TemplatesPageClient.tsx:93, 99) style={{ color: "#FAFAFA" }}
style={{ color: "#A0A0A0" }}
5. Hardcoded Brand Color
Low Priority6. Package.json Reordering (website/package.json:68-69)
7. Empty Tags Arrays
8. Clear Filters Button Logic (TemplatesSidebar.tsx:68-71) onClick={() => {
selectedTags.forEach((tag) => onTagToggle(tag));
selectedTechnologies.forEach((tech) => onTechnologyToggle(tech));
}}
⚡ PerformanceExcellent:
Future Consideration: If template count grows to hundreds, consider virtualizing the grid with react-window or similar 🔒 Security1. Markdown XSS Risk (TemplateDetailClient.tsx:78) <Markdown>{readmeContent}</Markdown>
2. External Links ✅
♿ AccessibilityGood:
Could Improve:
🧪 Test CoverageMissing: No tests found for this feature
📋 Additional Suggestions
🎯 Action ItemsMust Fix Before Merge
Should Fix
Nice to Have
📊 Code Quality Score: 8/10Breakdown:
ConclusionThis is a well-architected feature with good UX and performance. The main concerns are file path resolution reliability and ensuring Markdown content is properly sanitized. The code is clean, type-safe, and follows React/Next.js best practices. Great work on the fuzzy search integration and responsive layout! Once the high-priority items are addressed, this will be production-ready. 🚀 |
735dd6f to
d7f4e0d
Compare
59757d7 to
cc69285
Compare
More templates
@rivetkit/cloudflare-workers
@rivetkit/db
@rivetkit/framework-base
@rivetkit/next-js
@rivetkit/react
rivetkit
@rivetkit/sql-loader
@rivetkit/engine-runner
@rivetkit/engine-runner-protocol
commit: |
cc69285 to
093ba9b
Compare
d7f4e0d to
f111198
Compare
91028de to
eb81abd
Compare
f111198 to
1add7bd
Compare

No description provided.