Skip to content

feat: Add Collector Home page#447

Open
justin212407 wants to merge 20 commits into
open-telemetry:mainfrom
justin212407:collector-page
Open

feat: Add Collector Home page#447
justin212407 wants to merge 20 commits into
open-telemetry:mainfrom
justin212407:collector-page

Conversation

@justin212407
Copy link
Copy Markdown

@justin212407 justin212407 commented May 11, 2026

closes #37

Summary:

This PR introduces a fully implemented OpenTelemetry Collector landing page and separates the Collector component explorer into its own dedicated route.

Changes:

Collector Landing Page

  • Replaced the previous Collector placeholder page with a Java Agent-style landing experience
  • Added:
    • PageContainer
    • BackButton
    • Gradient page title and subtitle
    • CollectorExploreLanding

CollectorExploreLanding

Added a new landing component featuring:

  • Hero section with “Explore Components” CTA
  • Component type cards with counts sourced from /data/collector/index.json
  • Distribution cards for:
    • Core
    • Contrib
  • Quick stats summary
  • External resource links
  • Loading and error states

Routing Updates

Updated routing behavior so that:

  • /collector

    • Renders the new Collector landing page
  • /collector/components

    • Renders the component explorer
  • /collector/components/:version

    • Renders the component explorer for a specific version
  • /collector/components/:version/:id

    • Renders component detail pages

Filter Support

Added query parameter support for component filtering:

/collector/components?type=receiver
/collector/components?distribution=core

Screenshots:

Screencast.From.2026-05-11.23-46-47.mp4

Tests:

  • Added tests for the Collector landing page
  • Updated Collector page shell tests

Verification:

Successfully ran:

bun run typecheck
bun run test -- src/features/collector

@justin212407 justin212407 requested review from a team as code owners May 11, 2026 12:57
@linux-foundation-easycla
Copy link
Copy Markdown

linux-foundation-easycla Bot commented May 11, 2026

CLA Signed

The committers listed above are authorized under a signed CLA.

  • ✅ login: justin212407 / name: Justin Charles (a5141a5)
  • ✅ login: justin212407 / name: justin212407 (e675abc)

@netlify
Copy link
Copy Markdown

netlify Bot commented May 11, 2026

Deploy Preview for otel-ecosystem-explorer ready!

Name Link
🔨 Latest commit 795829b
🔍 Latest deploy log https://app.netlify.com/projects/otel-ecosystem-explorer/deploys/6a120008a73f360008dd65e2
😎 Deploy Preview https://deploy-preview-447--otel-ecosystem-explorer.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

