Skip to content

feat(dashboard): generalize landing page use cases#43

Merged
duyet merged 1 commit into
mainfrom
claude/landing-use-cases-general
Mar 17, 2026
Merged

feat(dashboard): generalize landing page use cases#43
duyet merged 1 commit into
mainfrom
claude/landing-use-cases-general

Conversation

@duyet
Copy link
Copy Markdown
Owner

@duyet duyet commented Mar 17, 2026

Summary

  • Replace product-specific use cases (ClickHouse monitoring, stamp builder) with universal agent examples
  • New use cases: Vibe-coded chatbot, Multi-session agent, Agent analytics, Any framework/language
  • New SVG illustrations for each use case matching existing design system
  • Extract ACCENT constant, deduplicate framework node rendering with data array

Why

Current use cases are too specific (tied to ClickHouse, stamps). AgentState works for any agent — messaging should reflect that, with emphasis on vibe coding and zero database setup.

Test plan

  • Visual review on localhost:3000
  • Responsive layout check (mobile + desktop)
  • SVG illustrations render correctly in light/dark themes

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • New Features
    • Refreshed landing page use-cases section with updated visual illustrations and new featured use cases highlighting Vibe chatbot integration, multi-session agent capabilities, agent analytics, and universal framework support.

…t appeal

Replace product-specific use cases (ClickHouse, stamps) with general,
framework-agnostic examples: vibe-coded chatbot, multi-session agent,
agent analytics, and universal framework support. New SVG illustrations
for each. Extract ACCENT constant and deduplicate framework nodes.

Co-Authored-By: Duyet Le <me@duyet.net>
Co-Authored-By: duyetbot <bot@duyet.net>
Copy link
Copy Markdown

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

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

Sorry @duyet, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request generalizes the landing page's displayed use cases to emphasize the universal applicability of AgentState. By replacing product-specific examples with broader agent-centric scenarios, the messaging now better reflects that AgentState works for any agent, focusing on concepts like vibe coding and zero database setup.

Highlights

  • Use Case Generalization: Replaced product-specific use cases (ClickHouse monitoring, stamp builder) with universal agent examples to better reflect AgentState's broad applicability.
  • New Use Cases: Introduced new use cases including "Vibe-coded chatbot", "Multi-session agent", "Agent analytics", and "Any framework/language".
  • SVG Illustrations: Added new SVG illustrations for each updated use case, aligning with the existing design system.
  • Code Refactoring: Extracted a reusable ACCENT constant and deduplicated framework node rendering logic using a data array in the UniversalFrameworkIllustration component.
Changelog
  • packages/dashboard/src/components/landing/use-cases.tsx
    • Replaced ClickHouseMonitorIllustration, StampBuilderIllustration, SupportBotIllustration, and CodeAssistantIllustration components with new, more generalized SVG illustrations: VibeChatbotIllustration, MultiSessionIllustration, AgentAnalyticsIllustration, and UniversalFrameworkIllustration.
    • Updated the useCases array to reflect the new, generalized use case titles, descriptions, and associated illustration components.
    • Introduced a new ACCENT constant to centralize color definition for SVG elements.
    • Refactored the UniversalFrameworkIllustration component to use a FRAMEWORK_NODES array for more efficient and deduplicated rendering of framework nodes.
Activity
  • The pull request was generated using Claude Code.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 17, 2026

📝 Walkthrough

Walkthrough

This pull request updates the landing page use cases component by replacing illustration components and restructuring the useCases array with new tags, titles, descriptions, and a new central hub-based framework illustration. The public function signature remains unchanged.

Changes

Cohort / File(s) Summary
Use Cases Landing Component
packages/dashboard/src/components/landing/use-cases.tsx
Replaced four illustration components (ClickHouseMonitor, StampBuilder, SupportBot, CodeAssistant) with new ones (VibeChatbot, MultiSession, AgentAnalytics, UniversalFramework). Introduced ACCENT constant and FRAMEWORK_NODES data structure for central hub-based illustration. Reworked all four useCases array items with updated tags, titles, descriptions, and illustration mappings. Net change: +154 lines, −365 lines.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Illustrations dance and cases bloom anew,
From ClickHouse queries to chats of vibrant hue,
A universal hub connects it all with grace,
Framework nodes glow in their rightful place,
Each use case tells a different story, true!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ 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%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ 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 accurately summarizes the main change: generalizing landing page use cases from product-specific examples to universal, framework-agnostic agent examples.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/landing-use-cases-general
📝 Coding Plan
  • Generate coding plan for human review comments

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.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request effectively generalizes the use cases on the landing page, replacing specific examples with broader, more universal ones. The introduction of new SVG illustrations aligns well with the updated messaging. The code is improved by extracting the ACCENT color into a constant and using a data array to deduplicate the rendering of framework nodes in the UniversalFrameworkIllustration. My review includes one suggestion to further improve maintainability by replacing magic numbers with named constants.

