Skip to content

UI Improvements on Showcase Page#709

Merged
moose-code merged 4 commits intomainfrom
showcase-improvement
Oct 6, 2025
Merged

UI Improvements on Showcase Page#709
moose-code merged 4 commits intomainfrom
showcase-improvement

Conversation

@nikbhintade
Copy link
Member

@nikbhintade nikbhintade commented Oct 2, 2025

Summary

  • Converted showcase from text list to card components
  • Added screenshots/GIFs for each project with descriptions

Notes

  • For new projects, capture screenshots (if web-based) using the browser’s developer tools in fullscreen mode on a 16:9 display.
  • For CLI projects, capture terminal screenshots or record GIFs as best as possible to demonstrate usage.

Summary by CodeRabbit

  • New Features

    • Introduced a new card-based Showcase gallery to browse demos and quick links.
  • Documentation

    • Removed the old static Showcase page; content consolidated into the new gallery.
  • Chores

    • Minor site configuration formatting adjustments (no behavioral change).
    • Added a development plugin dependency to support site tooling.

@vercel
Copy link

vercel bot commented Oct 2, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
envio-docs Ready Ready Preview Comment Oct 3, 2025 5:15am

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 2, 2025

Walkthrough

Reformatted docusaurus.config.js (indentation/whitespace only), added docusaurus-plugin-llms to devDependencies in package.json, removed the MDX showcase page, and introduced a new React-based showcase at src/pages/showcase/index.js. No public API or config semantics were changed.

Changes

Cohort / File(s) Summary
Docusaurus config (formatting only)
docusaurus.config.js
Re-indented and reformatted the file; no logical changes to config values, plugins, or behavior.
Dependencies
package.json
Added devDependency docusaurus-plugin-llms; minor punctuation/formatting tweak to @docusaurus/types entry.
Showcase migration
src/pages/showcase.mdx, src/pages/showcase/index.js
Removed the MDX showcase page (src/pages/showcase.mdx) and added a new React page (src/pages/showcase/index.js) that statically renders a gallery of showcase cards and exports Showcase as default.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Router as Docusaurus Router
  participant Showcase as src/pages/showcase/index.js
  participant UI as Showcase components

  User->>Router: GET /showcase
  Router->>Showcase: instantiate/render Showcase()
  Showcase->>UI: render ShowcaseHeader
  Showcase->>UI: map sites -> ShowcaseCard[]
  UI-->>User: send HTML/CSS (gallery with cards, tags, links)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • add showcase #702 — Adds a static src/pages/showcase.mdx and navbar item; directly related because this PR replaces the MDX with a React src/pages/showcase/index.js.

Suggested reviewers

  • moose-code
  • DenhamPreen

Poem

I’m a rabbit in the docs tonight,
I hopped from MDX to React’s bright light.
Cards and tags all in tidy rows,
A new dev-dep sprouted as it grows.
I twitch my nose — the showcase glows! 🐇

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run `@coderabbitai generate docstrings` to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit's high-level summary is enabled.
Title Check ✅ Passed The title “UI Improvements on Showcase Page” accurately reflects the primary change of upgrading the static text list to a card-based component layout with added visuals, keeping the phrasing concise and specific to the core UI enhancement on the showcase page.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch showcase-improvement

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@nikbhintade
Copy link
Member Author

Note created branch from llm-improvement branch instead of main. It doesn't create any issue just wanted to add that note here.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
docusaurus.config.js (1)

297-302: Remove no-op stylesheets block under themeConfig.

Only the top-level stylesheets array is honored by Docusaurus; this nested copy is ignored. Dropping it avoids confusion and redundant config.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e47e8fb and ac6c92a.

⛔ Files ignored due to path filters (11)
  • static/img/showcase/chaindensity.xyz_.png is excluded by !**/*.png
  • static/img/showcase/chainpulse.png is excluded by !**/*.png
  • static/img/showcase/crypto-kitties-genome-visualiser.vercel.app_.png is excluded by !**/*.png
  • static/img/showcase/logtui.gif is excluded by !**/*.gif
  • static/img/showcase/snubb.png is excluded by !**/*.png
  • static/img/showcase/thebannedlist.xyz_.png is excluded by !**/*.png
  • static/img/showcase/www.liqo.xyz_.png is excluded by !**/*.png
  • static/img/showcase/www.oraclewars.xyz_.png is excluded by !**/*.png
  • static/img/showcase/www.stablevolume.com-scroll_original.gif is excluded by !**/*.gif
  • static/img/showcase/www.v4.xyz-scroll_original.gif is excluded by !**/*.gif
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (4)
  • docusaurus.config.js (1 hunks)
  • package.json (1 hunks)
  • src/pages/showcase.mdx (0 hunks)
  • src/pages/showcase/index.js (1 hunks)
💤 Files with no reviewable changes (1)
  • src/pages/showcase.mdx
🧰 Additional context used
🧬 Code graph analysis (1)
docusaurus.config.js (1)
docusaurus.config.llm.js (4)
  • config (6-159)
  • require (1-1)
  • lightCodeTheme (2-2)
  • darkCodeTheme (3-3)

