Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions website/docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@ const config = {
label: 'Blog',
position: 'left',
},
{
to: '/publications',
Copy link
Collaborator

Choose a reason for hiding this comment

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

how about publication and talks? we have a kubecon talk coming up next month.

Copy link
Member Author

Choose a reason for hiding this comment

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

that could be another individual pages with the publications

Copy link
Collaborator

Choose a reason for hiding this comment

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

sounds good! that works

Copy link
Member Author

Choose a reason for hiding this comment

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

Should we hold for a while for a public paper url?

Copy link
Collaborator

Choose a reason for hiding this comment

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

that'll be great! can you also add the bibtex for citation when available?

Copy link
Member Author

Choose a reason for hiding this comment

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

Sure will do

label: 'Publications',
position: 'left',
},
{
type: 'dropdown',
label: 'Community',
Expand Down
75 changes: 75 additions & 0 deletions website/src/pages/publications.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import React from 'react'
import Layout from '@theme/Layout'
import styles from './publications.module.css'

const publications = [
{
id: 1,
title: 'When to Reason: Semantic Router for vLLM',
authors: 'Chen Wang, Xunzhuo Liu, Yuhan Liu, Yue Zhu, Xiangxi Mo, Junchen Jiang, Huamin Chen',
venue: 'NeurIPS - MLForSys',
year: '2025',
abstract: 'We propose vLLM semantic router integrated with vLLM that selectively applies reasoning only when beneficial, achieving over 10 percentage point accuracy gains while nearly halving latency and token usage',
links: [
{ type: 'paper', url: 'https://mlforsystems.org', label: '📄 Paper' },
],
featured: true,
},
Copy link
Collaborator

Choose a reason for hiding this comment

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

can you add the following publication too?

]

function PublicationCard({ publication }) {
return (
<div className={styles.publicationCard}>
<h3 className={styles.paperTitle}>{publication.title}</h3>
<p className={styles.paperAuthors}>{publication.authors}</p>
<span className={styles.paperVenue}>
{publication.venue}
{' '}
{publication.year}
</span>
<p className={styles.paperAbstract}>{publication.abstract}</p>
<div className={styles.paperLinks}>
{publication.links.map((link, index) => (
<a
key={index}
href={link.url}
className={`${styles.paperLink} ${
link.type === 'paper' ? styles.paperLinkPrimary : styles.paperLinkSecondary
}`}
target="_blank"
rel="noopener noreferrer"
>
{link.label}
</a>
))}
</div>
</div>
)
}

export default function Publications() {
return (
<Layout
title="Publications"
description="Latest research publications and scientific contributions from the vLLM Semantic Router project"
>
<div className={styles.container}>
<header className={styles.header}>
<h1 className={styles.title}>🎓 Publications</h1>
<p className={styles.subtitle}>
Discover community-driven latest research contributions in LLM and intelligent routing systems.
Our work pushes the boundaries of efficient LLM inference.
</p>
</header>

<main>
<div className={styles.publicationsList}>
{publications.map(publication => (
<PublicationCard key={publication.id} publication={publication} />
))}
</div>
</main>
</div>
</Layout>
)
}
227 changes: 227 additions & 0 deletions website/src/pages/publications.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
.container {
max-width: 1400px;
margin: 0 auto;
padding: 2rem;
min-height: 100vh;
}

.header {
text-align: center;
margin-bottom: 4rem;
position: relative;
padding: 3rem 0;
}

.header::before {
content: '';
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 200px;
height: 4px;
background: linear-gradient(90deg, #0969da, #8250df, #58a6ff);
border-radius: 2px;
animation: headerGlow 3s ease-in-out infinite;
}

.title {
font-size: 4rem;
font-weight: 900;
margin-bottom: 1.5rem;
background: linear-gradient(45deg, #0969da, #8250df, #58a6ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
animation: titlePulse 4s ease-in-out infinite;
text-shadow: 0 0 30px rgba(9, 105, 218, 0.3);
}

.subtitle {
font-size: 1.4rem;
color: var(--ifm-color-content-secondary);
max-width: 800px;
margin: 0 auto;
line-height: 1.8;
font-weight: 300;
}

.publicationsList {
display: flex;
flex-direction: column;
gap: 2.5rem;
margin-bottom: 4rem;
}

.publicationCard {
background: rgba(255, 255, 255, 0.95);
border: 1px solid rgba(88, 166, 255, 0.2);
border-radius: 24px;
padding: 2.5rem;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
backdrop-filter: blur(20px);
box-shadow:
0 10px 40px rgba(9, 105, 218, 0.1),
0 0 0 1px rgba(88, 166, 255, 0.05);
position: relative;
overflow: hidden;
}

.publicationCard::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, #0969da, #8250df, #58a6ff);
opacity: 0;
transition: opacity 0.3s ease;
}

.publicationCard:hover {
transform: translateY(-8px) scale(1.02);
box-shadow:
0 20px 60px rgba(9, 105, 218, 0.2),
0 0 0 1px rgba(88, 166, 255, 0.3);
border-color: rgba(88, 166, 255, 0.4);
}

.publicationCard:hover::before {
opacity: 1;
}

.paperTitle {
font-size: 1.5rem;
font-weight: 700;
color: #1f2328;
margin-bottom: 1rem;
line-height: 1.4;
background: linear-gradient(45deg, #0969da, #8250df);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}

.paperAuthors {
font-size: 1rem;
color: #656d76;
margin-bottom: 1rem;
font-style: italic;
}

.paperVenue {
display: inline-block;
background: linear-gradient(45deg, #0969da, #8250df);
color: white;
padding: 0.5rem 1rem;
border-radius: 20px;
font-size: 0.9rem;
font-weight: 600;
margin-bottom: 1.5rem;
box-shadow: 0 4px 12px rgba(9, 105, 218, 0.3);
}

.paperAbstract {
color: #656d76;
line-height: 1.7;
margin-bottom: 2rem;
font-size: 1rem;
}

.paperLinks {
display: flex;
gap: 1rem;
flex-wrap: wrap;
}

.paperLink {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.75rem 1.5rem;
border-radius: 12px;
text-decoration: none;
font-weight: 600;
font-size: 0.9rem;
transition: all 0.3s ease;
border: 2px solid transparent;
}

.paperLinkPrimary {
background: linear-gradient(45deg, #0969da, #8250df);
color: white;
box-shadow: 0 4px 16px rgba(9, 105, 218, 0.3);
}

.paperLinkPrimary:hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(9, 105, 218, 0.4);
color: white;
}

.paperLinkSecondary {
background: rgba(88, 166, 255, 0.1);
color: #0969da;
border-color: rgba(88, 166, 255, 0.3);
}

.paperLinkSecondary:hover {
background: rgba(88, 166, 255, 0.2);
border-color: rgba(88, 166, 255, 0.5);
transform: translateY(-2px);
color: #0969da;
}



/* Animations */
@keyframes headerGlow {
0%, 100% { opacity: 0.7; }
50% { opacity: 1; }
}

@keyframes titlePulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.02); }
}

/* Responsive Design */
@media (max-width: 768px) {
.container {
padding: 1rem;
}

.title {
font-size: 2.5rem;
}

.subtitle {
font-size: 1.2rem;
}

.publicationsList {
gap: 2rem;
}

.publicationCard {
padding: 2rem;
}

.paperLinks {
flex-direction: column;
}
}

/* Dark mode support */

[data-theme='dark'] .publicationCard {
background: rgba(33, 38, 45, 0.95);
border-color: rgba(88, 166, 255, 0.3);
}

[data-theme='dark'] .paperTitle {
color: #f0f6fc;
}


Loading