Skip to content

feat: Add Collector Home page#447

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

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

Conversation

@justin212407
Copy link
Copy Markdown

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 6654a1a
🔍 Latest deploy log https://app.netlify.com/projects/otel-ecosystem-explorer/deploys/6a076d327f462b00087d66dd
😎 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>
<Route
path="/java-agent/instrumentation"
element={<JavaInstrumentationListPage />}
/>
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.

A handful of Java routes look removed by accident here: /java-agent/instrumentation/:version, /java-agent/instrumentation/:version/:name, /java-agent/configuration, /java-agent/releases (gated by JAVA_RELEASE_COMPARISON), and /java-agent/configuration/builder (gated by JAVA_CONFIG_BUILDER). The PR description only mentions collector routing, so probably collateral from the diff. Worth restoring before merge.

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.

Restored this, as you suggested. Thanks for the lookout this was a major issue that i missed out while working upon the issue.

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
<Route path="/about" element={<AboutPage />} />
<Route path="*" element={<NotFoundPage />} />
</Routes>
</Suspense>
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.

The matching </ErrorBoundary> was dropped here too. The boundary opened above is never closed, which is what's breaking the Netlify build.

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.

Yeah i think i missed out too while resolving the merge conflicts.

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 on lines +79 to +83
return (
<BrowserRouter>
<div className="bg-background flex min-h-screen flex-col">
<Header />
<main className="flex-1 pt-16">
Comment on lines +195 to +206
async function loadCollectorLandingStats(): Promise<CollectorLandingStats> {
const [indexResponse, versionData] = await Promise.all([
fetch("/data/collector/index.json"),
loadVersions(),
]);

if (!indexResponse.ok) {
throw new Error(`Collector index request failed with ${indexResponse.status}.`);
}

const payload: unknown = await indexResponse.json();
const components = readCollectorComponents(payload);
Comment on lines +383 to +384
export function CollectorComponentsPage() {
const { version: urlVersion } = useParams<{ version: string }>();
<CollectorPageInner />
)}
</div>
<CollectorExploreLanding />
}, [components, distributionFilter, searchQuery, typeFilter]);

const handleVersionChange = (val: string) => {
navigate(`/collector/components/${val}`);
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.

3 participants