Comment on lines +414 to +417
tile: "Envio Docs",
description:
"The fastest most flexible way to get on-chain data.",
generateMarkdownFiles: false,
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Fix typo in LLMS plugin config option.

docusaurus-plugin-llms expects a title field. With the current tile key the plugin never receives the intended label, so the generated LLM artifacts fall back to defaults. Please correct the property name.

-                tile: "Envio Docs",
+                title: "Envio Docs",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
tile: "Envio Docs",
description:
"The fastest most flexible way to get on-chain data.",
generateMarkdownFiles: false,
title: "Envio Docs",
description:
"The fastest most flexible way to get on-chain data.",
generateMarkdownFiles: false,
🤖 Prompt for AI Agents
In docusaurus.config.js around lines 414 to 417, the LLMS plugin config has a
typo: the key is "tile" instead of "title". Rename the "tile" property to
"title" so the docusaurus-plugin-llms receives the intended label and generated
LLM artifacts use the provided title.

Copy link
Member

@moose-code moose-code left a comment

Choose a reason for hiding this comment

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

Awesome, 10x better than it was.

Approving, but would suggest these changes if you wouldn't mind adding them.

w/ the tags, they all essentially open source so don't think thats so relevant. I like the tag idea though and think the tag should be binary maybe, either saying "HyperIndex" or "HyperSync" showing which one it was built with. The categories etc don't add too much value IMO.

Also for descriptions, no need to say "powered by HyperIndex by Envio." Etc if we already showing that 👍

Overall, great

@moose-code
Copy link
Member

@nikbhintade just a merge conflict to fix

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (3)
src/pages/showcase/index.js (3)

102-102: Add loading="lazy" and explicit dimensions for better performance.

The image lacks loading="lazy" which can hurt page load performance when rendering multiple cards. Additionally, missing explicit width/height attributes can cause Cumulative Layout Shift (CLS).

Apply this diff:

-                <img src={site.image} alt={site.title} />
+                <img 
+                    src={site.image} 
+                    alt={site.title}
+                    loading="lazy"
+                    style={{ width: '100%', height: 'auto' }}
+                />

115-122: Use stable keys instead of array index.

Using array index as the key prop is an anti-pattern when rendering lists, as it can cause issues if the list order changes or items are added/removed.

Since tags are simple strings, consider using the tag value itself as the key:

-                    {site.tags.map((tag, i) => (
+                    {site.tags.map((tag) => (
                         <span
-                            key={i}
+                            key={tag}
                             className="badge badge--secondary margin-right--sm"
                         >
                             {tag}
                         </span>
                     ))}

133-140: Consider using stable keys for list items.

Using array index as the key prop works here since the sites array is static, but it's better practice to use a stable identifier.

Consider using site.title or a combination of site.source as the key:

-                {sites.map((site, idx) => (
+                {sites.map((site) => (
                     <div
-                        key={idx}
+                        key={site.source}
                         className="col col--6 margin-bottom--lg"
                         style={{ display: "flex" }}
                     >
                         <ShowcaseCard site={site} />
                     </div>
                 ))}
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d00f17b and be99d06.

📒 Files selected for processing (1)
  • src/pages/showcase/index.js (1 hunks)
🔇 Additional comments (5)
src/pages/showcase/index.js (5)

1-3: LGTM!

The imports are correct and use the standard Docusaurus theme components.


5-11: LGTM!

The constants are clearly defined and follow best practices for configuration values.


13-93: LGTM!

The sites data structure is well-organized with consistent schema. Each entry contains all required fields (title, description, image, source, tags).


147-156: LGTM!

The header component follows semantic HTML practices and accessibility guidelines with proper heading hierarchy.


158-168: LGTM!

The main Showcase component correctly integrates with Docusaurus Layout and composes the header and cards components.

Comment on lines +110 to +112
<Link className="button button--primary" to={site.source}>
Check Demo
</Link>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Add security attributes to external links.

External links should include rel="noopener noreferrer" to prevent security vulnerabilities (reverse tabnabbing) and privacy leaks.

Apply this diff:

-                    <Link className="button button--primary" to={site.source}>
+                    <Link 
+                        className="button button--primary" 
+                        to={site.source}
+                        rel="noopener noreferrer"
+                    >
                         Check Demo
                     </Link>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<Link className="button button--primary" to={site.source}>
Check Demo
</Link>
<Link
className="button button--primary"
to={site.source}
rel="noopener noreferrer"
>
Check Demo
</Link>
🤖 Prompt for AI Agents
In src/pages/showcase/index.js around lines 110 to 112, the Link that points to
an external URL (site.source) lacks security attributes; add rel="noopener
noreferrer" to the Link component (and if you intend to open it in a new tab,
also add target="_blank") so external navigation avoids reverse tabnabbing and
privacy leaks.

@nikbhintade
Copy link
Member Author

@moose-code resolved the conflict & changes made according to feedback

@moose-code moose-code merged commit 4fa34bc into main Oct 6, 2025
3 checks passed
@moose-code moose-code deleted the showcase-improvement branch October 6, 2025 09:32
@coderabbitai coderabbitai bot mentioned this pull request Oct 7, 2025
This was referenced Oct 30, 2025
@coderabbitai coderabbitai bot mentioned this pull request Nov 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants