How internrobotics/ebench-home works
1. This repository is a static project homepage for the EBench paper, not a backend service. The runtime is a React single-page app built with Vite, TypeScript, and Tailwind CSS, and it deploys as static files to GitHub Pages.
2. The app entry is index.html → src/main.tsx → src/App.tsx. App.tsx acts as the page shell and composes the full landing page from section components rather than routing between pages.
3. The page is organized into content sections: Hero, Abstract, Overview, Dimensions, TaskGallery, ResultsSection, Citation, Footer, and Nav. This makes the architecture mostly presentation-driven, with each section owning one slice of the homepage.
4. Most of the paper metadata lives in src/data/content.ts: title, abstract, authors, links, and citation text. This is the authoritative source for the non-visual textual content shown on the page.
5. The benchmark/task definition lives in src/data/tasks.ts. That file defines the 26-task manifest, including names, task groupings, and instructions used by the overview and gallery components.
6. The quantitative results dashboard is data-driven from src/data/ebench.json. src/lib/results.ts provides typed accessors and chart-ready transformations over that JSON, which isolates the charts from the raw schema and keeps visualization logic separate from the data file.
7. The results area is split into dedicated chart components under src/components/results/: TopLineBars, CapabilityRadar, TransferScatter, ClusterExplorer, and TaskHeatmap, with chartkit.tsx supplying shared chart helpers. The README notes these are native Recharts-based visualizations ported from the original results dashboard.
8. The task showcase is asset-heavy and lives in public/videos/. There are 78 MP4 clips total: 26 tasks × 3 camera views (left, right, top). TaskGallery and LoopVideo consume those files to present the task demonstrations.
9. src/lib/asset.ts is an important boundary for deployment correctness: it centralizes base-path handling so links and media work both locally and on GitHub Pages under /EBench-home/ or another configured base URL. src/lib/icons.tsx provides inline icons used across the page.
10. src/components/ui/ contains reusable presentation primitives such as Section, Reveal, LinkButton, and LoopVideo. These are shared building blocks that keep layout/animation/media behavior consistent across the sections.
11. Styling is handled by Tailwind plus src/index.css, which defines the site’s dark “diagnostic console” theme and design tokens. The app is therefore styled as a cohesive single-page product rather than a generic component library.
12. Deployment is fully static and automated. .github/workflows/deploy.yml builds the site and publishes it to GitHub Pages on pushes to main, with the base path controlled by the BASE_PATH environment variable in both the workflow and vite.config.ts.
13. There is no runtime API, database, or server-side processing in this repo. The only “data flow” is from local content/data files and pre-rendered media into React components, then into a static build artifact served by GitHub Pages.
Main entry points: App.tsx App · ResultsSection.tsx ResultsSection · TaskGallery.tsx TaskGallery · chartkit.tsx chartkit
Components 32
Runtime
React/Vite page shell, sections, shared UI, and styling.
- index.html · HTML entrypoint that loads the React app.
index.html - main.tsx · Mounts the React application into the page.
src/main.tsx - App · Composes the one-page landing screen from sections.
src/App.tsx - Hero · Top-of-page title and positioning block.
src/components/Hero.tsx - Abstract · Paper summary section on the homepage.
src/components/Abstract.tsx - Overview · High-level benchmark overview section.
src/components/Overview.tsx - Dimensions · Benchmark dimension breakdown section.
src/components/Dimensions.tsx - TaskGallery · Presents benchmark tasks and embedded demo clips.
src/components/TaskGallery.tsx - ResultsSection · Wraps the benchmark visual analytics area.
src/components/results/ResultsSection.tsx - Citation · Citation and paper reference block.
src/components/Citation.tsx - Footer · Closing page footer and links.
src/components/Footer.tsx - Nav · In-page navigation for the landing page.
src/components/Nav.tsx - Section · Shared section wrapper used across the page.
src/components/ui/Section.tsx - Reveal · Shared reveal/entrance animation wrapper.
src/components/ui/Reveal.tsx - LinkButton · Reusable linked button styling and behavior.
src/components/ui/LinkButton.tsx - LoopVideo · Reusable looping video player for task demos.
src/components/ui/LoopVideo.tsx - TopLineBars · Primary results bar visualization.
src/components/results/TopLineBars.tsx - CapabilityRadar · Capability summary radar visualization.
src/components/results/CapabilityRadar.tsx - TransferScatter · Transfer behavior scatter visualization.
src/components/results/TransferScatter.tsx - ClusterExplorer · Cluster exploration visualization.
src/components/results/ClusterExplorer.tsx - TaskHeatmap · Per-task heatmap visualization.
src/components/results/TaskHeatmap.tsx - chartkit · Shared helpers used by the results charts.
src/components/results/chartkit.tsx - index.css · Tailwind-driven global theme and design tokens.
src/index.css
Content data
Paper metadata, task manifest, benchmark results, and media assets.
- content.ts · Title, abstract, authors, links, and citation text.
src/data/content.ts - tasks.ts · Defines the 26 benchmark tasks, groups, and instructions.
src/data/tasks.ts - ebench.json · Raw quantitative benchmark results used by the dashboard.
src/data/ebench.json - results.ts · Typed accessors and chart-ready derived data for the dashboard.
src/lib/results.ts - asset.ts · Handles local vs GitHub Pages asset and link paths.
src/lib/asset.ts - icons.tsx · Inline icons used across the page.
src/lib/icons.tsx - Task videos · Static MP4 clips for 26 tasks across three camera views.
Delivery
Static build and GitHub Pages deployment.
- deploy.yml · Builds and publishes the site to GitHub Pages.
.github/workflows/deploy.yml - vite.config.ts · Sets the Vite build behavior and base path integration.
vite.config.ts
Connections 38
- index.html → main.tsx: loads · The HTML entrypoint loads the app bootstrap.
- main.tsx → App: mounts · React mounts the top-level page shell.
- App → Hero: renders · The shell composes the hero section.
- App → Abstract: renders · The shell includes the abstract section.
- App → Overview: renders · The shell includes the overview section.
- App → Dimensions: renders · The shell includes the dimensions section.
- App → TaskGallery: renders · The shell includes the task showcase.
- App → ResultsSection: renders · The shell includes the results dashboard.
- App → Citation: renders · The shell includes the citation block.
- App → Footer: renders · The shell closes with the footer.
- App → Nav: renders · Navigation is included in the one-page layout.
- Abstract → content.ts: reads · Textual homepage content comes from the metadata file.
- Overview → content.ts: reads · Overview copy is sourced from paper metadata.
- Dimensions → content.ts: reads · Section text is sourced from paper metadata.
- Citation → content.ts: reads · Citation text is sourced from the metadata file.
- TaskGallery → tasks.ts: reads · Task cards and groupings are driven by the manifest.
- TaskGallery → Task videos: plays · Gallery clips are loaded from the static media bundle.
- TaskGallery → LoopVideo: uses · Gallery uses the looping video primitive.
- TaskGallery → asset.ts: resolves · Task media paths are normalized for deployment.
- ResultsSection → results.ts: transforms · The dashboard consumes typed result adapters.
- ResultsSection → ebench.json: reads · Charts are driven from the raw benchmark JSON.
- ResultsSection → TopLineBars: renders · The section includes the main bar chart.
- ResultsSection → CapabilityRadar: renders · The section includes the capability radar.
- ResultsSection → TransferScatter: renders · The section includes the transfer scatter plot.
- ResultsSection → ClusterExplorer: renders · The section includes the cluster explorer.
- ResultsSection → TaskHeatmap: renders · The section includes the task heatmap.
- TopLineBars → chartkit: uses · Charts share common chart helpers.
- CapabilityRadar → chartkit: uses · Charts share common chart helpers.
- TransferScatter → chartkit: uses · Charts share common chart helpers.
- ClusterExplorer → chartkit: uses · Charts share common chart helpers.
- TaskHeatmap → chartkit: uses · Charts share common chart helpers.
- App → Section: uses · The page shell relies on shared section structure.
- App → Reveal: uses · Sections use shared reveal behavior.
- App → LinkButton: uses · Calls to action use the shared button primitive.
- App → icons.tsx: uses · Icons are shared across the page shell and sections.
- App → index.css: styled by · The app is themed by Tailwind and global CSS.
- deploy.yml → vite.config.ts: builds with · Deployment uses the Vite build configuration.
- deploy.yml → asset.ts: configures · The workflow and app agree on the base path.