Comment on lines +197 to +204
{FRAMEWORK_NODES.map(({ rx, ry, lx1, ly1, lx2, ly2 }) => (
<g key={`${rx}-${ry}`}>
<rect x={rx} y={ry} width="50" height="28" rx="5" stroke="currentColor" strokeWidth="1.2" opacity="0.3" />
<line x1={rx + 8} y1={ry + 10} x2={rx + 42} y2={ry + 10} stroke="currentColor" strokeWidth="1" opacity="0.2" />
<line x1={rx + 8} y1={ry + 20} x2={rx + 32} y2={ry + 20} stroke="currentColor" strokeWidth="1" opacity="0.15" />
<line x1={lx1} y1={ly1} x2={lx2} y2={ly2} stroke="currentColor" strokeWidth="1" strokeDasharray="4 3" opacity="0.2" />
</g>
))}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

While using a data array to render the framework nodes is a great improvement, the rendering logic inside the .map() still contains several magic numbers for dimensions and positions (e.g., 50, 28, 8, 10, 42). Extracting these into named constants would improve readability and make it easier to adjust the node's appearance in the future. For a small, static list like this, defining them inside the map callback is an acceptable trade-off for improved clarity.

      {FRAMEWORK_NODES.map(({ rx, ry, lx1, ly1, lx2, ly2 }) => {
        const NODE_WIDTH = 50;
        const NODE_HEIGHT = 28;
        const NODE_RX = 5;
        const PADDING_X = 8;
        const LINE_1_Y_REL = 10;
        const LINE_1_X2_REL = 42;
        const LINE_2_Y_REL = 20;
        const LINE_2_X2_REL = 32;

        return (
          <g key={`${rx}-${ry}`}>
            <rect x={rx} y={ry} width={NODE_WIDTH} height={NODE_HEIGHT} rx={NODE_RX} stroke="currentColor" strokeWidth="1.2" opacity="0.3" />
            <line x1={rx + PADDING_X} y1={ry + LINE_1_Y_REL} x2={rx + LINE_1_X2_REL} y2={ry + LINE_1_Y_REL} stroke="currentColor" strokeWidth="1" opacity="0.2" />
            <line x1={rx + PADDING_X} y1={ry + LINE_2_Y_REL} x2={rx + LINE_2_X2_REL} y2={ry + LINE_2_Y_REL} stroke="currentColor" strokeWidth="1" opacity="0.15" />
            <line x1={lx1} y1={ly1} x2={lx2} y2={ly2} stroke="currentColor" strokeWidth="1" strokeDasharray="4 3" opacity="0.2" />
          </g>
        );
      })}

Copy link
Copy Markdown

@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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/dashboard/src/components/landing/use-cases.tsx`:
- Line 3: The file defines a hardcoded ACCENT constant ("ACCENT") used for SVG
colors which prevents theme/brand updates from propagating; replace usage of
that constant in SVGs with theme-driven colors by deriving stroke/fill from the
same CSS variable or inherited color (e.g., use the component's CSS custom
property like var(--color-accent) or currentColor) so the SVGs follow classes
such as bg-accent; update references to ACCENT in use-cases.tsx (and remove the
constant if no longer needed) and ensure SVG elements use fill/stroke attributes
tied to the chosen CSS variable or inherit color.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 36b0db5e-5f08-4378-a73f-1a402d7ad534

📥 Commits

Reviewing files that changed from the base of the PR and between e67a127 and 1c27f46.

📒 Files selected for processing (1)
  • packages/dashboard/src/components/landing/use-cases.tsx

"use client";

function ClickHouseMonitorIllustration() {
const ACCENT = "#22c55e";
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Keep the accent color on theme tokens.

ACCENT hardcodes a single green, so brand/theme changes will not propagate into these SVGs even though the surrounding card already uses theme-driven classes like bg-accent. Derive the stroke/fill from the same CSS variable or inherited color instead of a fixed hex.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/dashboard/src/components/landing/use-cases.tsx` at line 3, The file
defines a hardcoded ACCENT constant ("ACCENT") used for SVG colors which
prevents theme/brand updates from propagating; replace usage of that constant in
SVGs with theme-driven colors by deriving stroke/fill from the same CSS variable
or inherited color (e.g., use the component's CSS custom property like
var(--color-accent) or currentColor) so the SVGs follow classes such as
bg-accent; update references to ACCENT in use-cases.tsx (and remove the constant
if no longer needed) and ensure SVG elements use fill/stroke attributes tied to
the chosen CSS variable or inherit color.

@duyet duyet merged commit 981f7ab into main Mar 17, 2026
4 checks passed
@duyet duyet deleted the claude/landing-use-cases-general branch March 17, 2026 12:38
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