Skip to content

Commit b9d2c74

Browse files
committed
project: add publication sections
Signed-off-by: bitliu <[email protected]>
1 parent e75fc0f commit b9d2c74

File tree

3 files changed

+306
-0
lines changed

3 files changed

+306
-0
lines changed

website/docusaurus.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,11 @@ const config = {
9393
label: 'Blog',
9494
position: 'left',
9595
},
96+
{
97+
to: '/publications',
98+
label: 'Publications',
99+
position: 'left',
100+
},
96101
{
97102
type: 'dropdown',
98103
label: 'Community',

website/src/pages/publications.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import React from 'react'
2+
import Layout from '@theme/Layout'
3+
import styles from './publications.module.css'
4+
5+
// 论文数据
6+
const publications = [
7+
{
8+
id: 1,
9+
title: "When to Reason: Semantic Router for vLLM",
10+
authors: "Chen Wang, Xunzhuo Liu, Yuhan Liu, Yue Zhu, Xiangxi Mo, Junchen Jiang, Huamin Chen",
11+
venue: "NeurIPS - MLForSys",
12+
year: "2025",
13+
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",
14+
links: [
15+
{ type: "paper", url: "https://mlforsystems.org", label: "📄 Paper" }
16+
],
17+
featured: true
18+
}
19+
]
20+
21+
function PublicationCard({ publication }) {
22+
return (
23+
<div className={styles.publicationCard}>
24+
<h3 className={styles.paperTitle}>{publication.title}</h3>
25+
<p className={styles.paperAuthors}>{publication.authors}</p>
26+
<span className={styles.paperVenue}>{publication.venue} {publication.year}</span>
27+
<p className={styles.paperAbstract}>{publication.abstract}</p>
28+
<div className={styles.paperLinks}>
29+
{publication.links.map((link, index) => (
30+
<a
31+
key={index}
32+
href={link.url}
33+
className={`${styles.paperLink} ${
34+
link.type === 'paper' ? styles.paperLinkPrimary : styles.paperLinkSecondary
35+
}`}
36+
target="_blank"
37+
rel="noopener noreferrer"
38+
>
39+
{link.label}
40+
</a>
41+
))}
42+
</div>
43+
</div>
44+
)
45+
}
46+
47+
48+
49+
export default function Publications() {
50+
return (
51+
<Layout
52+
title="Publications"
53+
description="Latest research publications and scientific contributions from the vLLM Semantic Router project"
54+
>
55+
<div className={styles.container}>
56+
<header className={styles.header}>
57+
<h1 className={styles.title}>🎓 Publications</h1>
58+
<p className={styles.subtitle}>
59+
Discover community-driven latest research contributions in LLM and intelligent routing systems.
60+
Our work pushes the boundaries of efficient LLM inference.
61+
</p>
62+
</header>
63+
64+
<main>
65+
<div className={styles.publicationsList}>
66+
{publications.map(publication => (
67+
<PublicationCard key={publication.id} publication={publication} />
68+
))}
69+
</div>
70+
</main>
71+
</div>
72+
</Layout>
73+
)
74+
}
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
.container {
2+
max-width: 1400px;
3+
margin: 0 auto;
4+
padding: 2rem;
5+
min-height: 100vh;
6+
}
7+
8+
.header {
9+
text-align: center;
10+
margin-bottom: 4rem;
11+
position: relative;
12+
padding: 3rem 0;
13+
}
14+
15+
.header::before {
16+
content: '';
17+
position: absolute;
18+
top: 0;
19+
left: 50%;
20+
transform: translateX(-50%);
21+
width: 200px;
22+
height: 4px;
23+
background: linear-gradient(90deg, #0969da, #8250df, #58a6ff);
24+
border-radius: 2px;
25+
animation: headerGlow 3s ease-in-out infinite;
26+
}
27+
28+
.title {
29+
font-size: 4rem;
30+
font-weight: 900;
31+
margin-bottom: 1.5rem;
32+
background: linear-gradient(45deg, #0969da, #8250df, #58a6ff);
33+
-webkit-background-clip: text;
34+
-webkit-text-fill-color: transparent;
35+
background-clip: text;
36+
animation: titlePulse 4s ease-in-out infinite;
37+
text-shadow: 0 0 30px rgba(9, 105, 218, 0.3);
38+
}
39+
40+
.subtitle {
41+
font-size: 1.4rem;
42+
color: var(--ifm-color-content-secondary);
43+
max-width: 800px;
44+
margin: 0 auto;
45+
line-height: 1.8;
46+
font-weight: 300;
47+
}
48+
49+
.publicationsList {
50+
display: flex;
51+
flex-direction: column;
52+
gap: 2.5rem;
53+
margin-bottom: 4rem;
54+
}
55+
56+
.publicationCard {
57+
background: rgba(255, 255, 255, 0.95);
58+
border: 1px solid rgba(88, 166, 255, 0.2);
59+
border-radius: 24px;
60+
padding: 2.5rem;
61+
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
62+
backdrop-filter: blur(20px);
63+
box-shadow:
64+
0 10px 40px rgba(9, 105, 218, 0.1),
65+
0 0 0 1px rgba(88, 166, 255, 0.05);
66+
position: relative;
67+
overflow: hidden;
68+
}
69+
70+
.publicationCard::before {
71+
content: '';
72+
position: absolute;
73+
top: 0;
74+
left: 0;
75+
right: 0;
76+
height: 4px;
77+
background: linear-gradient(90deg, #0969da, #8250df, #58a6ff);
78+
opacity: 0;
79+
transition: opacity 0.3s ease;
80+
}
81+
82+
.publicationCard:hover {
83+
transform: translateY(-8px) scale(1.02);
84+
box-shadow:
85+
0 20px 60px rgba(9, 105, 218, 0.2),
86+
0 0 0 1px rgba(88, 166, 255, 0.3);
87+
border-color: rgba(88, 166, 255, 0.4);
88+
}
89+
90+
.publicationCard:hover::before {
91+
opacity: 1;
92+
}
93+
94+
.paperTitle {
95+
font-size: 1.5rem;
96+
font-weight: 700;
97+
color: #1f2328;
98+
margin-bottom: 1rem;
99+
line-height: 1.4;
100+
background: linear-gradient(45deg, #0969da, #8250df);
101+
-webkit-background-clip: text;
102+
-webkit-text-fill-color: transparent;
103+
background-clip: text;
104+
}
105+
106+
.paperAuthors {
107+
font-size: 1rem;
108+
color: #656d76;
109+
margin-bottom: 1rem;
110+
font-style: italic;
111+
}
112+
113+
.paperVenue {
114+
display: inline-block;
115+
background: linear-gradient(45deg, #0969da, #8250df);
116+
color: white;
117+
padding: 0.5rem 1rem;
118+
border-radius: 20px;
119+
font-size: 0.9rem;
120+
font-weight: 600;
121+
margin-bottom: 1.5rem;
122+
box-shadow: 0 4px 12px rgba(9, 105, 218, 0.3);
123+
}
124+
125+
.paperAbstract {
126+
color: #656d76;
127+
line-height: 1.7;
128+
margin-bottom: 2rem;
129+
font-size: 1rem;
130+
}
131+
132+
.paperLinks {
133+
display: flex;
134+
gap: 1rem;
135+
flex-wrap: wrap;
136+
}
137+
138+
.paperLink {
139+
display: inline-flex;
140+
align-items: center;
141+
gap: 0.5rem;
142+
padding: 0.75rem 1.5rem;
143+
border-radius: 12px;
144+
text-decoration: none;
145+
font-weight: 600;
146+
font-size: 0.9rem;
147+
transition: all 0.3s ease;
148+
border: 2px solid transparent;
149+
}
150+
151+
.paperLinkPrimary {
152+
background: linear-gradient(45deg, #0969da, #8250df);
153+
color: white;
154+
box-shadow: 0 4px 16px rgba(9, 105, 218, 0.3);
155+
}
156+
157+
.paperLinkPrimary:hover {
158+
transform: translateY(-2px);
159+
box-shadow: 0 8px 24px rgba(9, 105, 218, 0.4);
160+
color: white;
161+
}
162+
163+
.paperLinkSecondary {
164+
background: rgba(88, 166, 255, 0.1);
165+
color: #0969da;
166+
border-color: rgba(88, 166, 255, 0.3);
167+
}
168+
169+
.paperLinkSecondary:hover {
170+
background: rgba(88, 166, 255, 0.2);
171+
border-color: rgba(88, 166, 255, 0.5);
172+
transform: translateY(-2px);
173+
color: #0969da;
174+
}
175+
176+
177+
178+
/* Animations */
179+
@keyframes headerGlow {
180+
0%, 100% { opacity: 0.7; }
181+
50% { opacity: 1; }
182+
}
183+
184+
@keyframes titlePulse {
185+
0%, 100% { transform: scale(1); }
186+
50% { transform: scale(1.02); }
187+
}
188+
189+
/* Responsive Design */
190+
@media (max-width: 768px) {
191+
.container {
192+
padding: 1rem;
193+
}
194+
195+
.title {
196+
font-size: 2.5rem;
197+
}
198+
199+
.subtitle {
200+
font-size: 1.2rem;
201+
}
202+
203+
.publicationsList {
204+
gap: 2rem;
205+
}
206+
207+
.publicationCard {
208+
padding: 2rem;
209+
}
210+
211+
.paperLinks {
212+
flex-direction: column;
213+
}
214+
}
215+
216+
/* Dark mode support */
217+
218+
[data-theme='dark'] .publicationCard {
219+
background: rgba(33, 38, 45, 0.95);
220+
border-color: rgba(88, 166, 255, 0.3);
221+
}
222+
223+
[data-theme='dark'] .paperTitle {
224+
color: #f0f6fc;
225+
}
226+
227+

0 commit comments

Comments
 (0)