justin212407 and others added 2 commits May 11, 2026 23:34
Signed-off-by: justin212407 <charlesjustin2124@gmail.com>
Comment thread ecosystem-explorer/src/App.tsx Outdated
Comment thread ecosystem-explorer/src/App.tsx Outdated
</Routes>
</Suspense>
</ErrorBoundary>
)}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Stray )} with no matching opening, looks like a leftover from removing the {isEnabled("JAVA_CONFIG_BUILDER") && ( block. Either drop this line or restore the gated block above it.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I missed this out while resolving the merge conflicts. Fixed it.

Comment thread ecosystem-explorer/src/App.tsx Outdated
justin212407 and others added 7 commits May 13, 2026 02:36
Signed-off-by: justin212407 <charlesjustin2124@gmail.com>
Signed-off-by: justin212407 <charlesjustin2124@gmail.com>
Signed-off-by: justin212407 <charlesjustin2124@gmail.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a Collector landing page and splits the Collector component explorer into a dedicated route.

Changes:

  • Introduces CollectorExploreLanding with stats, cards, CTA links, resources, loading, and error states.
  • Moves component browsing into CollectorComponentsPage with type/distribution query filters.
  • Updates routing so /collector is the landing page and /collector/components... serves explorer/detail routes.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
ecosystem-explorer/src/features/collector/components/collector-explore-landing.tsx Adds Collector landing UI and data loading.
ecosystem-explorer/src/features/collector/components/collector-explore-landing.test.tsx Adds landing page tests.
ecosystem-explorer/src/features/collector/collector-page.tsx Replaces explorer shell with Collector landing page shell.
ecosystem-explorer/src/features/collector/collector-page.test.tsx Updates Collector page shell test.
ecosystem-explorer/src/features/collector/collector-components-page.tsx Adds dedicated component explorer route/page.
ecosystem-explorer/src/App.tsx Registers Collector landing, component explorer, and detail routes.
Comments suppressed due to low confidence (1)

ecosystem-explorer/src/features/collector/collector-components-page.tsx:290

  • These card links no longer match CollectorDetailPage: the route passes version/id, but collector-detail-page.tsx still reads distribution/name params and the version from the query string. As a result, clicking any component opens the detail page with empty distribution/name and shows the error state instead of loading the component.
              filteredComponents.map((comp) => (
                <Link
                  key={comp.id}
                  to={`/collector/components/${currentVersion}/${comp.id}`}

Comment thread ecosystem-explorer/src/App.tsx Outdated
Comment thread ecosystem-explorer/src/features/collector/collector-page.tsx Outdated
Comment thread ecosystem-explorer/src/features/collector/collector-components-page.tsx Outdated
@vitorvasc
Copy link
Copy Markdown
Member

Hi @justin212407, quick follow up - did you have a chance to look at the results from Copilot's review?

@justin212407
Copy link
Copy Markdown
Author

Hi @justin212407, quick follow up - did you have a chance to look at the results from Copilot's review?

Yes I am sorry i am working on making those changes, was a bit preoccupied with some other work, will make the fixes and push the changes soon

@justin212407 justin212407 requested a review from Copilot May 20, 2026 17:02
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.

Comment on lines 132 to +136
{isEnabled("COLLECTOR_PAGE") && (
<>
<Route path="/collector/components" element={<CollectorPage />} />
<Route path="/collector" element={<CollectorPage />} />
<Route path="/collector/components" element={<CollectorComponentsPage />} />
<Route
Comment on lines 124 to +128
{isEnabled("COLLECTOR_PAGE") && (
<>
<Route path="/collector/components" element={<CollectorPage />} />
<Route path="/collector" element={<CollectorPage />} />
<Route path="/collector/components" element={<CollectorComponentsPage />} />
<Route
Signed-off-by: justin212407 <charlesjustin2124@gmail.com>
@justin212407 justin212407 requested a review from Copilot May 20, 2026 19:29
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (3)

ecosystem-explorer/src/v1/V1App.tsx:143

  • The implemented Collector detail route uses /collector/components/:distribution/:name (with the version passed via the version query param in CollectorDetailPage), but the PR description documents /collector/components/:version/:id. Please align the PR description with the actual route shape, or update the route/table + detail page to match the documented URL structure.
              <Route path="/collector" element={<CollectorPage />} />
              {isEnabled("COLLECTOR_PAGE") && (
                <>
                  <Route path="/collector/components" element={<CollectorComponentsPage />} />
                  <Route
                    path="/collector/components/:version"
                    element={<CollectorComponentsPage />}
                  />
                  <Route
                    path="/collector/components/:distribution/:name"
                    element={<CollectorDetailPage />}
                  />

ecosystem-explorer/src/features/collector/collector-components-page.tsx:157

  • Detail links always include version=${currentVersion} in the query string. Since CollectorDetailPage already falls back to the latest when version is absent, consider omitting the version param when currentVersion is the latest to keep canonical URLs stable and avoid baking a specific version into shared links unnecessarily.
  const getDetailLink = (component: { distribution: string; name: string }) => {
    const params = new URLSearchParams(searchParams);
    params.set("version", currentVersion);

    return {
      pathname: `/collector/components/${component.distribution}/${component.name}`,
      search: `?${params.toString()}`,
    };
  };

ecosystem-explorer/src/LegacyApp.tsx:135

  • Routing here still defines the Collector detail route as /collector/components/:distribution/:name (with version handled via the version query param in CollectorDetailPage), but the PR description documents /collector/components/:version/:id. Please update the PR description or adjust the route shape + detail page so the documented URLs match reality.
              <Route path="/collector" element={<CollectorPage />} />
              {isEnabled("COLLECTOR_PAGE") && (
                <>
                  <Route path="/collector/components" element={<CollectorComponentsPage />} />
                  <Route
                    path="/collector/components/:version"
                    element={<CollectorComponentsPage />}
                  />
                  <Route
                    path="/collector/components/:distribution/:name"
                    element={<CollectorDetailPage />}
                  />

Comment on lines +131 to +137
const handleVersionChange = (val: string) => {
const currentSearch = searchParams.toString();
navigate({
pathname: `/collector/components/${val}`,
search: currentSearch ? `?${currentSearch}` : "",
});
};
{componentsError || versionsError ? (
<div className="flex flex-col items-center justify-center space-y-4 py-32 text-center text-red-500">
<AlertCircle className="mx-auto h-12 w-12 opacity-50" aria-hidden="true" />
<h3 className="text-xl font-semibold">Error loading data</h3>
@jaydeluca jaydeluca mentioned this pull request May 22, 2026
2 tasks
<div>
<h1 className="mb-2 text-3xl font-bold md:text-4xl">
<span className="bg-gradient-to-r from-[hsl(var(--secondary-hsl))] to-[hsl(var(--primary-hsl))] bg-clip-text text-transparent">
OpenTelemetry Collector
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

it looks a bit strange to have double headings, can we keep the gradient one?

image

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Done...I have removed the card itself. This is how it looks like now with just the gradient heading.
image


return (
<>
<div className="border-border/60 bg-card/80 relative overflow-hidden rounded-xl border p-6">
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

can you add a back button to this page?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

This is done as well.

justin212407 and others added 3 commits May 23, 2026 02:28
Signed-off-by: justin212407 <charlesjustin2124@gmail.com>
Signed-off-by: justin212407 <charlesjustin2124@gmail.com>
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.

[Explorer] Collector Home Page

5 participants